from typing import List from projects.repositories.project_marketing_mix_repository import ProjectMarketingMixRepository from projects.schemas import MarketingMixItemSchema class ProjectMarketingMixService: marketing_mix_repository: ProjectMarketingMixRepository def __init__(self): self.marketing_mix_repository = ProjectMarketingMixRepository() def get_project_marketing_mix_data(self, project_id: int) -> List[MarketingMixItemSchema]: data = self.marketing_mix_repository.get_marketing_mix_data_for_project_id(project_id) groups = {} for item in data: category = groups.get(item.category_id) or MarketingMixItemSchema(item.category_id, item.category_name) if item.platform_id: platform = MarketingMixItemSchema(item.platform_id, item.platform_name, item.budget) category.budget = category.budget + float(item.budget) category.subtypes.append(platform) else: category.budget = float(item.budget) groups[item.category_id] = category return list(groups.values())