diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java index 4ba03b1..96ba755 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/controller/MotionSensorController.java @@ -6,6 +6,8 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.dto.GenericDeviceSaveReguest; import ch.usi.inf.sa4.sanmarinoes.smarthut.error.NotFoundException; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensor; import ch.usi.inf.sa4.sanmarinoes.smarthut.models.MotionSensorRepository; +import ch.usi.inf.sa4.sanmarinoes.smarthut.socket.SensorSocketEndpoint; +import java.security.Principal; import java.util.List; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +21,8 @@ public class MotionSensorController { @Autowired private MotionSensorRepository motionSensorService; + @Autowired private SensorSocketEndpoint sensorSocketEndpoint; + @GetMapping public List findAll() { return toList(motionSensorService.findAll()); @@ -38,6 +42,25 @@ public class MotionSensorController { return motionSensorService.save(newMS); } + @PutMapping("/{id}/detect") + public MotionSensor updateDetection( + @PathVariable("id") Long sensorId, + @RequestParam("detected") boolean detected, + final Principal principal) + throws NotFoundException { + + final MotionSensor sensor = + motionSensorService + .findByIdAndUsername(sensorId, principal.getName()) + .orElseThrow(NotFoundException::new); + sensor.setDetected(detected); + final MotionSensor toReturn = motionSensorService.save(sensor); + + sensorSocketEndpoint.broadcast(sensor, motionSensorService.findUser(sensorId)); + + return toReturn; + } + @DeleteMapping("/{id}") public void delete(@PathVariable("id") long id) { motionSensorService.deleteById(id);