Moving where the pending calculation is done.

Signed-off-by: Cliff Hill <Clifford.hill@gsa.gov>
This commit is contained in:
Cliff Hill
2025-01-10 16:07:49 -05:00
parent 9219049150
commit b543db474f
2 changed files with 20 additions and 10 deletions

View File

@@ -457,8 +457,9 @@ def dao_fetch_stats_for_service_from_days(service_id, start_date, end_date):
# Getting the total notifications through this query.
total_stmt = (
total_substmt = (
select(
func.date_trunc("day", NotificationAllTimeView.created_at).label("day"),
cast(Job.notification_count, Integer).label(
"notification_count"
), # <-- i added cast here
@@ -475,10 +476,16 @@ def dao_fetch_stats_for_service_from_days(service_id, start_date, end_date):
.group_by(
Job.id,
Job.notification_count,
func.date_trunc("day", NotificationAllTimeView.created_at),
)
.subquery()
)
total_notifications = sum(db.session.execute(total_stmt).scalars())
total_stmt = select(
func.sum(total_substmt.c.notification_count).label("total_notifications")
)
total_notifications = db.session.execute(total_stmt).scalar_one()
stmt = (
select(

View File

@@ -2,7 +2,7 @@ from collections import defaultdict
from datetime import datetime
from app.dao.date_util import get_months_for_financial_year
from app.enums import KeyType, NotificationStatus, StatisticsType, TemplateType
from app.enums import KeyType, NotificationStatus, NotificationType, StatisticsType, TemplateType
def format_statistics(statistics, total_notifications=None):
@@ -17,9 +17,17 @@ def format_statistics(statistics, total_notifications=None):
_update_statuses_from_row(
counts[row.notification_type],
row,
total_notifications=total_notifications,
)
# Update pending count directly
if NotificationType.SMS in counts and total_notifications is not None:
sms_dict = counts[NotificationType.SMS]
requested_count = sms_dict[StatisticsType.REQUESTED]
delivered_count = sms_dict[StatisticsType.DELIVERED]
failed_count = sms_dict[StatisticsType.FAILURE]
pending_count = total_notifications - (requested_count + delivered_count + failed_count)
sms_dict[StatisticsType.PENDING] = pending_count
return counts
@@ -86,7 +94,7 @@ def create_zeroed_stats_dicts():
}
def _update_statuses_from_row(update_dict, row, total_notifications=None):
def _update_statuses_from_row(update_dict, row):
requested_count = 0
delivered_count = 0
failed_count = 0
@@ -113,11 +121,6 @@ def _update_statuses_from_row(update_dict, row, total_notifications=None):
update_dict[StatisticsType.FAILURE] += row.count
failed_count += row.count
if total_notifications is not None:
# Update pending count directly
pending_count = total_notifications - (requested_count + delivered_count + failed_count)
update_dict[StatisticsType.PENDING] = pending_count
def create_empty_monthly_notification_status_stats_dict(year):
utc_month_starts = get_months_for_financial_year(year)