This commit is contained in:
dirgantarasiahaan
2023-06-02 12:01:30 +07:00
parent 6203b9d8bf
commit f842852813
21 changed files with 421 additions and 105 deletions

View File

@@ -0,0 +1,69 @@
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.request.DrpApprovalRequest;
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;
@Service
public class PostDrpApprovalExecutionService implements BaseService<DrpApprovalRequest, EmptyResponse> {
private final DrpApprovalRepository drpApprovalRepository;
private final DrpRepository drpRepository;
public PostDrpApprovalExecutionService(DrpApprovalRepository drpApprovalRepository,
DrpRepository drpRepository) {
this.drpApprovalRepository = drpApprovalRepository;
this.drpRepository = drpRepository;
}
@Override
public EmptyResponse execute(DrpApprovalRequest input) {
var drpApproval = drpApprovalRepository.findByDrpIdAndApproverUserIdAndIsDeleteFalse(input.getDrpId(), input.getUserId())
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId())));
var drp = drpRepository.findByIdAndIsDeleteFalse(input.getDrpId())
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP", input.getDrpId())));
Date dateNow = Date.valueOf(LocalDate.now());
if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "VP")) {
drpApproval.setIsApprove(input.getIsApprove());
drp.setVpApproveDate(dateNow);
drp.setApproveStatus(Constants.STATUS_APPROVAL_VP);
} else if (StringUtils.equalsIgnoreCase(drpApproval.getLevel(), "DIREKTUR")) {
drpApproval.setIsApprove(input.getIsApprove());
drp.setDirekturApproveDate(dateNow);
drp.setApproveStatus(Constants.STATUS_APPROVAL_DIRUT);
} else {
var listKomiteApproval = drpApprovalRepository.getListKomiteApproval(input.getDrpId());
if (listKomiteApproval.size() == 1) {
drp.setApproveStatus(Constants.STATUS_REKOMENDASI_KOMITE);
}
drpApproval.setIsApprove(input.getIsApprove());
drp.setKomiteApproveDate(dateNow);
}
drpApprovalRepository.save(drpApproval);
drpRepository.save(drp);
return new EmptyResponse();
}
}