from typing import List from basic_analytics.schemas import CampaignsAnalyticsDateRange, AvailableDatesFilterParams from utils import date_utils from utils.date_utils import DateRange from basic_analytics.repository import BasicAnalyticsRepository class UserProjectsDataService: basic_analytics_repository = BasicAnalyticsRepository() def get_available_campaigns_dates(self, filters: AvailableDatesFilterParams) -> List[CampaignsAnalyticsDateRange]: date_ranges = self.basic_analytics_repository.get_campaigns_dates( label_id=filters.label, project_id=filters.project ) mapped_date_ranges = [DateRange(date_range[0], date_range[1]) for date_range in date_ranges] combined_ranges = date_utils.merge_date_ranges(mapped_date_ranges) return [CampaignsAnalyticsDateRange(date_range.start, date_range.end) for date_range in combined_ranges]