From 4400820b75440188f463f87e0b91564b88b512b4 Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期五, 17 十二月 2021 16:13:36 +0800 Subject: [PATCH] Merge branch '簡訊與信箱' --- pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java | 41 +++++++++++++++++++++++++++++++---------- 1 files changed, 31 insertions(+), 10 deletions(-) diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java index 8108fc9..5b5cb33 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java +++ b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java @@ -3,8 +3,10 @@ import java.time.Instant; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; +import com.pollex.pam.domain.Satisfaction; import com.pollex.pam.service.dto.AppointmentUpdateDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,6 +73,7 @@ appointment.setRequirement(updateAppointmentDTO.getRequirement()); appointment.setHopeContactTime(updateAppointmentDTO.getHopeContactTime()); appointment.setOtherRequirement(updateAppointmentDTO.getOtherRequirement()); + appointment.setLastModifiedDate(Instant.now()); appointmentRepository.save(appointment); } @@ -78,6 +81,7 @@ public void markAppointmentDeleted(Long appointmentId) { Appointment appointment = appointmentRepository.findById(appointmentId).get(); appointment.setStatus(DELETED); + appointment.setLastModifiedDate(Instant.now()); appointmentRepository.save(appointment); } @@ -86,24 +90,48 @@ } public Appointment markAsContacted(Long appointmentId) { - Appointment appointment = appointmentRepository.findById(appointmentId).get(); appointment.setCommunicateStatus(ContactStatusEnum.CONTACTED); appointment.setContactTime(Instant.now()); - return appointmentRepository.save(appointment); + appointment.setLastModifiedDate(Instant.now()); + return appointmentRepository.save(appointment); } public AppointmentCustomerViewDTO getAppointmentDetail(Long appointmentId) { AppointmentCustomerView appointment = appointmentCustomerViewRepository.findById(appointmentId) .orElseThrow(AppointmentNotFoundException::new); - return appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointment); + + AppointmentCustomerViewDTO dto = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointment); + setSatisfactionScore(dto, appointmentId); + return dto; } + + public List<AppointmentCustomerViewDTO> getConsultantAvailableAppointments(String agentNo) { + return appointmentCustomerViewRepository.findByAgentNo(agentNo).stream() + .filter(appointment -> appointment.getStatus() == AVAILABLE) + .map(appointmentCustomerView -> { + AppointmentCustomerViewDTO dto = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointmentCustomerView); + setSatisfactionScore(dto, appointmentCustomerView.getId()); + return dto; + }) + .collect(Collectors.toList()); + } + + public void setSatisfactionScore(AppointmentCustomerViewDTO dto, Long appointmentId) { + satisfactionService.getByAppointmentId(appointmentId).ifPresent(satisfaction -> { + dto.setSatisfactionScore(satisfaction.getScore()); + }); + } public List<AppointmentCustomerView> findAvailableByAgentNoAndCustomerId(String agentNo, Long customerId) { return appointmentCustomerViewRepository.findByAgentNoAndCustomerId(agentNo, customerId) .stream() .filter(appointmentCustomerView -> appointmentCustomerView.getStatus() == AVAILABLE) .collect(Collectors.toList()); + } + + public Optional<Appointment> findLatestAppointmentByAgentNoAndCustomerId(String agentNo, Long customerId) { + return appointmentRepository.findTopByAgentNoAndCustomerIdOrderByAppointmentDateDesc(agentNo, customerId); } public void recordConsultantReadTime(Long appointmentId) { @@ -126,12 +154,5 @@ consultantNotViewAppointments.forEach(appointment -> appointment.setConsultantViewTime(Instant.now())); appointmentRepository.saveAll(consultantNotViewAppointments); - } - - public List<AppointmentCustomerViewDTO> getConsultantAppointments(String agentNo) { - return appointmentCustomerViewRepository.findByAgentNo(agentNo).stream() - .filter(appointment -> appointment.getStatus() != DELETED) - .map(appointmentCustomerViewMapper::toAppointmentCustomerViewDTO) - .collect(Collectors.toList()); } } -- Gitblit v1.8.0