Skip to content
Snippets Groups Projects
Commit b82a12e8 authored by Luke O'mahony's avatar Luke O'mahony
Browse files

upd: completed device service integration

parent 5f89438a
No related merge requests found
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);
}
}
...@@ -3,5 +3,5 @@ package com.backend.glowhouse.repository.device; ...@@ -3,5 +3,5 @@ package com.backend.glowhouse.repository.device;
import com.backend.glowhouse.model.Device; import com.backend.glowhouse.model.Device;
public interface DeviceRepositoryCustom { public interface DeviceRepositoryCustom {
Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username); Device registerUserToDevice(String deviceId, String username);
} }
...@@ -19,7 +19,7 @@ public class DeviceRepositoryImpl implements DeviceRepositoryCustom { ...@@ -19,7 +19,7 @@ public class DeviceRepositoryImpl implements DeviceRepositoryCustom {
@Override @Override
//Method for updating device document when registered //Method for updating device document when registered
//Returns //Returns
public Device updateDeviceAssignUserAndSetRegisteredTrue(String deviceId, String username) { public Device registerUserToDevice(String deviceId, String username) {
//Query for existing device //Query for existing device
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("deviceId").is(deviceId)); query.addCriteria(Criteria.where("deviceId").is(deviceId));
......
package com.backend.glowhouse.controller; package com.backend.glowhouse.service;
import com.backend.glowhouse.model.Device; 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.DeviceIdResponse;
import com.backend.glowhouse.model.response.DeviceRegistrationResponse; import com.backend.glowhouse.model.response.DeviceRegistrationResponse;
import com.backend.glowhouse.repository.device.DeviceRepository; 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.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.Optional; @Service
public class DeviceService {
@RestController
@RequestMapping("/api/device")
public class DeviceDataController {
private DeviceRepository deviceRepository; private DeviceRepository deviceRepository;
private UserRepository userRepository; private UserRepository userRepository;
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
@Autowired @Autowired
public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) { public DeviceService(DeviceRepository deviceRepository, UserRepository userRepository) {
this.deviceRepository = deviceRepository; this.deviceRepository = deviceRepository;
this.userRepository = userRepository; this.userRepository = userRepository;
} }
@PostMapping("/registerDevice") public String handleDeviceRegistration(DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException {
@PreAuthorize("hasRole('USER')")
public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException {
String deviceId = deviceRegistrationRequest.getDeviceId(); String deviceId = deviceRegistrationRequest.getDeviceId();
String username = deviceRegistrationRequest.getUsername(); 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()); DeviceRegistrationResponse deviceRegistrationResponse = new DeviceRegistrationResponse(deviceToRegister.getDeviceId());
return mapper.writeValueAsString(deviceRegistrationResponse); return mapper.writeValueAsString(deviceRegistrationResponse);
} }
@GetMapping("/getDeviceIdForUser") public String getDeviceIdForUser(String username) throws JsonProcessingException {
@PreAuthorize("hasRole('USER')")
public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException {
Device device = deviceRepository.findByRegisteredUser(username); Device device = deviceRepository.findByRegisteredUser(username);
DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId()); DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId());
return mapper.writeValueAsString(deviceIdResponse); if (deviceIdResponse.getDeviceId() != null) {
return mapper.writeValueAsString(deviceIdResponse);
} else {
return null;
}
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment