保誠-保戶業務員媒合平台
wayne
2022-02-17 34b08e1c461f5e08675fcff95525956d7c4bef11
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
@@ -68,7 +73,7 @@
      personalNotificationRepository.save(entity);
   }
    public void createNotFillSatisfactionSumToCustomer(Long customerId, int notFillSatisfactionSum) {
    public void createNotFillAppointmentSatisfactionNumberToCustomer(Long customerId, int notFillSatisfactionSum) {
        PersonalNotification entity = new PersonalNotification();
        String content = "您有 "+notFillSatisfactionSum+" 筆顧問的滿意度需要填寫";
@@ -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);
      });
   }
}