diff --git a/src/main/java/nl/veenm/paypoint/domain/dto/AppointmentDTO.java b/src/main/java/nl/veenm/paypoint/domain/dto/AppointmentDTO.java new file mode 100644 index 0000000..0e40bcb --- /dev/null +++ b/src/main/java/nl/veenm/paypoint/domain/dto/AppointmentDTO.java @@ -0,0 +1,107 @@ +package nl.veenm.paypoint.domain.dto; + +import nl.veenm.paypoint.domain.Customer; + +import java.time.LocalDateTime; + +public class AppointmentDTO { + private Long id; + private String title; + private String description; + private LocalDateTime startDate; + private int startHour; + private int startMinute; + private int endHour; + private int endMinute; + private int durationInMinutes; + private Customer customer; + private CompanyDTO company; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public LocalDateTime getStartDate() { + return startDate; + } + + public void setStartDate(LocalDateTime startDate) { + this.startDate = startDate; + } + + public int getStartHour() { + return startHour; + } + + public void setStartHour(int startHour) { + this.startHour = startHour; + } + + public int getStartMinute() { + return startMinute; + } + + public void setStartMinute(int startMinute) { + this.startMinute = startMinute; + } + + public int getEndHour() { + return endHour; + } + + public void setEndHour(int endHour) { + this.endHour = endHour; + } + + public int getEndMinute() { + return endMinute; + } + + public void setEndMinute(int endMinute) { + this.endMinute = endMinute; + } + + public int getDurationInMinutes() { + return durationInMinutes; + } + + public void setDurationInMinutes(int durationInMinutes) { + this.durationInMinutes = durationInMinutes; + } + + public Customer getCustomer() { + return customer; + } + + public void setCustomer(Customer customer) { + this.customer = customer; + } + + public CompanyDTO getCompany() { + return company; + } + + public void setCompany(CompanyDTO company) { + this.company = company; + } +} diff --git a/src/main/java/nl/veenm/paypoint/domain/mapper/AppointmentMapper.java b/src/main/java/nl/veenm/paypoint/domain/mapper/AppointmentMapper.java new file mode 100644 index 0000000..9e6d67d --- /dev/null +++ b/src/main/java/nl/veenm/paypoint/domain/mapper/AppointmentMapper.java @@ -0,0 +1,28 @@ +package nl.veenm.paypoint.domain.mapper; + +import nl.veenm.paypoint.domain.Appointment; +import nl.veenm.paypoint.domain.dto.AppointmentDTO; + +public class AppointmentMapper { + + public static AppointmentDTO toDto(Appointment appointment) { + if (appointment == null) return null; + + AppointmentDTO dto = new AppointmentDTO(); + dto.setId(appointment.getId()); + dto.setTitle(appointment.getTitle()); + dto.setDescription(appointment.getDescription()); + dto.setStartDate(appointment.getStartDate()); + dto.setStartHour(appointment.getStartHour()); + dto.setStartMinute(appointment.getStartMinute()); + dto.setEndHour(appointment.getEndHour()); + dto.setEndMinute(appointment.getEndMinute()); + dto.setDurationInMinutes(appointment.getDurationInMinutes()); + dto.setCustomer(appointment.getCustomer()); + dto.setCompany(CompanyMapper.toDto(appointment.getCompany())); + + return dto; + } + +} + diff --git a/src/main/java/nl/veenm/paypoint/resource/AppointmentResource.java b/src/main/java/nl/veenm/paypoint/resource/AppointmentResource.java index edaadbe..c51dcf8 100644 --- a/src/main/java/nl/veenm/paypoint/resource/AppointmentResource.java +++ b/src/main/java/nl/veenm/paypoint/resource/AppointmentResource.java @@ -6,6 +6,7 @@ import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import nl.veenm.paypoint.domain.Appointment; +import nl.veenm.paypoint.domain.dto.AppointmentDTO; import nl.veenm.paypoint.service.AppointmentService; import org.eclipse.microprofile.jwt.JsonWebToken; @@ -30,7 +31,7 @@ public class AppointmentResource { @GET @Produces(MediaType.APPLICATION_JSON) @Path("/date") - public List getAppointmentsByDate(@QueryParam("start") String start) { + public List getAppointmentsByDate(@QueryParam("start") String start) { System.out.println("getting appointments from " + start); String user = jwt.getClaim("username"); System.out.println("user " + user); @@ -49,7 +50,7 @@ public class AppointmentResource { @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{id}") - public Appointment getAppointmentById(@PathParam("id") Long id) { + public AppointmentDTO getAppointmentById(@PathParam("id") Long id) { return appointmentService.getAppointment(id); } @@ -70,7 +71,7 @@ public class AppointmentResource { @PUT @Consumes(MediaType.APPLICATION_JSON) - public Response updateAppointment(Appointment appointment) { + public Response updateAppointment(AppointmentDTO appointment) { return Response.ok(appointmentService.update(appointment)).build(); } } diff --git a/src/main/java/nl/veenm/paypoint/service/AppointmentService.java b/src/main/java/nl/veenm/paypoint/service/AppointmentService.java index 00106b0..aca3f13 100644 --- a/src/main/java/nl/veenm/paypoint/service/AppointmentService.java +++ b/src/main/java/nl/veenm/paypoint/service/AppointmentService.java @@ -8,9 +8,11 @@ import nl.veenm.paypoint.domain.AppUser; import nl.veenm.paypoint.domain.Appointment; import nl.veenm.paypoint.domain.Company; import nl.veenm.paypoint.domain.dto.AppUserDTO; +import nl.veenm.paypoint.domain.dto.AppointmentDTO; import nl.veenm.paypoint.domain.dto.CompanyDTO; import nl.veenm.paypoint.domain.dto.UserCompanyDTO; import nl.veenm.paypoint.domain.mapper.AppUserMapper; +import nl.veenm.paypoint.domain.mapper.AppointmentMapper; import nl.veenm.paypoint.repository.AppointmentRepository; import nl.veenm.paypoint.repository.CompanyRepository; import nl.veenm.paypoint.repository.UserRepository; @@ -45,17 +47,17 @@ public class AppointmentService { } @Transactional - public Appointment add(Appointment appointment, Long companyId, String username) { + public AppointmentDTO add(Appointment appointment, Long companyId, String username) { Company company = companyRepository.findById(companyId); AppUser user = userRepository.findByUsername(username); appointment.setCompany(company); appointmentRepository.persist(appointment); emailService.stuurBevestiging(appointment, user); - return appointment; + return AppointmentMapper.toDto(appointment); } @Transactional - public List getAppointmentsByDate(String start, String username) { + public List getAppointmentsByDate(String start, String username) { LocalDate date = LocalDate.parse(start); AppUser user = userRepository.findByUsername(username); System.out.println("user " + user); @@ -69,8 +71,7 @@ public class AppointmentService { LocalDateTime endOfDay = date.atTime(23, 59, 59); List appointmentsForCompanies = appointmentRepository.findAppointmentsForCompanies(companies, startOfDay, endOfDay); - System.out.println(appointmentsForCompanies); - return appointmentsForCompanies; + return appointmentsForCompanies.stream().map(AppointmentMapper::toDto).toList(); } @Transactional @@ -80,7 +81,7 @@ public class AppointmentService { } @Transactional - public Appointment update(Appointment appointment) { + public AppointmentDTO update(AppointmentDTO appointment) { Appointment appointmentToUpdate = appointmentRepository.findById(appointment.getId()); appointmentToUpdate.setTitle(appointment.getTitle()); appointmentToUpdate.setStartDate(appointment.getStartDate()); @@ -93,12 +94,13 @@ public class AppointmentService { appointmentToUpdate.setDurationInMinutes(appointment.getDurationInMinutes()); appointmentRepository.persist(appointmentToUpdate); emailService.stuurBewerking(appointmentToUpdate); - return appointmentToUpdate; + return AppointmentMapper.toDto(appointmentToUpdate); } @Transactional - public Appointment getAppointment(Long id) { - return appointmentRepository.findById(id); + public AppointmentDTO getAppointment(Long id) { + Appointment byId = appointmentRepository.findById(id); + return AppointmentMapper.toDto(byId); } @Transactional