保誠-保戶業務員媒合平台
wayne
2022-01-26 6fa4bba623713c396432ba8b863846883d6a1906
pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
@@ -1,5 +1,6 @@
package com.pollex.pam.appointment.process;
import java.time.Instant;
import java.util.List;
import java.util.Optional;
@@ -8,11 +9,13 @@
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.repository.AppointmentRepository;
import com.pollex.pam.service.AppointmentClosedInfoService;
import com.pollex.pam.service.AppointmentService;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
import com.pollex.pam.service.dto.DoneProcessDTO;
@Service
public class AppointmentProcess{
@@ -31,14 +34,23 @@
   
   public void process(AbstractAppointmentProcessDTO dto) {
      
      AbstractAppointmentProcessDTO appointmentProcessDTO = (AbstractAppointmentProcessDTO)dto;
      processList.stream().forEach(process ->{
         if(process.getProcessType() == appointmentProcessDTO.getContactStatus()) {
            process.doProcess(appointmentProcessDTO);
         if(process.getProcessType() == dto.getContactStatus()) {
            Optional<AppointmentClosedInfo> closedInfoOP = appointmentClosedInfoRepository.findByAppointmentId(dto.getAppointmentId());
            if(closedInfoOP.isPresent()) {
               process.editClosedInfo(dto, closedInfoOP.get());
            }else {
               process.create(dto);
            }
         }
      });
      Appointment appointment = appointmentService.findById(dto.getAppointmentId());
      appointment.setCommunicateStatus(dto.getContactStatus());
      changeAppointmentCommunicateStatus(dto.getAppointmentId(), dto.getContactStatus());
   }
   private void changeAppointmentCommunicateStatus(Long appointmentId, ContactStatusEnum contactStatus) {
      Appointment appointment = appointmentService.findById(appointmentId);
      appointment.setCommunicateStatus(contactStatus);
      appointmentRepository.save(appointment);
   }