From 6fa4bba623713c396432ba8b863846883d6a1906 Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期三, 26 一月 2022 10:52:23 +0800
Subject: [PATCH] Merge branch 'pollex-dev' into sit

---
 pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
new file mode 100644
index 0000000..846287c
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
@@ -0,0 +1,57 @@
+package com.pollex.pam.appointment.process;
+
+import java.time.Instant;
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.pollex.pam.domain.Appointment;
+import com.pollex.pam.domain.AppointmentClosedInfo;
+import com.pollex.pam.enums.ContactStatusEnum;
+import com.pollex.pam.repository.AppointmentClosedInfoRepository;
+import com.pollex.pam.repository.AppointmentRepository;
+import com.pollex.pam.service.AppointmentClosedInfoService;
+import com.pollex.pam.service.AppointmentService;
+import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
+import com.pollex.pam.service.dto.DoneProcessDTO;
+
+@Service
+public class AppointmentProcess{
+	
+	@Autowired
+	List<AppointmentProcessInterface> processList;
+	
+	@Autowired
+	AppointmentService appointmentService;
+	
+	@Autowired
+	AppointmentRepository appointmentRepository;
+	
+	@Autowired
+	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
+	
+	public void process(AbstractAppointmentProcessDTO dto) {
+		
+		processList.stream().forEach(process ->{
+			if(process.getProcessType() == dto.getContactStatus()) {
+				Optional<AppointmentClosedInfo> closedInfoOP = appointmentClosedInfoRepository.findByAppointmentId(dto.getAppointmentId());
+				if(closedInfoOP.isPresent()) {
+					process.editClosedInfo(dto, closedInfoOP.get());
+				}else {
+					process.create(dto);
+				}
+			}
+		});
+		
+		changeAppointmentCommunicateStatus(dto.getAppointmentId(), dto.getContactStatus());
+	}
+
+	private void changeAppointmentCommunicateStatus(Long appointmentId, ContactStatusEnum contactStatus) {
+		Appointment appointment = appointmentService.findById(appointmentId);
+		appointment.setCommunicateStatus(contactStatus);
+		appointmentRepository.save(appointment);
+	}
+	
+}

--
Gitblit v1.8.0