package enseirb.myinpulse.service.database; import enseirb.myinpulse.model.Appointment; import enseirb.myinpulse.repository.AppointmentRepository; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.web.server.ResponseStatusException; import java.time.LocalDate; import java.time.LocalTime; import java.util.Optional; @Service public class AppointmentService { private static final Logger logger = LogManager.getLogger(AppointmentService.class); private AppointmentRepository appointmentRepository; @Autowired AppointmentService(AppointmentRepository appointmentRepository) { this.appointmentRepository = appointmentRepository; } public Iterable getallAppointments() { return this.appointmentRepository.findAll(); } public Appointment getAppointmentById(Long id) { Optional appointment = this.appointmentRepository.findById(id); if (appointment.isEmpty()) { logger.error("getAppointmentById : No appointment found with id {}", id); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas"); } return appointment.get(); } public Appointment addNewAppointment(Appointment appointment) { return this.appointmentRepository.save(appointment); } public void deleteAppointmentById(Long id) { this.appointmentRepository.deleteById(id); } public Appointment updateAppointment( Long id, LocalDate appointmentDate, LocalTime appointmentTime, LocalTime appointmentDuration, String appointmentPlace, String appointmentSubject) { Optional appointment = this.appointmentRepository.findById(id); if (appointment.isEmpty()) { logger.error("updateAppointment : No appointment found with id {}", id); throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ce rendez vous n'existe pas"); } if (appointmentDate != null) { appointment.get().setAppointmentDate(appointmentDate); } if (appointmentTime != null) { appointment.get().setAppointmentTime(appointmentTime); } if (appointmentDuration != null) { appointment.get().setAppointmentDuration(appointmentDuration); } if (appointmentPlace != null) { appointment.get().setAppointmentPlace(appointmentPlace); } if (appointmentSubject != null) { appointment.get().setAppointmentSubject(appointmentSubject); } return this.appointmentRepository.save(appointment.get()); } }