package com.pollex.pam.appointment.process; import java.time.Instant; import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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{ @Autowired List processList; @Autowired AppointmentService appointmentService; @Autowired AppointmentRepository appointmentRepository; @Autowired AppointmentClosedInfoRepository appointmentClosedInfoRepository; public void process(AbstractAppointmentProcessDTO dto) { // AbstractAppointmentProcessDTO appointmentProcessDTO = dto; processList.stream().forEach(process ->{ if(process.getProcessType() == dto.getContactStatus()) { process.createProcess(dto); } }); changeAppointmentCommunicateStatus(dto.getAppointmentId(), dto.getContactStatus()); } private void changeAppointmentCommunicateStatus(Long appointmentId, ContactStatusEnum contactStatus) { Appointment appointment = appointmentService.findById(appointmentId); appointment.setCommunicateStatus(contactStatus); appointmentRepository.save(appointment); } public void editClosedInfo(AbstractAppointmentProcessDTO dto) { processList.stream().forEach(process ->{ if(process.getProcessType() == dto.getContactStatus()) { process.editClosedInfo(dto); } }); Appointment appointment = appointmentService.findById(dto.getAppointmentId()); appointment.setCommunicateStatus(dto.getContactStatus()); appointmentRepository.save(appointment); } }