package com.pollex.pam.service.mapper; import static java.util.stream.Collectors.toList; import java.util.List; 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.AppointmentClosedInfo; import com.pollex.pam.domain.AppointmentCustomerView; import com.pollex.pam.domain.AppointmentNoticeLog; import com.pollex.pam.repository.AppointmentClosedInfoRepository; import com.pollex.pam.service.AppointmentClosedInfoService; import com.pollex.pam.service.AppointmentNoticeLogService; import com.pollex.pam.service.AppointmentService; import com.pollex.pam.service.dto.AppointmentCustomerViewDTO; @Service public class AppointmentCustomerViewMapper { @Autowired AppointmentService appointmentService; @Autowired AppointmentNoticeLogService appointmentNoticeLogService; @Autowired AppointmentClosedInfoRepository appointmentClosedInfoRepository; @Transactional public AppointmentCustomerViewDTO toAppointmentCustomerViewDTO(AppointmentCustomerView source) { AppointmentCustomerViewDTO target = new AppointmentCustomerViewDTO(); BeanUtils.copyProperties(source, target); target.setAppointmentMemoList(source.getAppointmentMemoList()); appointmentService.setInterviewRecordDTO(target); List noticeLogs = appointmentNoticeLogService.findByAppointmentId(source.getId()); target.setAppointmentNoticeLogs(noticeLogs); Optional appointmentClosedInfoOP = appointmentClosedInfoRepository .findByAppointmentId(source.getId()); if(appointmentClosedInfoOP.isPresent()) { target.setAppointmentClosedInfo(appointmentClosedInfoOP.get()); } appointmentService.setSatisfactionScore(target, source.getId()); return target; } public List toAppointmentCustomerViewDTO( List source) { return source.stream().map(s -> toAppointmentCustomerViewDTO(s)) .collect(toList()); } }