|
4 | 4 |
|
5 | 5 | from eligibility_signposting_api.model import eligibility_status |
6 | 6 | from eligibility_signposting_api.model.campaign_config import CampaignConfig |
| 7 | +from eligibility_signposting_api.model.consumer_mapping import ConsumerId |
7 | 8 | from eligibility_signposting_api.repos import CampaignRepo, NotFoundError, PersonRepo |
8 | 9 | from eligibility_signposting_api.repos.consumer_mapping_repo import ConsumerMappingRepo |
9 | 10 | from eligibility_signposting_api.services.calculators import eligibility_calculator as calculator |
@@ -46,18 +47,27 @@ def get_eligibility_status( |
46 | 47 | if nhs_number: |
47 | 48 | try: |
48 | 49 | person_data = self.person_repo.get_eligibility_data(nhs_number) |
49 | | - campaign_configs = list(self.campaign_repo.get_campaign_configs()) |
50 | | - permitted_campaign_ids = self.consumer_mapping.get_permitted_campaign_ids(consumer_id) |
51 | | - permitted_campaign_configs: list[CampaignConfig] = [ |
52 | | - campaign for campaign in campaign_configs |
53 | | - if campaign.id in permitted_campaign_ids |
54 | | - ] |
55 | | - |
56 | 50 | except NotFoundError as e: |
57 | 51 | raise UnknownPersonError from e |
58 | 52 | else: |
59 | | - calc: calculator.EligibilityCalculator = self.calculator_factory.get(person_data, |
60 | | - permitted_campaign_configs) |
| 53 | + campaign_configs: list[CampaignConfig] = list(self.campaign_repo.get_campaign_configs()) |
| 54 | + permitted_campaign_configs = self.__collect_permitted_campaign_configs( |
| 55 | + campaign_configs, ConsumerId(consumer_id) |
| 56 | + ) |
| 57 | + calc: calculator.EligibilityCalculator = self.calculator_factory.get( |
| 58 | + person_data, permitted_campaign_configs |
| 59 | + ) |
61 | 60 | return calc.get_eligibility_status(include_actions, conditions, category) |
62 | 61 |
|
63 | 62 | raise UnknownPersonError # pragma: no cover |
| 63 | + |
| 64 | + def __collect_permitted_campaign_configs( |
| 65 | + self, campaign_configs: list[CampaignConfig], consumer_id: ConsumerId |
| 66 | + ) -> list[CampaignConfig]: |
| 67 | + permitted_campaign_ids = self.consumer_mapping.get_permitted_campaign_ids(ConsumerId(consumer_id)) |
| 68 | + if permitted_campaign_ids: |
| 69 | + permitted_campaign_configs: list[CampaignConfig] = [ |
| 70 | + campaign for campaign in campaign_configs if campaign.id in permitted_campaign_ids |
| 71 | + ] |
| 72 | + return permitted_campaign_configs |
| 73 | + return [] |
0 commit comments