Beispiel #1
0
        public static void SetIdForPasssReference(PassReference pass, IIdentityGeneratorResolver identityGeneratorResolver)
        {
            var identityGenerator =
                (identityGeneratorResolver ?? throw new ArgumentNullException(nameof(identityGeneratorResolver)))
                .Resolve <IPassRepository>();

            pass.Id = (pass.Id == 0) ? identityGenerator.GetIdentities <PassIdIdentity>(1)[0].Id : pass.Id;
        }
Beispiel #2
0
        public static void ApplyChangesToScenarioAndSetIds(Scenario scenario, CreateRunScenarioModel createRunScenarioModel,
                                                           List <CampaignWithProductFlatModel> campaigns, Guid runScenarioId,
                                                           IIdentityGeneratorResolver identityGeneratorResolver,
                                                           IMapper mapper)
        {
            if (scenario != null && createRunScenarioModel != null)
            {
                scenario.Id   = createRunScenarioModel.Id != Guid.Empty ? createRunScenarioModel.Id : (scenario.Id != Guid.Empty ? scenario.Id : runScenarioId);
                scenario.Name = createRunScenarioModel.Name;

                var oldPasses = new List <PassReference>();
                oldPasses.AddRange(scenario.Passes);
                scenario.Passes.Clear();

                foreach (PassModel passModel in createRunScenarioModel.Passes)
                {
                    PassReference oldPass = oldPasses.FirstOrDefault(item => item.Id == passModel.Id);
                    if (oldPass == null)    // New pass
                    {
                        oldPass = MapToPassReference(passModel);
                    }
                    else
                    {
                        ApplyToPassReference(oldPass, passModel);
                    }

                    IdUpdater.SetIdForPasssReference(oldPass, identityGeneratorResolver);
                    //reset the pass id in CampaignPassPriorities for those passes matching the pass name
                    createRunScenarioModel.CampaignPassPriorities.SelectMany(c => c.PassPriorities)
                    .Where(a => a.PassName.Trim().ToUpperInvariant() == passModel.Name.Trim().ToUpperInvariant())
                    .ForEach((p) =>
                    {
                        p.PassId   = oldPass.Id;
                        p.PassName = p.PassName.Trim();
                    });
                    scenario.Passes.Add(oldPass);
                }

                var campaignPassPriorities = mapper.Map <List <CampaignPassPriority> >(Tuple.Create(createRunScenarioModel.CampaignPassPriorities, campaigns));

                var campaignPriorityRounds = mapper.Map <CampaignPriorityRounds>(createRunScenarioModel.CampaignPriorityRounds);

                scenario.CampaignPassPriorities = campaignPassPriorities;

                scenario.CampaignPriorityRounds = campaignPriorityRounds;

                IdUpdater.SetIdForScenario(scenario, identityGeneratorResolver);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Updates Pass repository for passes
        /// </summary>
        /// <param name="scenario"></param>
        /// <param name="command"></param>
        /// <param name="deletedPassIds"></param>
        private void UpdatePassRepository(Scenario scenario, ScenarioModel command, List <int> deletedPassIds)
        {
            var updatedPasses = new List <Pass>();
            var newPasses     = new List <Pass>();

            // Get changes for Pass repository
            for (int passIndex = 0; passIndex < scenario.Passes.Count; passIndex++)
            {
                PassReference passReference = scenario.Passes[passIndex];
                PassModel     passModel     = command.Passes[passIndex];
                Pass          pass          = passReference.Id == 0 ? null : _passRepository.Get(passReference.Id);
                if (pass == null)   // New pass
                {
                    pass    = _mapper.Map <Pass>(passModel);
                    pass.Id = passReference.Id;     // Set in previous call to IdUpdater.SetIds
                    Pass.ValidateForSave(pass);
                    newPasses.Add(pass);
                }
                else    // Update pass
                {
                    Mappings.ApplyToPass(pass, passModel, _mapper);
                    Pass.ValidateForSave(pass);
                    updatedPasses.Add(pass);
                }
            }

            // Add/update
            updatedPasses.ForEach(currentPass => _passRepository.Update(currentPass));
            newPasses.ForEach(currentPass => _passRepository.Add(currentPass));

            // Delete passes
            if (deletedPassIds != null && deletedPassIds.Any())
            {
                _passRepository.Remove(deletedPassIds);
            }
        }
Beispiel #4
0
 public static void ApplyToPassReference(PassReference passReference, PassModel command)
 {
     passReference.Id = (command.Id > 0 ? command.Id : passReference.Id);
 }
Beispiel #5
0
        /// <summary>
        /// Converts run from V1 format to new format
        /// </summary>
        /// <param name="runOld"></param>
        /// <param name="runs"></param>
        /// <param name="scenarios"></param>
        /// <param name="passes"></param>
        private void ConvertRun(RunV1 runOld, List <Run> runs, List <Scenario> scenarios, List <Pass> passes)
        {
            Run run = new Run()
            {
                Author                 = runOld.Author,
                Campaigns              = runOld.Campaigns,
                CreatedDateTime        = runOld.CreatedDateTime,
                CustomId               = runOld.CustomId,
                Description            = runOld.Description,
                EndDate                = runOld.EndDateTime,
                ExecuteStartedDateTime = runOld.ExecuteStartedDateTime,
                Id                   = runOld.Id,
                IsLocked             = runOld.IsLocked,
                ISR                  = runOld.ISR,
                LastModifiedDateTime = runOld.LastModifiedDateTime,
                Optimisation         = runOld.Optimisation,
                Real                 = runOld.Real,
                RightSizer           = runOld.RightSizer,
                //SalesAreas = runOld.SalesAreas,   //commented out for compiling as new run model for xggp-752 does not contain SalesAreas (replaced with SalesAreaPriorities)
                Smooth    = runOld.Smooth,
                StartDate = runOld.StartDateTime
            };

            // Convert scenarios
            foreach (var scenarioOld in runOld.Scenarios)
            {
                RunScenario runScenario = new RunScenario()
                {
                    Id = scenarioOld.Id,
                    CompletedDateTime = scenarioOld.CompletedDateTime,
                    Progress          = scenarioOld.Progress,
                    StartedDateTime   = scenarioOld.StartedDateTime,
                    Status            = scenarioOld.Status
                };

                Scenario scenario = new Scenario()
                {
                    CustomId = scenarioOld.CustomId,
                    Id       = scenarioOld.Id,
                    Name     = string.Format("Scenario {0}", scenarioOld.CustomId), // Default
                    Passes   = new List <PassReference>()
                };
                run.Scenarios.Add(runScenario);

                // Convert passes
                foreach (var passOld in scenarioOld.Passes)
                {
                    PassReference passReference = new PassReference()
                    {
                        Id = passOld.Id
                    };
                    scenario.Passes.Add(passReference);

                    Pass pass = (Pass)passOld.Clone();
                    pass.Name = string.Format("Pass {0}", pass.Id);  // Default
                    passes.Add(pass);
                }

                scenarios.Add(scenario);
            }

            runs.Add(run);
        }