From bb9e8aad46c1667625b451b8df458a441bfc792f Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期四, 02 十二月 2021 16:02:12 +0800
Subject: [PATCH] [update]【todo 131433, 131432】預約單更新與刪除API

---
 pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java         |    6 +++
 pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java      |   12 ++++++
 pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java          |   20 +++++++++-
 pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java        |   22 +++++++---
 pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java |    9 ++++
 pamapi/src/main/java/com/pollex/pam/domain/Appointment.java                  |   13 ++++++
 6 files changed, 72 insertions(+), 10 deletions(-)

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 6dda636..882613c 100644
--- a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
+++ b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
@@ -5,6 +5,7 @@
 
 import javax.persistence.*;
 
+import com.pollex.pam.enums.AppointmentStatusEnum;
 import com.pollex.pam.enums.ContactStatusEnum;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -69,6 +70,10 @@
 
     @Column(name = "consultant_read_time")
     private Instant consultantReadTime;
+
+    @Enumerated(value = EnumType.STRING)
+    @Column(name = "status")
+    private AppointmentStatusEnum status;
 
 	public Long getId() {
 		return id;
@@ -197,4 +202,12 @@
     public void setConsultantReadTime(Instant consultantReadTime) {
         this.consultantReadTime = consultantReadTime;
     }
+
+    public AppointmentStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(AppointmentStatusEnum status) {
+        this.status = status;
+    }
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
index 05bdd5d..da38baa 100644
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
+++ b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
@@ -10,6 +10,7 @@
 import javax.persistence.Id;
 import javax.persistence.Table;
 
+import com.pollex.pam.enums.AppointmentStatusEnum;
 import com.pollex.pam.enums.ContactStatusEnum;
 
 @Entity
@@ -73,6 +74,10 @@
 
     @Column(name = "name")
     private String name;
+
+    @Enumerated(value = EnumType.STRING)
+    @Column(name = "status")
+    private AppointmentStatusEnum status;
 
     public Long getId() {
         return id;
@@ -210,4 +215,11 @@
 		this.name = name;
 	}
 
+    public AppointmentStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(AppointmentStatusEnum status) {
+        this.status = status;
+    }
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java
new file mode 100644
index 0000000..55d674c
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java
@@ -0,0 +1,6 @@
+package com.pollex.pam.enums;
+
+public enum AppointmentStatusEnum {
+    AVAILABLE,
+    DELETED
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
index fec6545..0d4c458 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
@@ -3,6 +3,8 @@
 import java.time.Instant;
 import java.util.List;
 
+import com.pollex.pam.enums.AppointmentStatusEnum;
+import com.pollex.pam.service.dto.AppointmentDTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +22,8 @@
 import com.pollex.pam.service.mapper.AppointmentCustomerViewMapper;
 import com.pollex.pam.service.mapper.AppointmentDTOMapper;
 import com.pollex.pam.web.rest.errors.AppointmentNotFoundException;
+
+import static com.pollex.pam.enums.AppointmentStatusEnum.DELETED;
 
 @Service
 @Transactional
@@ -41,7 +45,7 @@
 
 	@Autowired
 	AppointmentCustomerViewRepository appointmentCustomerViewRepository;
-	
+
 	@Autowired
 	SatisfactionService satisfactionService;
 
@@ -50,7 +54,7 @@
 		appointment.setCustomerId(SecurityUtils.getCustomerDBId());
 		appointment.setCommunicateStatus(ContactStatusEnum.RESERVED);
 		appointmentRepository.save(appointment);
-		
+
 	}
 
 	public List<Appointment> findByAgentNo(String agentNo) {
@@ -87,4 +91,16 @@
             log.debug("this appointment was read, read time = {}", appointment.getConsultantReadTime());
         }
     }
+
+    public void updateAppointment(AppointmentDTO appointmentDTO) {
+        Appointment appointment = appointmentDTOMapper.toAppointment(appointmentDTO);
+        appointmentRepository.save(appointment);
+    }
+
+    public void markAppointmentDeleted(Long appointmentId) {
+        Appointment appointment = appointmentRepository.findById(appointmentId).get();
+        appointment.setStatus(DELETED);
+
+        appointmentRepository.save(appointment);
+    }
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java
index 4275e7a..8a1d6de 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java
@@ -1,5 +1,6 @@
 package com.pollex.pam.service.mapper;
 
+import com.pollex.pam.service.dto.AppointmentDTO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -9,10 +10,16 @@
 
 @Service
 public class AppointmentDTOMapper {
-	
+
 	public Appointment toAppointment(AppointmentCreateDTO source) {
 		Appointment target = new Appointment();
 		BeanUtils.copyProperties(source, target);
 		return target;
 	}
+
+    public Appointment toAppointment(AppointmentDTO source) {
+        Appointment target = new Appointment();
+        BeanUtils.copyProperties(source, target);
+        return target;
+    }
 }
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 79f89c9..27957f3 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,13 +1,9 @@
 package com.pollex.pam.web.rest;
 
+import com.pollex.pam.service.dto.AppointmentDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.pollex.pam.service.AppointmentService;
 import com.pollex.pam.service.SatisfactionService;
@@ -20,10 +16,22 @@
 
 	@Autowired
 	AppointmentService appointmentService;
-	
+
 	@Autowired
 	SatisfactionService satisfactionService;
 
+    @PutMapping("")
+    public ResponseEntity<Void> updateAppointment(@RequestBody AppointmentDTO appointment) {
+        appointmentService.updateAppointment(appointment);
+        return ResponseEntity.noContent().build();
+    }
+
+    @DeleteMapping("/{appointmentId}")
+    public ResponseEntity<Void> markAppointmentDeleted(@PathVariable Long appointmentId) {
+        appointmentService.markAppointmentDeleted(appointmentId);
+        return ResponseEntity.noContent().build();
+    }
+
 	@PostMapping("/customer/create")
 	public void clientCreateAppointment(@RequestBody AppointmentCreateDTO appointmentCreateDTO) {
 		appointmentService.customerCreateAppointment(appointmentCreateDTO);

--
Gitblit v1.8.0