76 lines
3.4 KiB
Java
76 lines
3.4 KiB
Java
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<Object[]> 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;
|
|
}
|
|
}
|