diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceController.java b/src/main/java/com/backend/glowhouse/controller/DeviceController.java new file mode 100644 index 0000000000000000000000000000000000000000..3da090b488508bcd052118b2df84f13c6d11e57a --- /dev/null +++ b/src/main/java/com/backend/glowhouse/controller/DeviceController.java @@ -0,0 +1,33 @@ +package com.backend.glowhouse.controller; + +import com.backend.glowhouse.model.Device; +import com.backend.glowhouse.model.request.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.ApiResponse; +import com.backend.glowhouse.model.response.DeviceIdResponse; +import com.backend.glowhouse.model.response.DeviceRegistrationResponse; +import com.backend.glowhouse.repository.device.DeviceRepository; +import com.backend.glowhouse.repository.user.UserRepository; +import com.backend.glowhouse.service.DeviceService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/device") +public class DeviceController { + @Autowired + private DeviceService deviceService; + + @PostMapping("/registerDevice") + @PreAuthorize("hasRole('USER')") + public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + return deviceService.handleDeviceRegistration(deviceRegistrationRequest); + } + + @GetMapping("/getDeviceIdForUser") + public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException { + return deviceService.getDeviceIdForUser(username); + } +} diff --git a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java index 77ecc5cf152168394ccf62b7c98901ebeda56b16..ccb7459abb582c8cc7d0cb1fdec5af2f54e5497c 100644 --- a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java +++ b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryCustom.java @@ -3,5 +3,5 @@ package com.backend.glowhouse.repository.device; import com.backend.glowhouse.model.Device; public interface DeviceRepositoryCustom { - Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username); + Device registerUserToDevice(String deviceId, String username); } diff --git a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java index 731f4c082e6ec77fefa8480ffc4784856b87a62c..511dbd39b60be2daa2ac066091b176b03e2d6ddb 100644 --- a/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java +++ b/src/main/java/com/backend/glowhouse/repository/device/DeviceRepositoryImpl.java @@ -19,7 +19,7 @@ public class DeviceRepositoryImpl implements DeviceRepositoryCustom { @Override //Method for updating device document when registered //Returns - public Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username) { + public Device registerUserToDevice(String deviceId, String username) { //Query for existing device Query query = new Query(); query.addCriteria(Criteria.where("deviceId").is(deviceId)); diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java b/src/main/java/com/backend/glowhouse/service/DeviceService.java similarity index 50% rename from src/main/java/com/backend/glowhouse/controller/DeviceDataController.java rename to src/main/java/com/backend/glowhouse/service/DeviceService.java index e823daeb4e98a09629efc96f331ee21adbac5007..6160661a4d1cf225455d86252b02f5b308f9690b 100644 --- a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java +++ b/src/main/java/com/backend/glowhouse/service/DeviceService.java @@ -1,56 +1,58 @@ -package com.backend.glowhouse.controller; +package com.backend.glowhouse.service; import com.backend.glowhouse.model.Device; -import com.backend.glowhouse.model.DeviceRegistrationRequest; +import com.backend.glowhouse.model.request.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.ApiResponse; import com.backend.glowhouse.model.response.DeviceIdResponse; import com.backend.glowhouse.model.response.DeviceRegistrationResponse; import com.backend.glowhouse.repository.device.DeviceRepository; -import com.backend.glowhouse.repository.UserRepository; +import com.backend.glowhouse.repository.user.UserRepository; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; +import org.springframework.stereotype.Service; -import java.util.Optional; - -@RestController -@RequestMapping("/api/device") -public class DeviceDataController { +@Service +public class DeviceService { private DeviceRepository deviceRepository; private UserRepository userRepository; ObjectMapper mapper = new ObjectMapper(); @Autowired - public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) { + public DeviceService(DeviceRepository deviceRepository, UserRepository userRepository) { this.deviceRepository = deviceRepository; this.userRepository = userRepository; } - @PostMapping("/registerDevice") - @PreAuthorize("hasRole('USER')") - public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + public String handleDeviceRegistration(DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { String deviceId = deviceRegistrationRequest.getDeviceId(); String username = deviceRegistrationRequest.getUsername(); - Device deviceToRegister = deviceRepository.updateDeviceAssignUserAndSetRegisteredTrue(deviceId, username); + Device deviceToRegister = deviceRepository.registerUserToDevice(deviceId, username); + + if (deviceToRegister == null) { + ApiResponse response = new ApiResponse(false, "The device does not exist"); + + return mapper.writeValueAsString(response); + } - userRepository.updateUserAssignDevice(username, deviceToRegister); + userRepository.registerDeviceToUser(username, deviceToRegister); DeviceRegistrationResponse deviceRegistrationResponse = new DeviceRegistrationResponse(deviceToRegister.getDeviceId()); return mapper.writeValueAsString(deviceRegistrationResponse); } - @GetMapping("/getDeviceIdForUser") - @PreAuthorize("hasRole('USER')") - public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException { + public String getDeviceIdForUser(String username) throws JsonProcessingException { Device device = deviceRepository.findByRegisteredUser(username); DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId()); - return mapper.writeValueAsString(deviceIdResponse); + if (deviceIdResponse.getDeviceId() != null) { + return mapper.writeValueAsString(deviceIdResponse); + } else { + return null; + } } }