From 73715b4edfc6c2badc0d03622952770846a7af12 Mon Sep 17 00:00:00 2001 From: nisha Date: Tue, 28 Jan 2025 13:08:34 +0530 Subject: [PATCH] Done ticket GEPAFINBE-145 --- .../tendermanagement/dao/DashboardDao.java | 99 +++++++++++++++++-- .../enums/UserActionContextEnum.java | 1 + .../model/response/ApplicationToConsider.java | 15 +++ .../model/response/AverageEvaluationTime.java | 15 +++ .../model/response/EvaluatedApplication.java | 15 +++ .../PreInstructorWidgetResponseBean.java | 20 ++++ .../response/RescueInstructorInProgress.java | 13 +++ ...ApplicationAmendmentRequestRepository.java | 16 +++ .../repositories/ApplicationRepository.java | 15 +++ .../AssignedApplicationsRepository.java | 18 ++++ .../service/DashboardService.java | 6 +- .../service/impl/DashboardServiceImpl.java | 10 +- .../web/rest/api/DashboardApi.java | 19 +++- .../rest/api/impl/DashboardApiController.java | 16 ++- 14 files changed, 255 insertions(+), 23 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/ApplicationToConsider.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/AverageEvaluationTime.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/EvaluatedApplication.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/PreInstructorWidgetResponseBean.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/RescueInstructorInProgress.java diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index 1f17ef3e..273e60b4 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -6,10 +6,7 @@ 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.enums.*; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.CompanyService; @@ -23,9 +20,7 @@ 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; +import java.util.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -362,5 +357,95 @@ public class DashboardDao { } } + private PreInstructorWidgetResponseBean initializeDashboardPreInstructorResponseBean() { + return PreInstructorWidgetResponseBean.builder() + .assignedApplication(ApplicationToConsider.builder() + .totalAssignedApplication(0L) + .additionalApplication(BigDecimal.ZERO) + .build()) + .evaluatedApplication(EvaluatedApplication.builder() + .evaluatedApplication(0L) + .dailyAverage(BigDecimal.ZERO) + .build()) + .averageEvaluationDays(AverageEvaluationTime.builder() + .averageEvlauationDaysRating(BigDecimal.ZERO) + .timeDifferenceFromAverage(BigDecimal.ZERO) + .build()) + .amendmentInProgress(RescueInstructorInProgress.builder() + .totalAmendmentInProgress(0L) + .expiringToday(0L) + .build()) + .build(); + } + public PreInstructorWidgetResponseBean getDashboardWidgetForPreInstructor(UserEntity userEntity) { + PreInstructorWidgetResponseBean preInstructorWidgetResponseBean = initializeDashboardPreInstructorResponseBean(); + Long hubId = userEntity.getHub().getId(); + List applicationIds = getApplicationIdsForUserOrHub(userEntity, hubId); + setPreInstructorWidgets(applicationIds, preInstructorWidgetResponseBean,hubId); + calculateAverageEvaluationTime(applicationIds, preInstructorWidgetResponseBean, hubId); + return preInstructorWidgetResponseBean; + } + private void setPreInstructorWidgets(List applicationIds, PreInstructorWidgetResponseBean responseBean,Long hubId) { + + Long totalAssignedApplications = assignedApplicationsRepository.countAssignedApplicationsByApplicationIds(applicationIds); + if (totalAssignedApplications != null) { + responseBean.getAssignedApplication().setTotalAssignedApplication(totalAssignedApplications); + } + LocalDateTime yesterday = LocalDateTime.now().minusDays(1); + + Long newApplicationsAddedYesterday = assignedApplicationsRepository.countApplicationsAddedYesterdayForHub(hubId, yesterday); + if (newApplicationsAddedYesterday != null && totalAssignedApplications != null && totalAssignedApplications > 0) { + BigDecimal percentageAdded = BigDecimal.valueOf(newApplicationsAddedYesterday) + .divide(BigDecimal.valueOf(totalAssignedApplications), 4, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(100)); + responseBean.getAssignedApplication().setAdditionalApplication(percentageAdded.setScale(2, RoundingMode.HALF_UP)); + } + + List statuses = Arrays.asList(ApplicationStatusTypeEnum.APPROVED.getValue(), ApplicationStatusTypeEnum.REJECTED.getValue()); + LocalDateTime sevenDaysAgo = LocalDateTime.now().minusDays(7); + Long evaluatedApplication = applicationRepository.countEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); + if (evaluatedApplication != null) { + responseBean.getEvaluatedApplication().setEvaluatedApplication(evaluatedApplication); + + BigDecimal dailyAverage = applicationRepository.countDailyAverageEvaluatedApplicationsInLast7Days(applicationIds, statuses, sevenDaysAgo); + if (dailyAverage != null) { + responseBean.getEvaluatedApplication().setDailyAverage(dailyAverage.setScale(2, RoundingMode.HALF_UP)); // Rounded to 2 decimal places + } + } + + Long rescueInstructorsInProgress = applicationRepository.countApplicationsByIdsAndStatus(applicationIds, ApplicationStatusTypeEnum.SOCCORSO.getValue()); + if (rescueInstructorsInProgress != null) { + responseBean.getAmendmentInProgress().setTotalAmendmentInProgress(rescueInstructorsInProgress); + } + calculateExpiringRescueInstructorsToday(applicationIds,responseBean); + + } + private void calculateExpiringRescueInstructorsToday(List applicationIds, PreInstructorWidgetResponseBean responseBean) { + List statuses =Arrays.asList( ApplicationAmendmentRequestEnum.AWAITING.getValue(), ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue()); + + LocalDateTime startOfDay = LocalDateTime.now().toLocalDate().atStartOfDay(); + + LocalDateTime endOfDay = startOfDay.plusDays(1).minusNanos(1); + + Long expiringToday = applicationAmendmentRequestRepository.countAmendmentsExpiringToday(applicationIds, statuses, startOfDay, endOfDay); + + if (expiringToday != null) { + responseBean.getAmendmentInProgress().setExpiringToday(expiringToday); + } + } + + private void calculateAverageEvaluationTime(List applicationIds, PreInstructorWidgetResponseBean responseBean, Long hubId) { + + if (Boolean.FALSE.equals(applicationIds.isEmpty())) { + BigDecimal averageTime = applicationEvaluationRepository.findAverageEvaluationTimeByApplicationIds(applicationIds); + responseBean.getAverageEvaluationDays().setAverageEvlauationDaysRating( + averageTime != null ? averageTime.setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP) + ); + +// +// BigDecimal timeDifference = applicationEvaluationRepository.findTimeDifferenceFromAverage(applicationIds); +// responseBean.getAverageEvaluationTime().setTimeDifferenceFromAverage(timeDifference != null ? timeDifference : BigDecimal.ZERO); + } + } } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 64fd530c..7aaea7b5 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -138,6 +138,7 @@ public enum UserActionContextEnum { GET_DASHBOARD_WIDGET_FOR_BENEFICIARY("GET_DASHBOARD_WIDGET_FOR_BENEFICIARY"), GET_APPLICATION_DETAILS("GET_APPLICATION_DETAILS"), GET_AMENDMENT_DETAILS("GET_AMENDMENT_DETAILS"), + GET_DASHBOARD_WIDGET_FOR_PRE_INSTRUCTOR("GET_DASHBOARD_WIDGET_FOR_PRE_INSTRUCTOR"), /** Evaluation criteria action context **/ GET_EVALUATION_CRITERIA("GET_EVALUATION_CRITERIA"), diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationToConsider.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationToConsider.java new file mode 100644 index 00000000..c417403c --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationToConsider.java @@ -0,0 +1,15 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; + +@Builder +@Data +public class ApplicationToConsider { + + public Long totalAssignedApplication; + + private BigDecimal additionalApplication; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/AverageEvaluationTime.java b/src/main/java/net/gepafin/tendermanagement/model/response/AverageEvaluationTime.java new file mode 100644 index 00000000..0715d7e8 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/AverageEvaluationTime.java @@ -0,0 +1,15 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; + +@Builder +@Data +public class AverageEvaluationTime { + + private BigDecimal averageEvlauationDaysRating; + + private BigDecimal timeDifferenceFromAverage; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluatedApplication.java b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluatedApplication.java new file mode 100644 index 00000000..50df2089 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluatedApplication.java @@ -0,0 +1,15 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; + +@Builder +@Data +public class EvaluatedApplication { + + public Long evaluatedApplication; + + private BigDecimal dailyAverage; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/PreInstructorWidgetResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/PreInstructorWidgetResponseBean.java new file mode 100644 index 00000000..579d4df5 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/PreInstructorWidgetResponseBean.java @@ -0,0 +1,20 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; + +@Builder +@Data +public class PreInstructorWidgetResponseBean { + + private ApplicationToConsider assignedApplication; + + private EvaluatedApplication evaluatedApplication; + + private AverageEvaluationTime averageEvaluationDays; + + private RescueInstructorInProgress amendmentInProgress; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/RescueInstructorInProgress.java b/src/main/java/net/gepafin/tendermanagement/model/response/RescueInstructorInProgress.java new file mode 100644 index 00000000..ec8502e1 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/RescueInstructorInProgress.java @@ -0,0 +1,13 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Builder; +import lombok.Data; + +@Builder +@Data +public class RescueInstructorInProgress { + + private Long totalAmendmentInProgress; + + private Long expiringToday; +} diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java index 3e25f4a7..422a5730 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java @@ -132,4 +132,20 @@ public interface ApplicationAmendmentRequestRepository extends JpaRepository= :startOfDay + AND e.start_date + INTERVAL '1 DAY' * e.response_days < :endOfDay + AND e.is_deleted = false +""", nativeQuery = true) + Long countAmendmentsExpiringToday( + @Param("applicationIds") List applicationIds, + @Param("statuses") List statuses, + @Param("startOfDay") LocalDateTime startOfDay, + @Param("endOfDay") LocalDateTime endOfDay + ); + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index 086b0807..0a5fa214 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -8,6 +8,8 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -91,6 +93,19 @@ public interface ApplicationRepository extends JpaRepository findApplicationIdsByHubId(@Param("hubId") Long hubId); + @Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.id IN :applicationIds AND a.status = :status AND a.isDeleted = false") + Long countApplicationsByIdsAndStatus(@Param("applicationIds") List applicationIds, @Param("status") String status); + + @Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.id IN :applicationIds AND a.status IN :statuses AND a.isDeleted = false AND a.updatedDate >= :sevenDaysAgo") + Long countEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, + @Param("statuses") List statuses, + @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); + + @Query("SELECT (COUNT(a) / 7.0) FROM ApplicationEntity a WHERE a.id IN :applicationIds AND a.status IN :statuses AND a.isDeleted = false AND a.updatedDate >= :sevenDaysAgo") + BigDecimal countDailyAverageEvaluatedApplicationsInLast7Days(@Param("applicationIds") List applicationIds, + @Param("statuses") List statuses, + @Param("sevenDaysAgo") LocalDateTime sevenDaysAgo); + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java index 56036759..6476f4b1 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -25,4 +26,21 @@ public interface AssignedApplicationsRepository extends JpaRepository findApplicationIdsByUserIdAndIsDeletedFalse(@Param("userId") Long userId); + + @Query("SELECT COUNT(a) FROM AssignedApplicationsEntity a WHERE a.application.id IN :applicationIds AND a.isDeleted = false") + Long countAssignedApplicationsByApplicationIds(@Param("applicationIds") List applicationIds); + + @Query(""" + SELECT COUNT(aa) + FROM AssignedApplicationsEntity aa + JOIN ApplicationEntity a ON aa.application.id = a.id + WHERE a.hubId = :hubId + AND a.isDeleted = false + AND aa.createdDate >= :yesterday +""") + Long countApplicationsAddedYesterdayForHub( + @Param("hubId") Long hubId, + @Param("yesterday") LocalDateTime yesterday + ); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/DashboardService.java b/src/main/java/net/gepafin/tendermanagement/service/DashboardService.java index ee7429d4..9a4d3e5f 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/DashboardService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/DashboardService.java @@ -1,10 +1,7 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; -import net.gepafin.tendermanagement.model.response.AmendmentWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.ApplicationWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.BeneficiaryWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean; +import net.gepafin.tendermanagement.model.response.*; public interface DashboardService { @@ -13,4 +10,5 @@ public interface DashboardService { public BeneficiaryWidgetResponseBean getDashboardWidgetForBeneficiary(HttpServletRequest request, Long companyId); public ApplicationWidgetResponseBean getApplicationDetails(HttpServletRequest request); public AmendmentWidgetResponseBean getAmendmentDetails(HttpServletRequest request); + public PreInstructorWidgetResponseBean getDashboardWidgetForPreInstructor(HttpServletRequest request); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/DashboardServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/DashboardServiceImpl.java index e157d293..3bc041b6 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/DashboardServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/DashboardServiceImpl.java @@ -4,10 +4,7 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.DashboardDao; import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; -import net.gepafin.tendermanagement.model.response.AmendmentWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.ApplicationWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.BeneficiaryWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean; +import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.service.DashboardService; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; @@ -45,4 +42,9 @@ public class DashboardServiceImpl implements DashboardService { UserEntity userEntity=validator.validateUser(request); return dashboardDao.getAmendmentDetails(userEntity); } + @Override + public PreInstructorWidgetResponseBean getDashboardWidgetForPreInstructor(HttpServletRequest request) { + UserEntity userEntity=validator.validateUser(request); + return dashboardDao.getDashboardWidgetForPreInstructor(userEntity); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DashboardApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DashboardApi.java index bf1779fc..9c313f4a 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DashboardApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DashboardApi.java @@ -6,10 +6,7 @@ import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.servlet.http.HttpServletRequest; -import net.gepafin.tendermanagement.model.response.AmendmentWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.ApplicationWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.BeneficiaryWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean; +import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; import org.springframework.http.MediaType; @@ -75,4 +72,18 @@ public interface DashboardApi { produces = { "application/json" }) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN') || hasRole('ROLE_INSTRUCTOR_MANAGER')|| hasRole('ROLE_PRE_INSTRUCTOR')") ResponseEntity> getAmendmentDetails(HttpServletRequest request); + + @Operation(summary = "Api to get dashboard widget for pre instructor", + responses = { + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @GetMapping(value = "/instructor/amendment", + produces = { "application/json" }) + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN') || hasRole('ROLE_INSTRUCTOR_MANAGER')|| hasRole('ROLE_PRE_INSTRUCTOR')") + ResponseEntity> getDashboardWidgetForPreInstructor(HttpServletRequest request); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DashboardApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DashboardApiController.java index c9bc0d85..8bf02ec9 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DashboardApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DashboardApiController.java @@ -6,10 +6,7 @@ import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.UserActionRequest; -import net.gepafin.tendermanagement.model.response.AmendmentWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.ApplicationWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.BeneficiaryWidgetResponseBean; -import net.gepafin.tendermanagement.model.response.SuperAdminWidgetResponseBean; +import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.DashboardService; import net.gepafin.tendermanagement.util.LoggingUtil; @@ -71,4 +68,15 @@ public class DashboardApiController implements DashboardApi { return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(widgetResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.DASHBOARD_WIDGET_FETCHED_SUCCESSFULLY))); } + + @Override + public ResponseEntity> getDashboardWidgetForPreInstructor(HttpServletRequest request) { + + /** This code is responsible for creating user action logs for the "Get dashboard stats widget for amendment page" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_DASHBOARD_WIDGET_FOR_PRE_INSTRUCTOR).build()); + + PreInstructorWidgetResponseBean widgetResponseBean= dashboardService.getDashboardWidgetForPreInstructor(request); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(widgetResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.DASHBOARD_WIDGET_FETCHED_SUCCESSFULLY))); + } }