From f5831acafe510f9a79f8e2ecf6dee09026d67fc6 Mon Sep 17 00:00:00 2001
From: HelenHuang <LinHuang@pollex.com.tw>
Date: 星期四, 20 一月 2022 16:09:09 +0800
Subject: [PATCH] Merge branch 'Phase3' of https://dev.pollex.com.tw:8443/r/pcalife/PAM into Phase3

---
 pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java |   47 ++++++++++++++++++++++++++++++++++-------------
 1 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
index e65a084..b4d628f 100644
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
@@ -1,31 +1,44 @@
 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 org.springframework.transaction.annotation.Transactional;
 
+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.SatisfactionService;
 import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
 import com.pollex.pam.service.dto.DoneProcessDTO;
 
 @Service
+@Transactional
 public class DoneProcess implements AppointmentProcessInterface{
 	
 	@Autowired
 	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-
+	
+	@Autowired
+	AppointmentClosedInfoService appointmentClosedInfoService;
+	
+	@Autowired
+	SatisfactionService satisfactionService;
+	
+	@Autowired
+	AppointmentService appointmentService;
+	
 	@Override
-	public void doProcess(AbstractAppointmentProcessDTO processDTO) {
-		checkClosedInfo(processDTO.getAppointmentId());
-		DoneProcessDTO doneProcess = (DoneProcessDTO)processDTO;
-		BeanUtils.copyProperties(processDTO, doneProcess);
+	public AppointmentClosedInfo create(AbstractAppointmentProcessDTO processDTO) {
+		DoneProcessDTO doneProcess = toDoneProcessDTO(processDTO);
 		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
 		BeanUtils.copyProperties(doneProcess, closedInfo);
-		appointmentClosedInfoRepository.save(closedInfo);
+		Appointment appointment = appointmentService.findById(processDTO.getAppointmentId());
+		satisfactionService.createSatisfaction(appointment);
+		return appointmentClosedInfoRepository.save(closedInfo);
 	}
 
 	@Override
@@ -33,11 +46,19 @@
 		return ContactStatusEnum.DONE;
 	}
 	
-	private void checkClosedInfo(Long appointmentId) {
-		Optional<AppointmentClosedInfo> closedInfo = appointmentClosedInfoRepository.findByAppointmentId(appointmentId);
-		if(closedInfo.isPresent()) {
-			throw new IllegalArgumentException("appointment closed info exist");
-		}
+	@Override
+	public AppointmentClosedInfo editClosedInfo(
+			AbstractAppointmentProcessDTO abstractDTO
+			, AppointmentClosedInfo closedInfo) {
+		DoneProcessDTO doneProcess =  toDoneProcessDTO(abstractDTO);
+		BeanUtils.copyProperties(doneProcess, closedInfo);
+		return appointmentClosedInfoRepository.save(closedInfo);
+	}
+
+	private DoneProcessDTO toDoneProcessDTO(AbstractAppointmentProcessDTO abstractDTO) {
+		DoneProcessDTO doneProcess = (DoneProcessDTO)abstractDTO;
+		BeanUtils.copyProperties(abstractDTO, doneProcess);
+		return doneProcess;
 	}
 	
 }

--
Gitblit v1.8.0