1111
1212from eligibility_signposting_api .audit .audit_context import AuditContext
1313from eligibility_signposting_api .audit .audit_service import AuditService
14- from eligibility_signposting_api .common .api_error_response import NHS_NUMBER_NOT_FOUND_ERROR
14+ from eligibility_signposting_api .common .api_error_response import (
15+ CONSUMER_HAS_NO_CAMPAIGN_MAPPING ,
16+ NHS_NUMBER_NOT_FOUND_ERROR ,
17+ )
1518from eligibility_signposting_api .common .request_validator import validate_request_params
1619from eligibility_signposting_api .config .constants import CONSUMER_ID , URL_PREFIX
1720from eligibility_signposting_api .model .consumer_mapping import ConsumerId
1821from eligibility_signposting_api .model .eligibility_status import Condition , EligibilityStatus , NHSNumber , Status
1922from eligibility_signposting_api .services import EligibilityService , UnknownPersonError
23+ from eligibility_signposting_api .services .eligibility_services import NoPermittedCampaignsError
2024from eligibility_signposting_api .views .response_model import eligibility_response
2125from eligibility_signposting_api .views .response_model .eligibility_response import ProcessedSuggestion
2226
@@ -48,9 +52,11 @@ def check_eligibility(
4852 nhs_number : NHSNumber , eligibility_service : Injected [EligibilityService ], audit_service : Injected [AuditService ]
4953) -> ResponseReturnValue :
5054 logger .info ("checking nhs_number %r in %r" , nhs_number , eligibility_service , extra = {"nhs_number" : nhs_number })
55+
56+ query_params = _get_or_default_query_params ()
57+ consumer_id = _get_consumer_id_from_headers ()
58+
5159 try :
52- query_params = _get_or_default_query_params ()
53- consumer_id = _get_consumer_id_from_headers ()
5460 eligibility_status = eligibility_service .get_eligibility_status (
5561 nhs_number ,
5662 query_params ["includeActions" ],
@@ -60,6 +66,8 @@ def check_eligibility(
6066 )
6167 except UnknownPersonError :
6268 return handle_unknown_person_error (nhs_number )
69+ except NoPermittedCampaignsError :
70+ return handle_no_permitted_campaigns_for_the_consumer_error (consumer_id )
6371 else :
6472 response : eligibility_response .EligibilityResponse = build_eligibility_response (eligibility_status )
6573 AuditContext .write_to_firehose (audit_service )
@@ -112,6 +120,13 @@ def handle_unknown_person_error(nhs_number: NHSNumber) -> ResponseReturnValue:
112120 )
113121
114122
123+ def handle_no_permitted_campaigns_for_the_consumer_error (consumer_id : ConsumerId ) -> ResponseReturnValue :
124+ diagnostics = f"Consumer ID '{ consumer_id } ' was not recognised by the Eligibility Signposting API"
125+ return CONSUMER_HAS_NO_CAMPAIGN_MAPPING .log_and_generate_response (
126+ log_message = diagnostics , diagnostics = diagnostics , location_param = "id"
127+ )
128+
129+
115130def build_eligibility_response (eligibility_status : EligibilityStatus ) -> eligibility_response .EligibilityResponse :
116131 """Return an object representing the API response we are going to send, given an evaluation of the person's
117132 eligibility."""
0 commit comments