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; }
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); } }
/// <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); } }
public static void ApplyToPassReference(PassReference passReference, PassModel command) { passReference.Id = (command.Id > 0 ? command.Id : passReference.Id); }
/// <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); }