diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index 6eba956e..3b817314 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -8,8 +8,6 @@ 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; @@ -112,24 +110,31 @@ public interface ApplicationRepository extends JpaRepository findRequestedVsApprovedAmountsPerMonth( - @Param("hubId") Long hubId, - @Param("userId") Long userId, - @Param("userWithCompanyId") Long userWithCompanyId - ); + @Query(value = """ + WITH months AS ( + SELECT TO_CHAR(generate_series(CURRENT_DATE - INTERVAL '5 months', CURRENT_DATE, INTERVAL '1 month'), 'Mon') AS month_label, + EXTRACT(YEAR FROM generate_series(CURRENT_DATE - INTERVAL '5 months', CURRENT_DATE, INTERVAL '1 month')) AS year_value, + EXTRACT(MONTH FROM generate_series(CURRENT_DATE - INTERVAL '5 months', CURRENT_DATE, INTERVAL '1 month')) AS month_value + ) + SELECT m.month_label AS month, + COALESCE(SUM(a.amount_requested), 0) AS totalRequested, + COALESCE(SUM(a.amount_accepted), 0) AS totalApproved + FROM months m + LEFT JOIN {h-schema}application a ON EXTRACT(YEAR FROM a.date_accepted) = m.year_value + AND EXTRACT(MONTH FROM a.date_accepted) = m.month_value + AND a.is_deleted = false + AND a.status = 'APPROVED' + AND a.hub_id = :hubId + AND a.user_id = :userId + AND a.user_with_company_id = :userWithCompanyId + GROUP BY m.month_label, m.year_value, m.month_value + ORDER BY m.year_value, m.month_value + """, nativeQuery = true) + List findRequestedVsApprovedAmountsPerMonth(@Param("hubId") Long hubId, + @Param("userId") Long userId, + @Param("userWithCompanyId") Long userWithCompanyId); + + @Query("SELECT COUNT(a) FROM ApplicationEntity a " + "WHERE a.hubId = :hubId " + @@ -164,4 +169,5 @@ public interface ApplicationRepository extends JpaRepository