diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index f0ba1a60b..6ca162a9c 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -22,7 +22,6 @@ from app import ( letter_jobs_client, platform_stats_api_client, service_api_client, - user_api_client, ) from app.extensions import antivirus_client, redis_client from app.main import main @@ -211,31 +210,31 @@ def platform_admin_reports(): @login_required @user_is_platform_admin def live_services_csv(): - services = service_api_client.get_services()["data"] + results = service_api_client.get_live_services_data()["data"] live_services_columns = [ "Service ID", "Organisation", "Service name", "Consent to research", "Main contact", - "Contact email", "Contact mobile", "Live date", "SMS volume", "Email volume", "Letter volume" + "Contact email", "Contact mobile", "Live date", "SMS volume intent", "Email volume intent", + "Letter volume intent", "SMS sent this year", "Emails sent this year", "Letters sent this year" ] live_services_data = [] live_services_data.append(live_services_columns) - for service in services: - if service["count_as_live"]: - main_contact = None - if service["go_live_user"]: - main_contact = user_api_client.get_user(service["go_live_user"]) - live_services_data.append([ - service["id"], - service["organisation"], - service["name"], - service["consent_to_research"], - main_contact.name if main_contact else None, - main_contact.email_address if main_contact else None, - main_contact.mobile_number if main_contact else None, - service["go_live_at"], - service["volume_sms"], - service["volume_email"], - service["volume_letter"], - ]) + for row in results: + live_services_data.append([ + row["service_id"], + row["organisation_name"], + row["service_name"], + row["consent_to_research"], + row["contact_name"], + row["contact_email"], + row["contact_mobile"], + row["live_date"], + row["sms_volume_intent"], + row["email_volume_intent"], + row["letter_volume_intent"], + row["sms_totals"], + row["email_totals"], + row["letter_totals"], + ]) return Response( Spreadsheet.from_rows(live_services_data).as_csv_data, mimetype='text/csv', diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index 86cbaaa58..ebe869702 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -47,6 +47,12 @@ class ServiceAPIClient(NotifyAdminAPIClient): """ return self.get('/service', params=params_dict) + def get_live_services_data(self, params_dict=None): + """ + Retrieve a list of live services data with contact names and notification counts. + """ + return self.get('/service/live-services-data', params=params_dict) + def get_active_services(self, params_dict=None): """ Retrieve a list of active services. diff --git a/tests/app/main/views/test_platform_admin.py b/tests/app/main/views/test_platform_admin.py index 946d94c28..f62206091 100644 --- a/tests/app/main/views/test_platform_admin.py +++ b/tests/app/main/views/test_platform_admin.py @@ -949,25 +949,27 @@ def test_get_live_services_report(client, platform_admin_user, mocker): client.login(platform_admin_user) mocker.patch( - 'app.service_api_client.get_services', + 'app.service_api_client.get_live_services_data', return_value={'data': [ - {'id': '1', 'organisation': 'Forest', 'name': 'jessie the oak tree', 'consent_to_research': True, - 'go_live_at': '2014-03-29', 'volume_sms': 100, 'volume_email': 50, 'volume_letter': 20, - 'count_as_live': True, 'go_live_user': '123'}, - {'id': '2', 'organisation': 'Forest', 'name': 'james the pine tree', 'consent_to_research': None, - 'go_live_at': '2015-03-26', 'volume_sms': None, 'volume_email': 60, 'volume_letter': 0, - 'count_as_live': True, 'go_live_user': None}, - {'id': '3', 'organisation': 'Forest', 'name': 'gary the rock', 'consent_to_research': None, - 'go_live_at': None, 'volume_sms': None, 'volume_email': 0, 'volume_letter': 0, - 'count_as_live': False, 'go_live_user': None}, + {'service_id': 1, 'service_name': 'jessie the oak tree', 'organisation_name': 'Forest', + 'consent_to_research': True, 'contact_name': 'Forest fairy', + 'contact_email': 'forest.fairy@digital.cabinet-office.gov.uk', 'contact_mobile': '+447700900986', + 'live_date': '2014-03-29', 'sms_volume_intent': 100, 'email_volume_intent': 50, + 'letter_volume_intent': 20, 'sms_totals': 300, 'email_totals': 1200, 'letter_totals': 0}, + {'service_id': 2, 'service_name': 'james the pine tree', 'organisation_name': 'Forest', + 'consent_to_research': None, 'contact_name': None, + 'contact_email': None, 'contact_mobile': None, + 'live_date': '2015-03-26', 'sms_volume_intent': None, 'email_volume_intent': 60, + 'letter_volume_intent': 0, 'sms_totals': 0, 'email_totals': 0, 'letter_totals': 0}, ]} ) response = client.get(url_for('main.live_services_csv')) assert response.status_code == 200 report = response.get_data(as_text=True) assert report.strip() == ( - 'Service ID,Organisation,Service name,Consent to research,' - + 'Main contact,Contact email,Contact mobile,Live date,SMS volume,Email volume,Letter volume\r\n1,Forest' - + ',jessie the oak tree,True,Platform admin user,platform@admin.gov.uk,07700 900762,2014-03-29,100,50,20\r\n2,' - + 'Forest,james the pine tree,,,,,2015-03-26,,60,0' + 'Service ID,Organisation,Service name,Consent to research,Main contact,Contact email,Contact mobile,' + + 'Live date,SMS volume intent,Email volume intent,Letter volume intent,SMS sent this year,' + + 'Emails sent this year,Letters sent this year\r\n1,Forest,jessie the oak tree,True,Forest fairy,' + + 'forest.fairy@digital.cabinet-office.gov.uk,+447700900986,2014-03-29,100,50,20,300,1200,0\r\n2,Forest,' + + 'james the pine tree,,,,,2015-03-26,,60,0,0,0,0' )