Homeautomation/src/main/java/de/ph87/homeautomation/schedule/ScheduleController.java

56 lines
1.6 KiB
Java

package de.ph87.homeautomation.schedule;
import de.ph87.homeautomation.property.PropertyReadService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("schedule")
@RequiredArgsConstructor
public class ScheduleController {
private final ScheduleReadService scheduleReadService;
private final ScheduleWriteService scheduleWriteService;
private final PropertyReadService propertyReadService;
@GetMapping("findAll")
public List<ScheduleDto> findAll() {
return scheduleReadService.findAllDtos();
}
@GetMapping("getById/{id}")
public ScheduleDto getById(@PathVariable final long id) {
return scheduleReadService.getDtoById(id);
}
@GetMapping("create")
public ScheduleDto create() {
return scheduleWriteService.create();
}
@GetMapping("delete/{id}")
public void delete(@PathVariable final long id) {
scheduleWriteService.delete(id);
}
@PostMapping("set/{id}/enabled")
public ScheduleDto setEnabled(@PathVariable final long id, @RequestBody final boolean enabled) {
return scheduleWriteService.set(id, Schedule::setEnabled, enabled);
}
@PostMapping("set/{id}/title")
public ScheduleDto setTitle(@PathVariable final long id, @RequestBody final String title) {
return scheduleWriteService.set(id, Schedule::setTitle, title);
}
@PostMapping("set/{id}/property")
public ScheduleDto setPropertyName(@PathVariable final long id, @RequestBody(required = false) final Long propertyId) {
return scheduleWriteService.set(id, (s, v) -> s.setProperty(v == null ? null : propertyReadService.getById(v)), propertyId);
}
}