Exemplo n.º 1
0
        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;
        }