Code for dashbaord API

This commit is contained in:
nisha
2025-01-08 20:09:47 +05:30
parent d390165220
commit 609bb7d99a
7 changed files with 123 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
package net.gepafin.tendermanagement.dao;
import net.gepafin.tendermanagement.entities.CompanyEntity;
import net.gepafin.tendermanagement.entities.UserActionEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.entities.UserWithCompanyEntity;
import net.gepafin.tendermanagement.enums.CallStatusEnum;
@@ -9,15 +10,18 @@ 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.CompanyRepository;
import net.gepafin.tendermanagement.repositories.UserRepository;
import net.gepafin.tendermanagement.repositories.*;
import net.gepafin.tendermanagement.service.CompanyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class DashboardDao {
@@ -37,11 +41,15 @@ public class DashboardDao {
@Autowired
private CompanyService companyService;
@Autowired
private UserActionsRepository userActionsRepository;
public SuperAdminWidgetResponseBean getDashboardWidget(UserEntity requestedUserEntity) {
SuperAdminWidgetResponseBean widgetResponseBean = new SuperAdminWidgetResponseBean();
widgetResponseBean.setWidget1(createWidget1(requestedUserEntity));
// List<Object[]> widgetBars = callRepository.findApplicationsPerCall();
// widgetResponseBean.setWidgetBars(widgetBars);
Map<String, Object> widgetBars =getStatistics(requestedUserEntity);
widgetResponseBean.setWidgetBars(widgetBars);
widgetResponseBean.setUserActionWidgetList(getUserAction(requestedUserEntity));
return widgetResponseBean;
}
@@ -54,7 +62,8 @@ public class DashboardDao {
setSubmittedApplications(widget1, requestedUserEntity);
setDraftApplications(widget1, requestedUserEntity);
setNumberOfCompanies(widget1, requestedUserEntity);
setAmountRequested(widget1,requestedUserEntity);
setAmountAccepted(widget1,requestedUserEntity);
return widget1;
}
@@ -71,6 +80,20 @@ public class DashboardDao {
}
}
private void setAmountRequested(Widget1 widget1, UserEntity requestedUserEntity) {
BigDecimal amountRequested = callRepository.findTotalAmountOfPublishedCalls(requestedUserEntity.getHub().getId());
if (amountRequested != null) {
widget1.setAmountRequested(amountRequested);
}
}
private void setAmountAccepted(Widget1 widget1, UserEntity requestedUserEntity) {
BigDecimal amountAccepted = applicationRepository.findTotalApprovedApplicationAmount(requestedUserEntity.getHub().getId());
if (amountAccepted != null) {
widget1.setAmountAccepted(amountAccepted);
}
}
private void setRegisteredUsers(Widget1 widget1, UserEntity requestedUserEntity) {
Long activeUsers = userRepository.countByStatusAndRoleEntityRoleTypeAndHubId(UserStatusEnum.ACTIVE.getValue(),
RoleStatusEnum.ROLE_BENEFICIARY.getValue(), requestedUserEntity.getHub().getId());
@@ -121,4 +144,34 @@ public class DashboardDao {
}
return beneficiaryWidgetResponseBean;
}
public Map<String, Object> getStatistics(UserEntity requestedUser) {
Map<String, Object> stats = new HashMap<>();
// Get applications per call
List<Object[]> applicationsPerCall = applicationRepository.findApplicationsPerCallWithName(requestedUser.getHub().getId());
stats.put("APPLICATION_PER_CALL", applicationsPerCall.stream().map(result -> {
Map<String, Object> callData = new HashMap<>();
callData.put("CALL", result[0]); // Call name
callData.put("APPLICATIONS", result[1]); // Application count
return callData;
}).toList());
// Get applications grouped by status
List<Object[]> applicationsByStatus = applicationRepository.findApplicationsByStatus(requestedUser.getHub().getId());
stats.put("APPLICATION_STATUSES", applicationsByStatus.stream().map(result -> {
Map<String, Object> statusData = new HashMap<>();
statusData.put("STATUS", result[0]); // Application status
statusData.put("COUNT", result[1]); // Count of applications
return statusData;
}).toList());
return stats;
}
public Page<UserActionEntity> getUserAction(UserEntity requestedUserEntity){
Pageable pageable = PageRequest.of(0, 20); // Get the first 20 records
List<String> roles=List.of(RoleStatusEnum.ROLE_PRE_INSTRUCTOR.getValue(),RoleStatusEnum.ROLE_GEPAFIN_OPERATOR.getValue(),RoleStatusEnum.ROLE_INSTRUCTOR_MANAGER.getValue());
Page<UserActionEntity> userActionEntities=userActionsRepository.findActionsByRoleNamesAndHubId(roles,requestedUserEntity.getHub().getId(),pageable);
return userActionEntities;
}
}