Done ticket GEPAFINBE-141

This commit is contained in:
Piyush
2025-01-21 14:21:57 +05:30
parent 511e8fbc27
commit e1f1ffd69e
12 changed files with 223 additions and 6 deletions

View File

@@ -990,7 +990,7 @@ public class ApplicationAmendmentRequestDao {
}
setIfUpdated(existingApplicationAmendment::getInternalNote, existingApplicationAmendment::setInternalNote, closeAmendmentRequest.getInternalNote());
setIfUpdated(existingApplicationAmendment::getStatus, existingApplicationAmendment::setStatus, ApplicationAmendmentRequestEnum.CLOSE.getValue());
existingApplicationAmendment.setClosingDate(LocalDateTime.now());
ApplicationAmendmentRequestEntity updatedApplicationAmendment = saveApplicationAmendmentRequestEntity(existingApplicationAmendment, oldApplicationAmendmentEntity,
VersionActionTypeEnum.UPDATE);
ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment,false);

View File

@@ -6,15 +6,14 @@ import net.gepafin.tendermanagement.entities.UserActionEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.entities.UserWithCompanyEntity;
import net.gepafin.tendermanagement.entities.*;
import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum;
import net.gepafin.tendermanagement.enums.CallStatusEnum;
import net.gepafin.tendermanagement.enums.RoleStatusEnum;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.response.ApplicationWidgetResponseBean;
import net.gepafin.tendermanagement.model.response.BeneficiaryWidgetResponseBean;
import net.gepafin.tendermanagement.model.response.Widget1;
import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean;
import net.gepafin.tendermanagement.model.response.*;
import net.gepafin.tendermanagement.repositories.*;
import net.gepafin.tendermanagement.service.CompanyService;
import net.gepafin.tendermanagement.util.Validator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -22,6 +21,8 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.temporal.ChronoUnit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -58,6 +59,13 @@ public class DashboardDao {
@Autowired
private UserActionsRepository userActionsRepository;
@Autowired
private ApplicationAmendmentRequestRepository applicationAmendmentRequestRepository;
@Autowired
private AssignedApplicationsRepository assignedApplicationsRepository;
@Autowired
private Validator validator;
public SuperAdminWidgetResponseBean getDashboardWidget(UserEntity requestedUserEntity) {
SuperAdminWidgetResponseBean widgetResponseBean = new SuperAdminWidgetResponseBean();
@@ -263,6 +271,95 @@ public class DashboardDao {
responseBean.setNumberOfDueApplication(dueApplications);
}
}
private AmendmentWidgetResponseBean initializeAmendmentResponseBean() {
return AmendmentWidgetResponseBean.builder()
.totalAmendments(0L)
.waitingForResponseAmendments(0L)
.responseReceivedAmendments(0L)
.averageResponseDays(BigDecimal.ZERO)
.expiringRequestsIn48Hours(0L)
.expiredAmendments(0L)
.build();
}
public AmendmentWidgetResponseBean getAmendmentDetails(UserEntity userEntity) {
AmendmentWidgetResponseBean amendmentWidgetResponseBean = initializeAmendmentResponseBean();
Long hubId = userEntity.getHub().getId();
List<Long> applicationIds = getApplicationIdsForUserOrHub(userEntity,hubId);
setAmendmentCounts(applicationIds,amendmentWidgetResponseBean, hubId);
calculateExpiringRequestsIn48Hours(applicationIds,amendmentWidgetResponseBean, hubId);
calculateAverageResponseDays(applicationIds,amendmentWidgetResponseBean,hubId);
return amendmentWidgetResponseBean;
}
public List<Long> getApplicationIdsForUserOrHub(UserEntity userEntity, Long hubId) {
if (validator.checkIsPreInstructor()) {
return assignedApplicationsRepository.findApplicationIdsByUserIdAndIsDeletedFalse(userEntity.getId());
} else {
return applicationRepository.findApplicationIdsByHubId(hubId);
}
}
private void setAmendmentCounts(List<Long> applicationIds,AmendmentWidgetResponseBean responseBean, Long hubId) {
Long totalAmendment = applicationAmendmentRequestRepository.countAmendmentsByApplicationIds(applicationIds);
if (totalAmendment != null) {
responseBean.setTotalAmendments(totalAmendment);
}
Long awaitingAmendments = applicationAmendmentRequestRepository.countAmendmentsByApplicationIdsAndStatus(
applicationIds, ApplicationAmendmentRequestEnum.AWAITING.getValue());
if (awaitingAmendments != null) {
responseBean.setWaitingForResponseAmendments(awaitingAmendments);
}
Long responseRecievedAmendments = applicationAmendmentRequestRepository.countAmendmentsByApplicationIdsAndStatus(
applicationIds, ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue());
if (responseRecievedAmendments != null) {
responseBean.setResponseReceivedAmendments(responseRecievedAmendments);
}
Long expiredAmendments = applicationAmendmentRequestRepository.countAmendmentsByApplicationIdsAndStatus(
applicationIds, ApplicationAmendmentRequestEnum.EXPIRED.getValue());
if (expiredAmendments != null) {
responseBean.setExpiredAmendments(expiredAmendments);
}
}
private void calculateExpiringRequestsIn48Hours(List<Long> applicationIds ,AmendmentWidgetResponseBean responseBean, Long hubId) {
// Define the statuses to filter
List<String> statuses = List.of(
ApplicationAmendmentRequestEnum.AWAITING.getValue(),
ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue()
);
LocalDateTime twoDaysLater = LocalDateTime.now().plusDays(2);
Long expiringRequestsIn48Hours = applicationAmendmentRequestRepository.countExpiringRequestsIn48Hours(
applicationIds,
statuses,
LocalDateTime.now(),
twoDaysLater
);
if (expiringRequestsIn48Hours != null) {
responseBean.setExpiringRequestsIn48Hours(expiringRequestsIn48Hours);
}
}
private void calculateAverageResponseDays(List<Long> applicationIds ,AmendmentWidgetResponseBean responseBean, Long hubId) {
if (!applicationIds.isEmpty()) {
BigDecimal averageResponseDays = applicationAmendmentRequestRepository
.findAverageResponseDaysByApplicationIdsAndStatus(
applicationIds,
ApplicationAmendmentRequestEnum.CLOSE.getValue()
);
responseBean.setAverageResponseDays(averageResponseDays);
} else {
responseBean.setAverageResponseDays(BigDecimal.ZERO);
}
}
}