public async Task<int> Create(string name, int week, int scenarioMask, int senarioWeekMin, int scenarioWeekMax, int markdownCountStartWeek, int defaultMarkdownType, DecisionState defaultDecisionState, bool allowPromoAsMarkdown, decimal minimumPromoPercentage, int organisationId, int userId, List<int> productIds, List<int> hierarchyIds) { var scenario = SmScenario.Build(name, week, scenarioMask, senarioWeekMin, scenarioWeekMax, markdownCountStartWeek, defaultMarkdownType, defaultDecisionState, allowPromoAsMarkdown, minimumPromoPercentage, organisationId,userId ); var scenarioId = await _scenarioRepository.CreateOrUpdate(scenario.Week, scenario.ScheduleWeekMin, scenario.ScheduleWeekMax, scenario.ScheduleStageMin, scenario.ScheduleStageMax, scenario.StageMax, scenario.StageOffsetMax, scenario.PriceFloor, scenario.OrganisationId,scenario.CreatedBy, scenario.ScenarioName, scenario.ScheduleMask, scenario.MarkdownCountStartWeek, scenario.DefaultMarkdownType, scenario.DefaultDecisionState); if (hierarchyIds.Any()) { var filters = hierarchyIds .Select(x => new ScenarioHierarchyFilter {HierarchyId = x, ScenarioId = scenarioId}) .ToList(); await _scenarioHierarchyFilterRepository.Create(filters); } if (productIds.Any()) { var products = productIds .Select(x => new ScenarioProductFilter { ProductId = x, ScenarioId = scenarioId }) .ToList(); await _scenarioProductFilterRepository.Create(products); } return scenarioId; }