From f4dd14d80b2a1565fabf835f8e05a8458b873ba8 Mon Sep 17 00:00:00 2001
From: Jack <jack.su@pollex.com.tw>
Date: 星期三, 19 一月 2022 18:58:49 +0800
Subject: [PATCH] [BUG] 預約單結案未修改預約單最後溪改時間(todo : 134359)

---
 pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java |   55 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 36 insertions(+), 19 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 b624ba0..0af06b9 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
+++ b/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) {
@@ -189,11 +202,11 @@
         String consultantMobile = consultantService.findByAgentNo(appointment.getAgentNo()).getPhoneNumber();
 
         try {
-            if(StringUtils.hasText(consultantMobile)) {
-                sendMsgService.sendMsgBySMS(consultantMobile, msg);
+            if(!StringUtils.hasText(consultantMobile)) {
+                throw new SendSMSFailException("the consultant does not have mobile!");
             }
 
-            throw new SendSMSFailException("the consultant does not have mobile!");
+            sendMsgService.sendMsgBySMS(consultantMobile, msg);
         } catch (SendSMSFailException e) {
             log.warn("send appointment notify by sms was fail, appointment Id = {}", appointment.getId(), e);
         }
@@ -202,27 +215,26 @@
     private String getAppointmentNotifyWording(Appointment appointment) {
         String normalContent;
         if(StringUtils.hasText(appointment.getPhone())) {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + appointment.getPhone() + "\n\n";
+            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + appointment.getPhone();
         }
         else {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像�����n\n";
+            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像������";
         }
 
-        String urlContent = "隢��雯��嚗�" + getAppointmentDetailUrl(appointment.getId()) + " ����蒂摰�蝯∟赤隢�����";
+        String urlContent = "嚗���雯��嚗�" + getAppointmentDetailUrl(appointment.getId()) + "����蒂摰�蝯∟赤隢�����";
         return normalContent + urlContent;
     }
 
     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;
 
         if(StringUtils.hasText(customerMobile)) {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + customerMobile + "";
+            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + customerMobile + "嚗�";
         }
         else {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像������";
+            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像�������";
         }
 
         Context context = new Context();
@@ -231,11 +243,11 @@
         String content = springTemplateEngine.process("mail/appointmentNotifyEmail", context);
 
         try {
-            if(StringUtils.hasText(consultantEmail)) {
-                sendMsgService.sendMsgByEmail(senderEmail, consultantEmail, NOTIFY_EMAIL_SUBJECT, content, true);
+            if(!StringUtils.hasText(consultantEmail)) {
+                throw new SendEmailFailException("the consultant does not have email!");
             }
 
-            throw new SendEmailFailException("the consultant does not have email!");
+            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);
+    }
 }

--
Gitblit v1.8.0