Files
smartproc-be/src/main/java/com/iconplus/smartproc/service/approval/PostCreateDrpApprovalService.java
dirgantarasiahaan dbbde49f59 add
2023-06-03 18:40:21 +07:00

75 lines
3.2 KiB
Java

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<ListDrpApprovalRequest, EmptyResponse> {
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<DrpApproval> 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();
}
}