package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.RoleStatusEnum; import net.gepafin.tendermanagement.enums.UserStatusEnum; 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.repositories.ApplicationRepository; import net.gepafin.tendermanagement.repositories.CallRepository; import net.gepafin.tendermanagement.repositories.UserRepository; import net.gepafin.tendermanagement.util.FieldValidator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.List; @Component public class DashboardDao { @Autowired private CallRepository callRepository; @Autowired private UserRepository userRepository; @Autowired private ApplicationRepository applicationRepository; public SuperAdminWidgetResponseBean getDashboardWidget() { SuperAdminWidgetResponseBean widgetResponseBean = new SuperAdminWidgetResponseBean(); widgetResponseBean.setWidget1(createWidget1()); List widgetBars = callRepository.findApplicationsPerCall(); widgetResponseBean.setWidgetBars(widgetBars); return widgetResponseBean; } private Widget1 createWidget1() { Widget1 widget1 = new Widget1(); Long activeCalls = callRepository.countByStatus(CallStatusEnum.PUBLISH.getValue()); if (Boolean.FALSE.equals(FieldValidator.isNullOrZero(activeCalls))) { widget1.setActiveCalls(activeCalls); } Long activeUsers = userRepository.countByStatusAndRoleEntity_RoleType(UserStatusEnum.ACTIVE.getValue(), RoleStatusEnum.ROLE_BENEFICIARY.getValue()); if (Boolean.FALSE.equals(FieldValidator.isNullOrZero(activeUsers))) { widget1.setResgisteredUsers(activeUsers); } BigDecimal totalActiveFinancing = callRepository.findTotalAmountOfPublishedCalls(); widget1.setTotalActiveFinancing(totalActiveFinancing); Long preInvestigationQuestions = callRepository.countByStatus(CallStatusEnum.DRAFT.getValue()); if (Boolean.FALSE.equals(FieldValidator.isNullOrZero(preInvestigationQuestions))) { widget1.setPreInvestigationQuestions(preInvestigationQuestions); } return widget1; } public BeneficiaryWidgetResponseBean getDashboardWidgetForBeneficiary(UserEntity userEntity, CompanyEntity company) { BeneficiaryWidgetResponseBean beneficiaryWidgetResponseBean = BeneficiaryWidgetResponseBean.builder() .numberOfApplications(0L).numberOfCalls(0L).numberOfIntegratedDocuments(0L).build(); Long activeCalls = callRepository.countByStatus(CallStatusEnum.PUBLISH.getValue()); if (activeCalls != null) { beneficiaryWidgetResponseBean.setNumberOfCalls(activeCalls); } Long activeApplication = applicationRepository.countSubmittedApplicationsByUserId(userEntity.getId(), company.getId()); if (activeApplication != null) { beneficiaryWidgetResponseBean.setNumberOfApplications(activeApplication); } return beneficiaryWidgetResponseBean; } }