保誠-保戶業務員媒合平台
Tomas
2022-02-08 551d18a095e8fe462e4099fdd5b2578e12934d45
pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
@@ -1,10 +1,9 @@
package com.pollex.pam.appointment.process;
import java.util.Optional;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.AppointmentClosedInfo;
@@ -12,44 +11,40 @@
import com.pollex.pam.repository.AppointmentClosedInfoRepository;
import com.pollex.pam.service.AppointmentClosedInfoService;
import com.pollex.pam.service.AppointmentService;
import com.pollex.pam.service.SatisfactionService;
import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
import com.pollex.pam.service.dto.ClosedProcessDTO;
import com.pollex.pam.service.dto.DoneProcessDTO;
import com.pollex.pam.web.rest.errors.AppointmentClosedInfoNotFoundException;
@Service
@Transactional
public class ClosedProcess implements AppointmentProcessInterface{
   @Autowired
   AppointmentClosedInfoRepository appointmentClosedInfoRepository;
   @Autowired
   AppointmentService appointmentService;
   @Autowired
   AppointmentClosedInfoService appointmentClosedInfoService;
   @Autowired
   SatisfactionService satisfactionService;
   @Override
   public void createProcess(AbstractAppointmentProcessDTO processDTO) {
      checkClosedInfo(processDTO.getAppointmentId());
   public AppointmentClosedInfo create(AbstractAppointmentProcessDTO processDTO) {
      ClosedProcessDTO closeProcess = toClosedProcessDTO(processDTO);
      AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
      BeanUtils.copyProperties(closeProcess, closedInfo);
      appointmentClosedInfoRepository.save(closedInfo);
      Appointment appointment = appointmentService.findById(processDTO.getAppointmentId());
      satisfactionService.createAppointmentSatisfaction(appointment);
      return appointmentClosedInfoRepository.save(closedInfo);
   }
   private ClosedProcessDTO toClosedProcessDTO(AbstractAppointmentProcessDTO processDTO) {
      ClosedProcessDTO closeProcess = (ClosedProcessDTO)processDTO;
      BeanUtils.copyProperties(processDTO, closeProcess);
      return closeProcess;
   }
   private void checkClosedInfo(Long appointmentId) {
      Optional<AppointmentClosedInfo> closedInfo = appointmentClosedInfoRepository.findByAppointmentId(appointmentId);
      if(closedInfo.isPresent()) {
         throw new IllegalArgumentException("appointment closed info exist");
      }
   }
   @Override
@@ -58,13 +53,13 @@
   }
   @Override
   public AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO abstractDTO) {
   public AppointmentClosedInfo editClosedInfo(
         AbstractAppointmentProcessDTO abstractDTO
         , AppointmentClosedInfo closedInfo) {
      ClosedProcessDTO closeProcess =  toClosedProcessDTO(abstractDTO);
      AppointmentClosedInfo closedInfo = appointmentClosedInfoService.findByAppointmentId(abstractDTO.getAppointmentId());
      BeanUtils.copyProperties(closeProcess, closedInfo);
      return appointmentClosedInfoRepository.save(closedInfo);
   }
}