From 5506b4a7950ac5cb59e3d966ddda18b17bd39373 Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期一, 15 十一月 2021 11:40:01 +0800
Subject: [PATCH] [update] 我的顧問清單新增最後預約單id

---
 pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java |   32 ++++++++++++++++++++++++++------
 1 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
index 5ad63d7..deb3705 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
@@ -1,21 +1,28 @@
 package com.pollex.pam.service.mapper;
 
+import com.pollex.pam.domain.Appointment;
 import com.pollex.pam.domain.Consultant;
 import com.pollex.pam.domain.CustomFavoriteConsultant;
+import com.pollex.pam.enums.ContactStatusEnum;
+import com.pollex.pam.service.AppointmentService;
 import com.pollex.pam.service.dto.ConsultantDTO;
 import com.pollex.pam.service.dto.ConsultantDetailDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
-import java.time.Instant;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
 public class ConsultantMapper {
 
     private final static Character SPLIT_MASK = ',';
+
+    private final AppointmentService appointmentService;
+
+    public ConsultantMapper(AppointmentService appointmentService) {
+        this.appointmentService = appointmentService;
+    }
 
     public ConsultantDTO toDto(Consultant source) {
         ConsultantDTO consultantDTO = new ConsultantDTO();
@@ -28,6 +35,7 @@
 
         consultantDTO.setContactStatus(null);
         consultantDTO.setUpdateTime(null);
+        consultantDTO.setLatestAppointmentId(null);
 
         return consultantDTO;
     }
@@ -36,9 +44,21 @@
         Consultant consultant = customFavoriteConsultant.getConsultant();
         ConsultantDTO dto = toDto(consultant);
 
-        Instant updateTime = customFavoriteConsultant.getLastModifiedDate();
-        dto.setContactStatus(customFavoriteConsultant.getContactStatus());
-        dto.setUpdateTime(updateTime);
+        final Optional<Appointment> latestAppointmentOptional = appointmentService.findByAgentNoAndCustomerId(consultant.getAgentNo(), customFavoriteConsultant.getCustomerId())
+            .stream()
+            .max(Comparator.comparing(Appointment::getAppointmentDate));
+
+        if(latestAppointmentOptional.isPresent()) {
+            Appointment latestAppointment = latestAppointmentOptional.get();
+            dto.setContactStatus(latestAppointment.getCommunicateStatus());
+            dto.setLatestAppointmentId(latestAppointment.getId());
+            dto.setUpdateTime(latestAppointment.getAppointmentDate());
+        }
+        else {
+            dto.setContactStatus(ContactStatusEnum.PICKED);
+            dto.setLatestAppointmentId(null);
+            dto.setUpdateTime(customFavoriteConsultant.getLastModifiedDate());
+        }
 
         return dto;
     }

--
Gitblit v1.8.0