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/appointment/process/ClosedProcess.java |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
index 8d728c5..2e75575 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
@@ -1,35 +1,70 @@
 package com.pollex.pam.appointment.process;
 
+import java.util.Optional;
+
 import org.springframework.beans.BeanUtils;
 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.service.AppointmentClosedInfoService;
+import com.pollex.pam.service.AppointmentService;
 import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
 import com.pollex.pam.service.dto.ClosedProcessDTO;
 import com.pollex.pam.service.dto.DoneProcessDTO;
+import com.pollex.pam.web.rest.errors.AppointmentClosedInfoNotFoundException;
 
 @Service
 public class ClosedProcess implements AppointmentProcessInterface{
 	
 	@Autowired
 	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-
+	
+	@Autowired
+	AppointmentService appointmentService;
+	
+	@Autowired
+	AppointmentClosedInfoService appointmentClosedInfoService;
+	
 	@Override
-	public void doProcess(AbstractAppointmentProcessDTO processDTO) {
-		ClosedProcessDTO doneProcess = (ClosedProcessDTO)processDTO;
-		BeanUtils.copyProperties(processDTO, doneProcess);
+	public void createProcess(AbstractAppointmentProcessDTO processDTO) {
+		checkClosedInfo(processDTO.getAppointmentId());
+		ClosedProcessDTO closeProcess = toClosedProcessDTO(processDTO);
 		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
-		BeanUtils.copyProperties(doneProcess, closedInfo);
+		BeanUtils.copyProperties(closeProcess, closedInfo);
 		appointmentClosedInfoRepository.save(closedInfo);
+		
+	}
+	
+	private ClosedProcessDTO toClosedProcessDTO(AbstractAppointmentProcessDTO processDTO) {
+		ClosedProcessDTO closeProcess = (ClosedProcessDTO)processDTO;
+		BeanUtils.copyProperties(processDTO, closeProcess);
+		return closeProcess;
+	}
+
+	private void checkClosedInfo(Long appointmentId) {
+		Optional<AppointmentClosedInfo> closedInfo = appointmentClosedInfoRepository.findByAppointmentId(appointmentId);
+		if(closedInfo.isPresent()) {
+			throw new IllegalArgumentException("appointment closed info exist");
+		}
 	}
 
 	@Override
 	public ContactStatusEnum getProcessType() {
 		return ContactStatusEnum.CLOSED;
 	}
+
+	@Override
+	public AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO abstractDTO) {
+		ClosedProcessDTO closeProcess =  toClosedProcessDTO(abstractDTO);
+		AppointmentClosedInfo closedInfo = appointmentClosedInfoService.findByAppointmentId(abstractDTO.getAppointmentId());
+		
+		BeanUtils.copyProperties(closeProcess, closedInfo);
+		return appointmentClosedInfoRepository.save(closedInfo);
+	}
 	
 	
 }

--
Gitblit v1.8.0