package de.ph87.homeautomation.schedule; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.ZonedDateTime; import java.util.function.BiConsumer; @Slf4j @Service @Transactional @RequiredArgsConstructor public class ScheduleWriteService { private final ScheduleReadService scheduleReadService; private final ScheduleCalculationService scheduleCalculationService; private final ScheduleMapper scheduleMapper; public ScheduleDto set(final long id, final BiConsumer setter, final T value) { final Schedule schedule = scheduleReadService.get(id); setter.accept(schedule, value); scheduleCalculationService.calculateSchedule(schedule, ZonedDateTime.now()); return scheduleMapper.toDto(schedule); } }