保誠-保戶業務員媒合平台
Jack
2022-01-18 2f57dcc8883b62a4e006c634dd945cb3c7ae63c9
pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
@@ -8,6 +8,7 @@
import com.pollex.pam.config.ApplicationProperties;
import com.pollex.pam.service.dto.AppointmentUpdateDTO;
import com.pollex.pam.service.dto.InterviewRecordDTO;
import com.pollex.pam.web.rest.errors.SendEmailFailException;
import com.pollex.pam.web.rest.errors.SendSMSFailException;
import io.jsonwebtoken.lang.Assert;
@@ -19,7 +20,9 @@
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.AppointmentCustomerView;
import com.pollex.pam.domain.InterviewRecord;
import com.pollex.pam.enums.ContactStatusEnum;
import com.pollex.pam.enums.InterviewRecordStatusEnum;
import com.pollex.pam.repository.AppointmentCustomerViewRepository;
import com.pollex.pam.repository.AppointmentRepository;
import com.pollex.pam.security.SecurityUtils;
@@ -69,6 +72,9 @@
    @Autowired
    SpringTemplateEngine springTemplateEngine;
    @Autowired
    InterviewRecordService interviewRecordService;
   public Appointment customerCreateAppointment(AppointmentCreateDTO appointmentCreateDTO) {
      Appointment appointment = appointmentDTOMapper.toAppointment(appointmentCreateDTO);
@@ -99,6 +105,7 @@
        Appointment appointment = appointmentRepository.findById(appointmentId).get();
        appointment.setStatus(DELETED);
        appointment.setLastModifiedDate(Instant.now());
        appointment.setCommunicateStatus(ContactStatusEnum.CANCEL);
        appointmentRepository.save(appointment);
    }
@@ -120,15 +127,22 @@
        AppointmentCustomerViewDTO dto = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointment);
        setSatisfactionScore(dto, appointmentId);
//        setInterviewRecordDTO(dto);
      return dto;
   }
    public List<AppointmentCustomerViewDTO> getConsultantAvailableAppointments(String agentNo) {
    public void setInterviewRecordDTO(AppointmentCustomerViewDTO dto) {
       List<InterviewRecordDTO> interviewRecords = interviewRecordService.findByAppointmentIdAndStatus(dto.getId(), InterviewRecordStatusEnum.AVAILABLE);
       dto.setInterviewRecordDTOs(interviewRecords);
    }
   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());
@@ -177,11 +191,10 @@
        Assert.notNull(appointment, "appointment entity cannot be null");
        log.debug("is need send appointment notify msg? = {}", applicationProperties.isSendNotifyMsg());
        if(applicationProperties.isSendNotifyMsg()) {
            log.debug("sending appointment notify, appointmentId = {}", appointment.getId());
            sendAppointmentNotifyBySMS(appointment);
            sendAppointmentNotifyByHtmlEmail(appointment);
        }
        log.debug("sending appointment notify, appointmentId = {}", appointment.getId());
        sendAppointmentNotifyBySMS(appointment);
        sendAppointmentNotifyByHtmlEmail(appointment);
    }
    private void sendAppointmentNotifyBySMS(Appointment appointment) {
@@ -213,8 +226,7 @@
    }
    private void sendAppointmentNotifyByHtmlEmail(Appointment appointment) {
        String senderEmail = applicationProperties.getEmail().getSenderEmail();
        String consultantEmail = consultantService.findByAgentNo(appointment.getAgentNo()).getEmail();
       String consultantEmail = consultantService.findByAgentNo(appointment.getAgentNo()).getEmail();
        String customerMobile = appointment.getPhone();
        String normalContent;
@@ -235,7 +247,7 @@
                throw new SendEmailFailException("the consultant does not have email!");
            }
            sendMsgService.sendMsgByEmail(senderEmail, consultantEmail, NOTIFY_EMAIL_SUBJECT, content, true);
            sendMsgService.sendMsgByEmail(consultantEmail, NOTIFY_EMAIL_SUBJECT, content, true);
        } catch (SendEmailFailException e) {
            log.warn("send appointment notify by email was fail, appointment Id = {}", appointment.getId(), e);
        }
@@ -244,4 +256,9 @@
    public String getAppointmentDetailUrl(Long appointmentId) {
        return applicationProperties.getFrontEndDomain() + "/myAppointmentList/contactedList?appointmentId=" + appointmentId;
    }
    public Appointment findById(Long id) {
       return appointmentRepository.findById(id)
             .orElseThrow(AppointmentNotFoundException::new);
    }
}