from campaigns.schemas import ( AssignableProjectByCampaignQueryParams, AssignableProjectSchema, AssignableProjectsResponseSchema, ) from campaigns.repositories.campaigns_assignable_projects_repository import CampaignsAssignableProjectsRepository from projects.services.project_target_items_maper import ProjectTargetItemsMapper class CampaignAssignableProjectsService: repository = CampaignsAssignableProjectsRepository() target_items_mapper = ProjectTargetItemsMapper() def assignable_projects_for_campaign( self, campaign_uuid: str, user_id: int, params: AssignableProjectByCampaignQueryParams ): projects = self.repository.get_assignable_projects(campaign_uuid, user_id, params) return AssignableProjectsResponseSchema( items=[ AssignableProjectSchema( id=project.id, name=project.name, targets=self.target_items_mapper.map_project_target_items_from_model(project.not_deleted_items()), isConfidential=project.is_confidential, ) for project in projects ] )