Files
notifications-api/app/dao/provider_statistics_dao.py
Rebecca Law f5e79302cd Remove NotificationStatistics
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
2017-11-01 15:02:50 +00:00

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
}