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 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); } }