Merge pull request #158 from Kitzanos/feature/GEPAFINBE-127
GEPAFINBE-127 (Complete Super User Dashboard)
This commit is contained in:
@@ -360,5 +360,6 @@ public class GepafinConstant {
|
||||
public static final String STATUS_CODE_STRING = "statusCode";
|
||||
public static final String GET_STATUS_CODE_STRING = "status";
|
||||
public static final String MESSAGE_STRING = "message";
|
||||
public static final String AMOUNT_ACCEPTED_REQUIRED_WHILE_APPROVING_APPLICATION="amount.accepted.required";
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.MessageFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
@@ -423,6 +424,10 @@ public class ApplicationDao {
|
||||
if(applicationEntity.getProtocol() != null) {
|
||||
responseBean.setProtocolNumber(applicationEntity.getProtocol().getProtocolNumber());
|
||||
}
|
||||
responseBean.setAmountAccepted(applicationEntity.getAmountAccepted());
|
||||
responseBean.setAmountRequested(applicationEntity.getAmountRequested());
|
||||
responseBean.setDateAccepted(applicationEntity.getDateAccepted());
|
||||
responseBean.setDateRejected(applicationEntity.getDateRejected());
|
||||
return responseBean;
|
||||
}
|
||||
|
||||
@@ -442,6 +447,10 @@ public class ApplicationDao {
|
||||
response.setCallId(entity.getCall().getId());
|
||||
response.setCreatedDate(entity.getCreatedDate());
|
||||
response.setUpdatedDate(entity.getUpdatedDate());
|
||||
response.setAmountAccepted(entity.getAmountAccepted());
|
||||
response.setAmountRequested(entity.getAmountRequested());
|
||||
response.setDateAccepted(entity.getDateAccepted());
|
||||
response.setDateRejected(entity.getDateRejected());
|
||||
if(entity.getProtocol() != null) {
|
||||
response.setProtocolNumber(entity.getProtocol().getProtocolNumber());
|
||||
}
|
||||
@@ -480,6 +489,30 @@ public class ApplicationDao {
|
||||
List<Long> newDocumentIds = validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity);
|
||||
validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity);
|
||||
VersionActionTypeEnum actionType = VersionActionTypeEnum.INSERT;
|
||||
List<ContentResponseBean> contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent();
|
||||
|
||||
contentResponseBeans.stream()
|
||||
.filter(content -> "numberinput".equals(content.getName()))
|
||||
.map(ContentResponseBean::getSettings)
|
||||
.flatMap(List::stream)
|
||||
.filter(setting -> "isRequestedAmount".equals(setting.getName()) && Boolean.TRUE.equals(setting.getValue()))
|
||||
.findFirst()
|
||||
.ifPresent(setting -> {
|
||||
Object fieldValue = applicationFormFieldRequestBean.getFieldValue();
|
||||
if(fieldValue!=null) {
|
||||
if (fieldValue instanceof String) {
|
||||
try {
|
||||
BigDecimal amountRequested = new BigDecimal((String) fieldValue);
|
||||
applicationFormEntity.getApplication().setAmountRequested(amountRequested);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new IllegalArgumentException("Field value is not a valid number: " + fieldValue, e);
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Field value is not a String: " + fieldValue);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
ApplicationFormFieldEntity oldApplicationFormFieldData = null;
|
||||
|
||||
@@ -811,6 +844,10 @@ public class ApplicationDao {
|
||||
applicationGetResponseBean.setCallId(applicationEntity.getCall().getId());
|
||||
applicationGetResponseBean.setCallTitle(applicationEntity.getCall().getName());
|
||||
applicationGetResponseBean.setCompanyId(applicationEntity.getCompanyId());
|
||||
applicationGetResponseBean.setAmountAccepted(applicationEntity.getAmountAccepted());
|
||||
applicationGetResponseBean.setAmountRequested(applicationEntity.getAmountRequested());
|
||||
applicationGetResponseBean.setDateAccepted(applicationEntity.getDateAccepted());
|
||||
applicationGetResponseBean.setDateRejected(applicationEntity.getDateRejected());
|
||||
if(applicationEntity.getProtocol() != null) {
|
||||
applicationGetResponseBean.setProtocolNumber(applicationEntity.getProtocol().getProtocolNumber());
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
@@ -582,6 +583,10 @@ public class ApplicationEvaluationDao {
|
||||
CompanyEntity company = companyService.validateCompany(application.getCompanyId());
|
||||
response.setCompanyName(company.getCompanyName());
|
||||
}
|
||||
response.setAmountAccepted(application.getAmountAccepted());
|
||||
response.setAmountRequested(application.getAmountRequested());
|
||||
response.setDateAccepted(application.getDateAccepted());
|
||||
response.setDateRejected(application.getDateRejected());
|
||||
}
|
||||
|
||||
|
||||
@@ -596,7 +601,8 @@ public class ApplicationEvaluationDao {
|
||||
Optional<AssignedApplicationsEntity> assignedApplications =
|
||||
assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId);
|
||||
ApplicationEvaluationEntity oldApplicationEvaluation = null;
|
||||
VersionActionTypeEnum actionType;
|
||||
ApplicationEntity application = applicationService.validateApplication(assignedApplications.get().getApplication().getId());
|
||||
VersionActionTypeEnum actionType = VersionActionTypeEnum.INSERT;
|
||||
if (existingEntityOptional.isPresent()) {
|
||||
entity = existingEntityOptional.get();
|
||||
oldApplicationEvaluation = Utils.getClonedEntityForData(entity);
|
||||
@@ -612,10 +618,15 @@ public class ApplicationEvaluationDao {
|
||||
entity.setIsDeleted(false);
|
||||
setIfUpdated(entity::getNote, entity::setNote, req.getNote());
|
||||
setIfUpdated(entity::getMotivation, entity::setMotivation, req.getMotivation());
|
||||
if(Boolean.TRUE.equals(req.getApplicationStatus().equals(ApplicationStatusForEvaluation.APPROVED)) && (req.getAmountAccepted()==null || req.getAmountAccepted().compareTo(BigDecimal.ZERO) < 0)){
|
||||
throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.AMOUNT_ACCEPTED_REQUIRED_WHILE_APPROVING_APPLICATION));
|
||||
}
|
||||
if (req.getAmountAccepted() != null && req.getAmountAccepted().compareTo(BigDecimal.ZERO) > 0) {
|
||||
application.setAmountAccepted(req.getAmountAccepted());
|
||||
}
|
||||
actionType = VersionActionTypeEnum.UPDATE;
|
||||
} else {
|
||||
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
|
||||
ApplicationEntity application = applicationService.validateApplication(assignedApplicationsEntity.getApplication().getId());
|
||||
entity = convertToEntity(user, req, assignedApplicationId);
|
||||
actionType = VersionActionTypeEnum.INSERT;
|
||||
|
||||
@@ -644,7 +655,6 @@ public class ApplicationEvaluationDao {
|
||||
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(actionType).oldData(oldApplicationEvaluation).newData(entity).build());
|
||||
|
||||
if (status != null) {
|
||||
ApplicationEntity application = applicationService.validateApplication(assignedApplications.get().getApplication().getId());
|
||||
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplications.get();
|
||||
return updateApplicationEvaluationStatus(application, assignedApplicationsEntity, status);
|
||||
} else {
|
||||
@@ -1821,9 +1831,15 @@ public class ApplicationEvaluationDao {
|
||||
|
||||
|
||||
if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.APPROVED.getValue())))) {
|
||||
application.setDateAccepted(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||
application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||
application = applicationRepository.save(application);
|
||||
emailNotificationDao.sendAdmissibilityNotificationEmailForApprovedApplication(application);
|
||||
}
|
||||
if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) {
|
||||
application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||
application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
||||
application = applicationRepository.save(application);
|
||||
emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
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.entities.*;
|
||||
import net.gepafin.tendermanagement.enums.CallStatusEnum;
|
||||
import net.gepafin.tendermanagement.enums.RoleStatusEnum;
|
||||
@@ -11,9 +15,15 @@ import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean;
|
||||
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;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
@@ -45,11 +55,14 @@ public class DashboardDao {
|
||||
@Autowired
|
||||
private ApplicationEvaluationRepository applicationEvaluationRepository;
|
||||
|
||||
@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);
|
||||
return widgetResponseBean;
|
||||
}
|
||||
|
||||
@@ -62,7 +75,8 @@ public class DashboardDao {
|
||||
setSubmittedApplications(widget1, requestedUserEntity);
|
||||
setDraftApplications(widget1, requestedUserEntity);
|
||||
setNumberOfCompanies(widget1, requestedUserEntity);
|
||||
|
||||
setAmountRequested(widget1,requestedUserEntity);
|
||||
setAmountAccepted(widget1,requestedUserEntity);
|
||||
return widget1;
|
||||
}
|
||||
|
||||
@@ -79,6 +93,20 @@ public class DashboardDao {
|
||||
}
|
||||
}
|
||||
|
||||
private void setAmountRequested(Widget1 widget1, UserEntity requestedUserEntity) {
|
||||
BigDecimal amountRequested = applicationRepository.findTotalAmountRequestedOfApplication(requestedUserEntity.getHub().getId());
|
||||
if (amountRequested != null) {
|
||||
widget1.setTotalAmountRequested(amountRequested);
|
||||
}
|
||||
}
|
||||
|
||||
private void setAmountAccepted(Widget1 widget1, UserEntity requestedUserEntity) {
|
||||
BigDecimal amountAccepted = applicationRepository.findTotalAmountAcceptedOfApplication(requestedUserEntity.getHub().getId());
|
||||
if (amountAccepted != null) {
|
||||
widget1.setTotalAmountAccepted(amountAccepted);
|
||||
}
|
||||
}
|
||||
|
||||
private void setRegisteredUsers(Widget1 widget1, UserEntity requestedUserEntity) {
|
||||
Long activeUsers = userRepository.countByStatusAndRoleEntityRoleTypeAndHubId(UserStatusEnum.ACTIVE.getValue(),
|
||||
RoleStatusEnum.ROLE_BENEFICIARY.getValue(), requestedUserEntity.getHub().getId());
|
||||
@@ -142,6 +170,35 @@ 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;
|
||||
// }
|
||||
public ApplicationWidgetResponseBean getApplicationDetails(UserEntity userEntity) {
|
||||
ApplicationWidgetResponseBean applicationWidgetResponseBean = initializeResponseBean();
|
||||
|
||||
|
||||
@@ -309,6 +309,10 @@ public class FlowFormDao {
|
||||
if(applicationEntity.getProtocol() != null) {
|
||||
nextOrPreviousFormResponse.setProtocolNumber(applicationEntity.getProtocol().getProtocolNumber());
|
||||
}
|
||||
nextOrPreviousFormResponse.setAmountAccepted(applicationEntity.getAmountAccepted());
|
||||
nextOrPreviousFormResponse.setAmountRequested(applicationEntity.getAmountRequested());
|
||||
nextOrPreviousFormResponse.setDateAccepted(applicationEntity.getDateAccepted());
|
||||
nextOrPreviousFormResponse.setDateRejected(applicationEntity.getDateRejected());
|
||||
return nextOrPreviousFormResponse;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.entities;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Entity
|
||||
@@ -55,4 +56,16 @@ public class ApplicationEntity extends BaseEntity {
|
||||
@Column(name = "APPOINTMENT_ID")
|
||||
private String appointmentId;
|
||||
|
||||
}
|
||||
@Column(name="AMOUNT_REQUESTED")
|
||||
private BigDecimal amountRequested;
|
||||
|
||||
@Column(name="AMOUNT_ACCEPTED")
|
||||
private BigDecimal amountAccepted;
|
||||
|
||||
@Column(name="DATE_ACCEPTED")
|
||||
private LocalDateTime dateAccepted;
|
||||
|
||||
@Column(name="DATE_REJECTED")
|
||||
private LocalDateTime dateRejected;
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.model.request;
|
||||
import lombok.Data;
|
||||
import net.gepafin.tendermanagement.enums.ApplicationStatusForEvaluation;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class ApplicationEvaluationRequest {
|
||||
@@ -15,4 +16,5 @@ public class ApplicationEvaluationRequest {
|
||||
private String note;
|
||||
private ApplicationStatusForEvaluation applicationStatus;
|
||||
private String motivation;
|
||||
private BigDecimal amountAccepted;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import lombok.Data;
|
||||
import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum;
|
||||
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@@ -38,4 +39,8 @@ public class ApplicationEvaluationResponse {
|
||||
private LocalDateTime assignedAt;
|
||||
private String ndg;
|
||||
private String appointmentId;
|
||||
private BigDecimal amountRequested;
|
||||
private BigDecimal amountAccepted;
|
||||
private LocalDateTime dateAccepted;
|
||||
private LocalDateTime dateRejected;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.model.response;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@@ -26,6 +27,15 @@ public class ApplicationGetResponseBean {
|
||||
|
||||
private Long protocolNumber;
|
||||
|
||||
private BigDecimal amountRequested;
|
||||
|
||||
private BigDecimal amountAccepted;
|
||||
|
||||
private LocalDateTime dateAccepted;
|
||||
|
||||
private LocalDateTime dateRejected;
|
||||
|
||||
|
||||
private List<FormApplicationResponse> form;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.model.response;
|
||||
import lombok.Data;
|
||||
import net.gepafin.tendermanagement.model.response.ApplicationFormFieldResponseBean;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@@ -37,4 +38,12 @@ public class ApplicationResponse{
|
||||
|
||||
private String assignedUserName;
|
||||
|
||||
private BigDecimal amountRequested;
|
||||
|
||||
private BigDecimal amountAccepted;
|
||||
|
||||
private LocalDateTime dateAccepted;
|
||||
|
||||
private LocalDateTime dateRejected;
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.model.response;
|
||||
import lombok.Data;
|
||||
import net.gepafin.tendermanagement.model.BaseBean;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@@ -19,6 +20,14 @@ public class ApplicationResponseBean extends BaseBean {
|
||||
|
||||
private Long protocolNumber;
|
||||
|
||||
private BigDecimal amountRequested;
|
||||
|
||||
private BigDecimal amountAccepted;
|
||||
|
||||
private LocalDateTime dateAccepted;
|
||||
|
||||
private LocalDateTime dateRejected;
|
||||
|
||||
private List<ApplicationFormFieldResponseBean> formFields;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package net.gepafin.tendermanagement.model.response;
|
||||
import lombok.Data;
|
||||
import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class NextOrPreviousFormResponse {
|
||||
|
||||
@@ -26,6 +29,14 @@ public class NextOrPreviousFormResponse {
|
||||
|
||||
private ApplicationStatusTypeEnum applicationStatus;
|
||||
|
||||
private BigDecimal amountRequested;
|
||||
|
||||
private BigDecimal amountAccepted;
|
||||
|
||||
private LocalDateTime dateAccepted;
|
||||
|
||||
private LocalDateTime dateRejected;
|
||||
|
||||
private FormApplicationResponse applicationFormResponse;
|
||||
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
package net.gepafin.tendermanagement.model.response;
|
||||
|
||||
import lombok.Data;
|
||||
import net.gepafin.tendermanagement.entities.UserActionEntity;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class SuperAdminWidgetResponseBean {
|
||||
|
||||
private Widget1 widget1;
|
||||
|
||||
// private List<Object[]> widgetBars;
|
||||
private Map<String, Object> widgetBars;
|
||||
|
||||
}
|
||||
|
||||
@@ -23,4 +23,8 @@ public class Widget1 {
|
||||
|
||||
private BigDecimal totalActiveFinancing;
|
||||
|
||||
private BigDecimal totalAmountRequested;
|
||||
|
||||
private BigDecimal totalAmountAccepted;
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -24,7 +25,6 @@ public interface ApplicationRepository extends JpaRepository<ApplicationEntity,
|
||||
|
||||
public Optional<ApplicationEntity> findByIdAndUserIdAndIsDeletedFalse(Long id,Long userId);
|
||||
|
||||
Optional<ApplicationEntity> findByUserIdAndUserWithCompanyIdAndCallIdAndIsDeletedFalse(Long userId, Long userWithCompanyId, Long callId);
|
||||
|
||||
public Optional<ApplicationEntity> findByIdAndUserIdAndCallIdAndIsDeletedFalse(Long applicationId, Long userId,
|
||||
Long callId);
|
||||
@@ -45,6 +45,23 @@ public interface ApplicationRepository extends JpaRepository<ApplicationEntity,
|
||||
@Query("SELECT a.call.id FROM ApplicationEntity a WHERE a.id = :id AND a.isDeleted = false")
|
||||
Long findCallIdById(@Param("id") Long id);
|
||||
|
||||
@Query("SELECT a.call.name, COUNT(a.id) FROM ApplicationEntity a WHERE a.isDeleted = false AND a.call.hub.id = :hubId GROUP BY a.call.name")
|
||||
List<Object[]> findApplicationsPerCallWithName(@Param("hubId") Long hubId);
|
||||
|
||||
// Count Applications by Status by Hub ID
|
||||
@Query("SELECT a.status, COUNT(a.id) FROM ApplicationEntity a WHERE a.isDeleted = false AND a.call.hub.id = :hubId GROUP BY a.status")
|
||||
List<Object[]> findApplicationsByStatus(@Param("hubId") Long hubId);
|
||||
|
||||
@Query("SELECT SUM(a.amountRequested) " +
|
||||
"FROM ApplicationEntity a " +
|
||||
"WHERE a.hubId = :hubId AND a.status IN ('SUBMIT', 'SOCCORSO', 'APPROVED', 'EVALUATION', 'APPOINTMENT', 'NDG', 'ADMISSIBLE','REJECTED')")
|
||||
BigDecimal findTotalAmountRequestedOfApplication(@Param("hubId") Long hubId);
|
||||
|
||||
@Query("SELECT SUM(a.amountAccepted) " +
|
||||
"FROM ApplicationEntity a " +
|
||||
"WHERE a.hubId = :hubId AND a.status = 'APPROVED'")
|
||||
BigDecimal findTotalAmountAcceptedOfApplication(@Param("hubId") Long hubId);
|
||||
|
||||
@Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.hubId = :hubId AND a.status = 'SUBMIT' AND a.isDeleted = false")
|
||||
public Long countApplicationsByHubId(@Param("hubId") Long hubId);
|
||||
|
||||
|
||||
@@ -47,6 +47,10 @@ public interface CallRepository extends JpaRepository<CallEntity, Long> {
|
||||
BigDecimal findTotalAmountOfPublishedCallsAndHubId(@Param("hubId") Long hubId);
|
||||
@Query("SELECT c FROM CallEntity c WHERE c.id IN :ids AND c.status IN :status")
|
||||
List<CallEntity> findByIdInAndStatusIn(@Param("ids") List<Long> ids, @Param("status") List<String> status);
|
||||
|
||||
@Query("SELECT SUM(c.amount) FROM CallEntity c WHERE c.hub.id = :hubId AND c.status = 'PUBLISH'")
|
||||
BigDecimal findTotalAmountOfPublishedCalls(@Param("hubId") Long hubId);
|
||||
|
||||
List<CallEntity> findByIdIn(@Param("ids") List<Long> ids);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
package net.gepafin.tendermanagement.repositories;
|
||||
|
||||
import net.gepafin.tendermanagement.entities.UserActionEntity;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface UserActionsRepository extends JpaRepository<UserActionEntity, Long> {
|
||||
UserActionEntity findUserActionById(Long id);
|
||||
|
||||
UserActionEntity findUserActionByIdAndIsDeletedFalse(Long id);
|
||||
}
|
||||
|
||||
@@ -2189,4 +2189,12 @@
|
||||
path="db/dump/insert_expiration_scheduler_data_07_01_2025.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="08-01-2025_NK_075410" author="Nisha kashyap">
|
||||
<addColumn tableName="application">
|
||||
<column name="amount_requested" type="numeric"></column>
|
||||
<column name="amount_accepted" type="numeric"></column>
|
||||
<column name="date_accepted" type="TIMESTAMP WITHOUT TIME ZONE"></column>
|
||||
<column name="date_rejected" type="TIMESTAMP WITHOUT TIME ZONE"></column>
|
||||
</addColumn>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
|
||||
@@ -346,3 +346,4 @@ notification.sent.successfully=Notification sent successfully.
|
||||
notification.deleted.successfully=Notification deleted successfully.
|
||||
notification.updated.successfully=Notification updated successfully.
|
||||
user.with.company.not.found = User with company not found for user or company.
|
||||
amount.accepted.required=Amount accepted is required while approving the application.
|
||||
|
||||
@@ -329,7 +329,6 @@ appointment.created.successfully = Appuntamento creato con successo.
|
||||
error.try.again = Errore di chiamata di servizio durante l'esecuzione dell'operazione. Riprovare.
|
||||
document.uploading.is.in.progress = Il documento ? in fase di caricamento.
|
||||
all.document.checked.and.one.checklist.checked=Tutti i documenti devono essere controllati e almeno una checklist deve essere controllata.
|
||||
<<<<<<< HEAD
|
||||
|
||||
#notification messsages
|
||||
notification.already.in.state=La notifica � gi� nello stato fornito.
|
||||
@@ -339,5 +338,4 @@ notification.sent.successfully=Notifica inviata con successo.
|
||||
notification.deleted.successfully=Notifica eliminata con successo.
|
||||
notification.updated.successfully=Notifica aggiornata con successo.
|
||||
user.with.company.not.found = Utente con azienda non trovato per utente o azienda.
|
||||
=======
|
||||
>>>>>>> 832666a4d412c2c81f5c1dfb5b1866aba2c40bdd
|
||||
amount.accepted.required=L'importo accettato è obbligatorio durante l'approvazione della domanda.
|
||||
|
||||
Reference in New Issue
Block a user