namespace Distribution.Features.Region; public interface IRegionRepository { Task GetByIdAsync(Guid id); Task> GetAllAsync(); Task> GetAllCodesAsync(); Task CodeExistsAsync(string code, Guid? excludeId = null); Task AddAsync(Models.Region entity); void Update(Models.Region entity); void Remove(Models.Region entity); Task GetTargetAsync(Guid regionId, string period); Task AddTargetAsync(Models.RegionalTarget target); void UpdateTarget(Models.RegionalTarget target); Task> GetAllTargetsAsync(); Task GetTargetByIdAsync(Guid id); void RemoveTarget(Models.RegionalTarget target); Task GetBudgetAsync(Guid regionId, string period); Task AddBudgetAsync(Models.RegionalBudget budget); void UpdateBudget(Models.RegionalBudget budget); Task> GetAllBudgetsAsync(); Task GetBudgetByIdAsync(Guid id); void RemoveBudget(Models.RegionalBudget budget); Task GetAgencyMapAsync(Guid regionId, Guid agencyUserId); Task AddAgencyMapAsync(Models.RegionAgencyMap map); void UpdateAgencyMap(Models.RegionAgencyMap map); Task> GetAgencyMapsForRegionAsync(Guid regionId); Task> GetAllAgencyMapsAsync(); Task GetAgencyMapByIdAsync(Guid id); void RemoveAgencyMap(Models.RegionAgencyMap map); Task GetTaxRuleAsync(Guid regionId); Task AddTaxRuleAsync(Models.RegionalTaxRule rule); void UpdateTaxRule(Models.RegionalTaxRule rule); Task> GetAllTaxRulesAsync(); Task GetTaxRuleByIdAsync(Guid id); void RemoveTaxRule(Models.RegionalTaxRule rule); Task GetUserRoleLevelAsync(Guid userId); Task> GetRoutesAsync(Guid regionId); Task> GetStoresByRouteIdsAsync(List routeIds); Task> GetOrdersForDashboardAsync(Guid regionId, DateTime periodStart, DateTime periodEndExclusive); }