From 49c2a88a89a207e995b685299876473c3858dddc Mon Sep 17 00:00:00 2001
From: Jack <jack.su@pollex.com.tw>
Date: 星期一, 24 一月 2022 16:46:55 +0800
Subject: [PATCH] [ADD] 小鈴鐺通知增加已讀登入者所有通知的API

---
 pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java           |    2 +-
 pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java   |   25 +++++++++++++++++++++++++
 pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java |   17 +++++++----------
 pamapi/src/doc/小鈴鐺通知API/所有小鈴鐺通知設為已讀.txt                                        |    6 ++++++
 4 files changed, 39 insertions(+), 11 deletions(-)

diff --git "a/pamapi/src/doc/\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245API/\346\211\200\346\234\211\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245\350\250\255\347\202\272\345\267\262\350\256\200.txt" "b/pamapi/src/doc/\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245API/\346\211\200\346\234\211\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245\350\250\255\347\202\272\345\267\262\350\256\200.txt"
new file mode 100644
index 0000000..6ac6db5
--- /dev/null
+++ "b/pamapi/src/doc/\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245API/\346\211\200\346\234\211\345\260\217\351\210\264\351\220\272\351\200\232\347\237\245\350\250\255\347\202\272\345\267\262\350\256\200.txt"
@@ -0,0 +1,6 @@
+http post : 
+
+撠�����������閮剖�撌脰�
+
+http://localhost:8080/api/personal_notification/readAllMyNotification
+
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java b/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java
index 8e4a57c..922994b 100644
--- a/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java
+++ b/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java
@@ -51,7 +51,7 @@
 	@Column(name = "created_date", updatable = false)
     private Instant createdDate = Instant.now();
 	
-	@Column(name = "read_date", updatable = false)
+	@Column(name = "read_date")
     private Instant readDate;
 
 	public Long getId() {
diff --git a/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java b/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java
index cad80e9..5a4d09a 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java
@@ -1,10 +1,14 @@
 package com.pollex.pam.service;
 
+import java.time.Instant;
 import java.util.List;
+
+import javax.management.Notification;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 import com.pollex.pam.domain.Appointment;
 import com.pollex.pam.domain.Consultant;
@@ -15,6 +19,7 @@
 import com.pollex.pam.enums.PersonalNotificationRoleEnum;
 import com.pollex.pam.repository.CustomerRepository;
 import com.pollex.pam.repository.PersonalNotificationRepository;
+import com.pollex.pam.security.SecurityUtils;
 import com.pollex.pam.service.dto.AppointmentUpdateDTO;
 
 @Service
@@ -131,4 +136,24 @@
 		personalNotificationRepository.save(entity);
 	}
 
+	public void readAllMyNotification() {
+		if(StringUtils.hasText(SecurityUtils.getAgentNo())) {
+			Long consultantId = consultantService.findByAgentNo(SecurityUtils.getAgentNo()).getId();
+			readAllNotification(PersonalNotificationRoleEnum.CONSULTANT, consultantId);
+		}else if(SecurityUtils.getCustomerDBId()!=null){
+			readAllNotification(PersonalNotificationRoleEnum.CUSTOMER, SecurityUtils.getCustomerDBId());
+		}
+	}
+	
+	public void readAllNotification(PersonalNotificationRoleEnum ownerRole
+			, Long ownerId) {
+		List<PersonalNotification> allNotification = personalNotificationRepository.findAllByOwnerRoleAndOwnerId(ownerRole, ownerId);
+		Instant today = Instant.now();
+		allNotification.stream()
+		.filter(notification ->  notification.getReadDate()==null)
+		.forEach(notification ->{
+			notification.setReadDate(today);
+			personalNotificationRepository.saveAll(allNotification);
+		});
+	}
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
index c00c6db..ee805b5 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
@@ -8,6 +8,9 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.StringUtils;
 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;
 
@@ -45,14 +48,8 @@
 		return new ResponseEntity<>(personalNotificationList, HttpStatus.OK);
 	}
 	
-//	@GetMapping("/create")
-//	public void create() {
-//		PersonalNotification test = new PersonalNotification();
-//		test.setContent("content test");
-//		test.setNotificationType(NotificationTypeEnum.ACTIVITY);
-//		test.setOwnerId(Long.valueOf(11));
-//		test.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT);
-//		test.setTitle("title test");
-//		personalNotificationRepository.save(test);
-//	}
+	@PostMapping("/readAllMyNotification")
+	public void readAll() {
+		personalNotificationService.readAllMyNotification();
+	}
 }

--
Gitblit v1.8.0