mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 15:31:15 -05:00
NotificationStatistics was added as a spike but didn't work out as expected. This is finally removing all that unused code. I'll drop the table in the next PR
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from sqlalchemy import func
|
|
|
|
from app import db
|
|
from app.dao.date_util import get_financial_year
|
|
from app.models import (
|
|
NotificationHistory,
|
|
SMS_TYPE,
|
|
EMAIL_TYPE,
|
|
NOTIFICATION_STATUS_TYPES_BILLABLE,
|
|
KEY_TYPE_TEST
|
|
)
|
|
|
|
|
|
def get_fragment_count(service_id, year=None):
|
|
shared_filters = [
|
|
NotificationHistory.service_id == service_id,
|
|
NotificationHistory.status.in_(NOTIFICATION_STATUS_TYPES_BILLABLE),
|
|
NotificationHistory.key_type != KEY_TYPE_TEST
|
|
]
|
|
|
|
if year:
|
|
shared_filters.append(NotificationHistory.created_at.between(
|
|
*get_financial_year(year)
|
|
))
|
|
|
|
sms_count = db.session.query(
|
|
func.sum(NotificationHistory.billable_units)
|
|
).filter(
|
|
NotificationHistory.notification_type == SMS_TYPE,
|
|
*shared_filters
|
|
)
|
|
|
|
email_count = db.session.query(
|
|
func.count(NotificationHistory.id)
|
|
).filter(
|
|
NotificationHistory.notification_type == EMAIL_TYPE,
|
|
*shared_filters
|
|
)
|
|
return {
|
|
'sms_count': int(sms_count.scalar() or 0),
|
|
'email_count': email_count.scalar() or 0
|
|
}
|