package com.iconplus.smartproc.service.approval; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.DrpApproval; import com.iconplus.smartproc.model.entity.DrpApprovalHistory; import com.iconplus.smartproc.model.request.DrpApprovalRequest; import com.iconplus.smartproc.model.request.ListDrpApprovalRequest; import com.iconplus.smartproc.repository.DrpApprovalHistoryRepository; import com.iconplus.smartproc.repository.DrpApprovalRepository; import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.util.Constants; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.sql.Date; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @Service public class PostCreateDrpApprovalService implements BaseService { private final DrpRepository drpRepository; private final DrpApprovalRepository drpApprovalRepository; private final DrpApprovalHistoryRepository drpApprovalHistoryRepository; public PostCreateDrpApprovalService(DrpRepository drpRepository, DrpApprovalRepository drpApprovalRepository, DrpApprovalHistoryRepository drpApprovalHistoryRepository) { this.drpRepository = drpRepository; this.drpApprovalRepository = drpApprovalRepository; this.drpApprovalHistoryRepository = drpApprovalHistoryRepository; } @Override public EmptyResponse execute(ListDrpApprovalRequest input) { var drpOptional = drpRepository.findByIdAndIsDeleteFalse(input.getDrpId()); if (drpOptional.isEmpty()) { throw new BusinessException(Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId())); } List drpApprovalList = new ArrayList<>(); for (DrpApprovalRequest drpApprovalRequest : input.getData()) { DrpApproval drpApproval = DrpApproval.builder() .drpId(input.getDrpId()) .approverUserId(drpApprovalRequest.getApproverUserId()) .level(drpApprovalRequest.getLevel()) .isDelete(false) .build(); drpApprovalList.add(drpApproval); } var approvalList = drpApprovalRepository.saveAll(drpApprovalList); Date dateNow = Date.valueOf(LocalDate.now()); approvalList.forEach(c -> { if (StringUtils.equalsIgnoreCase(c.getLevel(), "VP")) { DrpApprovalHistory drpApprovalHistory = DrpApprovalHistory.builder() .date(dateNow) .drpApprovalId(c.getId()) .status("Dikirim") .isDelete(false) .build(); drpApprovalHistoryRepository.save(drpApprovalHistory); } }); return new EmptyResponse(); } }