From 73d2e2d19016e6c2a1164735b64d32eff1c91979 Mon Sep 17 00:00:00 2001
From: Tomas <tomasysh@gmail.com>
Date: 星期四, 13 一月 2022 09:16:27 +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/ClosedProcess.java               |   35 +++
 pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java                      |   39 ++++
 pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java |   11 +
 pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java       |   28 +++
 pamapi/src/doc/sql/20220112_j.sql                                                        |   24 ++
 pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java                    |   31 +++
 pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java                 |   34 +++
 pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java      |   11 +
 pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java                 |   68 +++++++
 pamapi/src/main/java/com/pollex/pam/domain/Appointment.java                              |   38 +++
 pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java                    |   29 +++
 pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java            |   10 +
 pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java                    |  112 ++++++++++++
 pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java          |   25 ++
 pamapi/src/doc/預約單/結案API.txt                                                             |   30 +++
 15 files changed, 521 insertions(+), 4 deletions(-)

diff --git a/pamapi/src/doc/sql/20220112_j.sql b/pamapi/src/doc/sql/20220112_j.sql
index 3d64d79..504c4da 100644
--- a/pamapi/src/doc/sql/20220112_j.sql
+++ b/pamapi/src/doc/sql/20220112_j.sql
@@ -40,3 +40,27 @@
 	CONSTRAINT interview_record_pkey PRIMARY KEY (id)
 );
 
+-- �憓��蝯���able
+
+-- Drop table
+
+-- DROP TABLE public.appointment_closed_info;
+
+-- Drop table
+
+-- DROP TABLE public.appointment_closed_info;
+
+CREATE TABLE public.appointment_closed_info (
+	id bigserial NOT NULL,
+	policyholder_identity_id varchar NULL,
+	plan_code varchar NULL,
+	policy_entry_date date NULL,
+	remark varchar NULL,
+	closed_reason varchar NULL,
+	closed_other_reason varchar NULL,
+	appointment_id bigserial NOT NULL,
+	CONSTRAINT appointment_closed_info_pkey PRIMARY KEY (id)
+);
+
+
+
diff --git "a/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt" "b/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt"
new file mode 100644
index 0000000..016f7ad
--- /dev/null
+++ "b/pamapi/src/doc/\351\240\220\347\264\204\345\226\256/\347\265\220\346\241\210API.txt"
@@ -0,0 +1,30 @@
+http post : 
+
+http://localhost:8080/api/appointment/close
+
+
+request body :
+
+��漱
+contactStatus: done
+
+{
+    "policyholderIdentityId":"A123456789",
+    "planCode":"ATM",
+    "policyEntryDate":"2022-01-12",
+    "contactStatus":"done",
+    "appointmentId": 385
+}
+
+
+
+���漱
+contactStatus: closed
+
+{
+    "contactStatus":"closed",
+    "closedReason":"other",
+    "closedOtherReason":"敹��末銝鞎�",
+    "appointmentId": 385,
+    "remark":"test remark"
+}
\ No newline at end of file
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..10f2e86
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
@@ -0,0 +1,25 @@
+package com.pollex.pam.appointment.process;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
+
+@Service
+public class AppointmentProcess{
+	
+	@Autowired
+	List<AppointmentProcessInterface> processList;
+	
+	public void process(AbstractAppointmentProcessDTO dto) {
+		AbstractAppointmentProcessDTO appointmentProcessDTO = (AbstractAppointmentProcessDTO)dto;
+		processList.stream().forEach(process ->{
+			if(process.getProcessType() == appointmentProcessDTO.getContactStatus()) {
+				process.doProcess(appointmentProcessDTO);
+			}
+		});
+	}
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
new file mode 100644
index 0000000..140f01f
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
@@ -0,0 +1,11 @@
+package com.pollex.pam.appointment.process;
+
+import com.pollex.pam.enums.ContactStatusEnum;
+import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
+
+public interface AppointmentProcessInterface {
+	
+	void doProcess(AbstractAppointmentProcessDTO dto);
+	ContactStatusEnum getProcessType();
+	
+}
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
new file mode 100644
index 0000000..8d728c5
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
@@ -0,0 +1,35 @@
+package com.pollex.pam.appointment.process;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.pollex.pam.domain.AppointmentClosedInfo;
+import com.pollex.pam.enums.ContactStatusEnum;
+import com.pollex.pam.repository.AppointmentClosedInfoRepository;
+import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
+import com.pollex.pam.service.dto.ClosedProcessDTO;
+import com.pollex.pam.service.dto.DoneProcessDTO;
+
+@Service
+public class ClosedProcess implements AppointmentProcessInterface{
+	
+	@Autowired
+	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
+
+	@Override
+	public void doProcess(AbstractAppointmentProcessDTO processDTO) {
+		ClosedProcessDTO doneProcess = (ClosedProcessDTO)processDTO;
+		BeanUtils.copyProperties(processDTO, doneProcess);
+		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
+		BeanUtils.copyProperties(doneProcess, closedInfo);
+		appointmentClosedInfoRepository.save(closedInfo);
+	}
+
+	@Override
+	public ContactStatusEnum getProcessType() {
+		return ContactStatusEnum.CLOSED;
+	}
+	
+	
+}
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
new file mode 100644
index 0000000..feab05a
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
@@ -0,0 +1,34 @@
+package com.pollex.pam.appointment.process;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.pollex.pam.domain.AppointmentClosedInfo;
+import com.pollex.pam.enums.ContactStatusEnum;
+import com.pollex.pam.repository.AppointmentClosedInfoRepository;
+import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
+import com.pollex.pam.service.dto.DoneProcessDTO;
+
+@Service
+public class DoneProcess implements AppointmentProcessInterface{
+	
+	@Autowired
+	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
+
+	@Override
+	public void doProcess(AbstractAppointmentProcessDTO processDTO) {
+		DoneProcessDTO doneProcess = (DoneProcessDTO)processDTO;
+		BeanUtils.copyProperties(processDTO, doneProcess);
+		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
+		BeanUtils.copyProperties(doneProcess, closedInfo);
+		appointmentClosedInfoRepository.save(closedInfo);
+	}
+
+	@Override
+	public ContactStatusEnum getProcessType() {
+		return ContactStatusEnum.DONE;
+	}
+	
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
index 6dbf168..5b6082b 100644
--- a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
+++ b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
@@ -4,13 +4,26 @@
 import java.time.Instant;
 import java.util.List;
 
-import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import com.pollex.pam.enums.AppointmentStatusEnum;
 import com.pollex.pam.enums.ContactStatusEnum;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 @EntityListeners(AuditingEntityListener.class)
 @Entity
@@ -86,6 +99,15 @@
     @JoinColumn(name = "appointment_id")
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
     private List<AppointmentMemo> appointmentMemoList;
+    
+//    @OneToOne(cascade = CascadeType.REMOVE,fetch=FetchType.EAGER)
+////    @JoinColumn(name = "form_authority_id", referencedColumnName = "id")
+//    @JoinColumn(name = "appointment_id", referencedColumnName = "id")
+//    private AppointmentClosedInfo closedInfo;
+    
+//    @OneToOne(cascade = CascadeType.REMOVE
+//    		, mappedBy = "appointment", fetch=FetchType.LAZY)
+//    private AppointmentClosedInfo closedInfo;
 
 	public Long getId() {
 		return id;
@@ -246,6 +268,14 @@
 	public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
 		this.appointmentMemoList = appointmentMemoList;
 	}
+
+//	public AppointmentClosedInfo getClosedInfo() {
+//		return closedInfo;
+//	}
+//
+//	public void setClosedInfo(AppointmentClosedInfo closedInfo) {
+//		this.closedInfo = closedInfo;
+//	}
     
     
     
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java
new file mode 100644
index 0000000..bc16a7a
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java
@@ -0,0 +1,112 @@
+package com.pollex.pam.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "appointment_closed_info")
+public class AppointmentClosedInfo implements Serializable {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+	
+	@Column(name = "policyholder_identity_id")
+    private String policyholderIdentityId;
+    
+    @Column(name = "plan_code")
+	private String planCode;
+    
+    @Column(name = "policy_entry_date")
+	private Date policyEntryDate;
+    
+    @Column(name = "remark")
+	private String remark;
+    
+    @Column(name = "closed_reason")
+	private String closedReason;
+    
+    @Column(name = "closed_other_reason")
+	private String closedOtherReason;
+    
+    @Column(name = "appointment_id")
+	private Long appointmentId;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getPolicyholderIdentityId() {
+		return policyholderIdentityId;
+	}
+
+	public void setPolicyholderIdentityId(String policyholderIdentityId) {
+		this.policyholderIdentityId = policyholderIdentityId;
+	}
+
+	public String getPlanCode() {
+		return planCode;
+	}
+
+	public void setPlanCode(String planCode) {
+		this.planCode = planCode;
+	}
+
+	public Date getPolicyEntryDate() {
+		return policyEntryDate;
+	}
+
+	public void setPolicyEntryDate(Date policyEntryDate) {
+		this.policyEntryDate = policyEntryDate;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getClosedReason() {
+		return closedReason;
+	}
+
+	public void setClosedReason(String closedReason) {
+		this.closedReason = closedReason;
+	}
+
+	public String getClosedOtherReason() {
+		return closedOtherReason;
+	}
+
+	public void setClosedOtherReason(String closedOtherReason) {
+		this.closedOtherReason = closedOtherReason;
+	}
+
+	public Long getAppointmentId() {
+		return appointmentId;
+	}
+
+	public void setAppointmentId(Long appointmentId) {
+		this.appointmentId = appointmentId;
+	}
+    
+    
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java
new file mode 100644
index 0000000..4b4454a
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java
@@ -0,0 +1,11 @@
+package com.pollex.pam.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import com.pollex.pam.domain.AppointmentClosedInfo;
+
+@Repository
+public interface AppointmentClosedInfoRepository extends JpaRepository<AppointmentClosedInfo, Long>{
+
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java
new file mode 100644
index 0000000..dbed395
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java
@@ -0,0 +1,10 @@
+package com.pollex.pam.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class AppointmentClosedInfoService {
+
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
new file mode 100644
index 0000000..feecdc2
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
@@ -0,0 +1,28 @@
+package com.pollex.pam.service.dto;
+
+import com.pollex.pam.enums.ContactStatusEnum;
+
+public abstract class AbstractAppointmentProcessDTO{
+	
+	private ContactStatusEnum contactStatus;
+	private Long appointmentId;
+
+	public ContactStatusEnum getContactStatus() {
+		return contactStatus;
+	}
+
+	public void setContactStatus(ContactStatusEnum contactStatus) {
+		this.contactStatus = contactStatus;
+	}
+
+	public Long getAppointmentId() {
+		return appointmentId;
+	}
+
+	public void setAppointmentId(Long appointmentId) {
+		this.appointmentId = appointmentId;
+	}
+
+	
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
new file mode 100644
index 0000000..cbcc51f
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
@@ -0,0 +1,68 @@
+package com.pollex.pam.service.dto;
+
+import java.util.Date;
+
+import com.pollex.pam.enums.ContactStatusEnum;
+
+public class AppointmentCloseDTO{
+	
+	private String policyholderIdentityId;
+	private String planCode;
+	private Date policyEntryDate;
+	private String remark;
+	private String closedReason;
+	private String closedOtherReason;
+	private ContactStatusEnum contactStatus;
+	private Long appointmentId;
+	
+	public String getPolicyholderIdentityId() {
+		return policyholderIdentityId;
+	}
+	public void setPolicyholderIdentityId(String policyholderIdentityId) {
+		this.policyholderIdentityId = policyholderIdentityId;
+	}
+	public String getPlanCode() {
+		return planCode;
+	}
+	public void setPlanCode(String planCode) {
+		this.planCode = planCode;
+	}
+	public Date getPolicyEntryDate() {
+		return policyEntryDate;
+	}
+	public void setPolicyEntryDate(Date policyEntryDate) {
+		this.policyEntryDate = policyEntryDate;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getClosedReason() {
+		return closedReason;
+	}
+	public void setClosedReason(String closedReason) {
+		this.closedReason = closedReason;
+	}
+	public String getClosedOtherReason() {
+		return closedOtherReason;
+	}
+	public void setClosedOtherReason(String closedOtherReason) {
+		this.closedOtherReason = closedOtherReason;
+	}
+	public ContactStatusEnum getContactStatus() {
+		return contactStatus;
+	}
+	public void setContactStatus(ContactStatusEnum contactStatus) {
+		this.contactStatus = contactStatus;
+	}
+	public Long getAppointmentId() {
+		return appointmentId;
+	}
+	public void setAppointmentId(Long appointmentId) {
+		this.appointmentId = appointmentId;
+	}
+	
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java
new file mode 100644
index 0000000..9b18da4
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java
@@ -0,0 +1,29 @@
+package com.pollex.pam.service.dto;
+
+public class ClosedProcessDTO extends AbstractAppointmentProcessDTO{
+	
+	private String remark;
+	private String closedReason;
+	private String closedOtherReason;
+	
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	public String getClosedReason() {
+		return closedReason;
+	}
+	public void setClosedReason(String closedReason) {
+		this.closedReason = closedReason;
+	}
+	public String getClosedOtherReason() {
+		return closedOtherReason;
+	}
+	public void setClosedOtherReason(String closedOtherReason) {
+		this.closedOtherReason = closedOtherReason;
+	}
+	
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java
new file mode 100644
index 0000000..2c9881a
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java
@@ -0,0 +1,39 @@
+package com.pollex.pam.service.dto;
+
+import java.util.Date;
+
+public class DoneProcessDTO extends AbstractAppointmentProcessDTO{
+	
+	private String policyholderIdentityId;
+	private String planCode;
+	private Date policyEntryDate;
+	private String remark;
+	
+	public String getPolicyholderIdentityId() {
+		return policyholderIdentityId;
+	}
+	public void setPolicyholderIdentityId(String policyholderIdentityId) {
+		this.policyholderIdentityId = policyholderIdentityId;
+	}
+	public String getPlanCode() {
+		return planCode;
+	}
+	public void setPlanCode(String planCode) {
+		this.planCode = planCode;
+	}
+	public Date getPolicyEntryDate() {
+		return policyEntryDate;
+	}
+	public void setPolicyEntryDate(Date policyEntryDate) {
+		this.policyEntryDate = policyEntryDate;
+	}
+	public String getRemark() {
+		return remark;
+	}
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+	
+	
+	
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
index b65aa75..7a303c6 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
@@ -1,14 +1,22 @@
 package com.pollex.pam.web.rest;
 
+import com.pollex.pam.appointment.process.AppointmentProcess;
 import com.pollex.pam.domain.Appointment;
+import com.pollex.pam.enums.ContactStatusEnum;
 import com.pollex.pam.service.SendMsgService;
 import com.pollex.pam.service.dto.AppointmentUpdateDTO;
+import com.pollex.pam.service.dto.ClosedProcessDTO;
+import com.pollex.pam.service.dto.DoneProcessDTO;
+
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import com.pollex.pam.service.AppointmentService;
 import com.pollex.pam.service.SatisfactionService;
+import com.pollex.pam.service.dto.AppointmentCloseDTO;
 import com.pollex.pam.service.dto.AppointmentCreateDTO;
 import com.pollex.pam.service.dto.AppointmentCustomerViewDTO;
 
@@ -24,6 +32,9 @@
 
     @Autowired
     SendMsgService sendMsgService;
+    
+    @Autowired
+    AppointmentProcess abstractAppointmentProcess;
 
     @PutMapping("")
     public ResponseEntity<Void> updateAppointment(@RequestBody AppointmentUpdateDTO appointment) {
@@ -59,4 +70,24 @@
         appointmentService.recordConsultantReadTime(appointmentId);
         return ResponseEntity.noContent().build();
     }
+	
+	@PostMapping("/close")
+    public ResponseEntity<Void> closeAppointment(@RequestBody AppointmentCloseDTO closeDTO) {
+		
+		if(closeDTO.getContactStatus() == ContactStatusEnum.DONE) {
+			DoneProcessDTO dto = new DoneProcessDTO();
+			BeanUtils.copyProperties(closeDTO, dto);
+			abstractAppointmentProcess.process(dto);
+		}else if(closeDTO.getContactStatus() == ContactStatusEnum.CLOSED){
+			ClosedProcessDTO dto = new ClosedProcessDTO();
+			BeanUtils.copyProperties(closeDTO, dto);
+			abstractAppointmentProcess.process(dto);
+		}
+		
+//		Appointment ap = appointmentService.findById(closeDTO.getAppointmentId());
+//		System.out.println("getClosedInfo().getClosedOtherReason()::"+ap.getClosedInfo().getClosedOtherReason());
+		
+		
+        return ResponseEntity.noContent().build();
+    }
 }

--
Gitblit v1.8.0