Beispiel #1
0
        /// <summary>
        /// Adding "Sponsorship Exclusivity" to passes
        /// </summary>
        public void Apply()
        {
            foreach (string tenantConnectionString in _tenantConnectionStrings)
            {
                using (IDocumentStore documentStore = DocumentStoreFactory.CreateStore(tenantConnectionString))
                {
                    using (IDocumentSession session = documentStore.OpenSession())
                    {
                        var passRepository = new RavenPassRepository(session);

                        var passes = passRepository.GetAll();
                        foreach (var pass in passes)
                        {
                            var updated = false;
                            if (pass.General != null && pass.General.Count > 0)
                            {
                                var sponsorshipExclusivityItem = pass.General.Find(item => item.RuleId == 6);
                                if (sponsorshipExclusivityItem == null)
                                {
                                    sponsorshipExclusivityItem = new General()
                                    {
                                        RuleId       = 6,
                                        InternalType = "Defaults",
                                        Description  = "Sponsorship Exclusivity",
                                        Value        = "1",
                                        Type         = "general"
                                    };
                                    pass.General.Add(sponsorshipExclusivityItem);
                                    updated = true;
                                }
                                else if (!(sponsorshipExclusivityItem.Value == "0" || sponsorshipExclusivityItem.Value == "1"))
                                {
                                    sponsorshipExclusivityItem.Description = "Sponsorship Exclusivity";
                                    sponsorshipExclusivityItem.Value       = "1";
                                    updated = true;
                                }
                                if (updated)
                                {
                                    passRepository.Update(pass);
                                }
                            }
                        }
                        passRepository.SaveChanges();
                    }
                }
            }
        }
        /// <summary>
        /// Added field IsLibraried for scenarios and passes
        /// </summary>
        public void Apply()
        {
            foreach (string tenantConnectionString in _tenantConnectionStrings)
            {
                using (IDocumentStore documentStore = DocumentStoreFactory.CreateStore(tenantConnectionString))
                {
                    using (IDocumentSession session = documentStore.OpenSession())
                    {
                        var passRepository     = new RavenPassRepository(session);
                        var scenarioRepository = new RavenScenarioRepository(session);
                        var runRepository      = new RavenRunRepository(session);

                        var passes    = passRepository.GetAll().ToList();
                        var scenarios = scenarioRepository.GetAll().ToList();
                        var runs      = runRepository.GetAll().ToList();

                        // Get scenarios linked to run
                        var scenarioWithRunIds = new Dictionary <Guid, Guid>();
                        runs.ForEach(r =>
                        {
                            r.Scenarios.ForEach(s => scenarioWithRunIds.Add(s.Id, r.Id));
                        });

                        var runScenarioIds = scenarioWithRunIds.Select(s => s.Key).ToList();

                        // Update field IsLibraried for scenarios not libked to run
                        scenarios
                        .Where(s => !runScenarioIds.Contains(s.Id))
                        .Distinct()
                        .ToList()
                        .ForEach(scenario =>
                        {
                            scenario.IsLibraried = true;
                            scenarioRepository.Update(scenario);
                        });

                        scenarios
                        .Where(s => s.IsLibraried == null || !s.IsLibraried.Value)
                        .ToList()
                        .ForEach(scenario =>
                        {
                            scenario.IsLibraried = false;
                            scenarioRepository.Update(scenario);
                        });

                        // Get default scenario id
                        // var defaultScenarioId = tenantSettingsRepository.Find(TenantSettings.DefaultId).DefaultScenarioId;

                        // Get passes linked to scenario
                        var scenarioWithPassIds = new Dictionary <int, Guid>();
                        scenarios.ForEach(s =>
                        {
                            s.Passes.ForEach(p =>
                            {
                                scenarioWithPassIds.Add(p.Id, s.Id);
                            });
                        });

                        //// Get pass ids not linked to scenarios
                        //var librariedPassIds = passes
                        //    .Select(pass => pass.Id)
                        //    .Except(scenarioWithPassIds
                        //        .Where(val => val.Value != defaultScenarioId)
                        //        .Select(s => s.Key))
                        //    .Distinct()
                        //    .ToList();
                        var librariedPassIds = passes
                                               .Select(pass => pass.Id).Except(scenarioWithPassIds.Select(s => s.Key))
                                               .Distinct()
                                               .ToList();

                        // Update field IsLibararied for passes
                        passes
                        .Where(pass => librariedPassIds.Contains(pass.Id))
                        .Distinct()
                        .ToList()
                        .ForEach(pass =>
                        {
                            pass.IsLibraried = true;
                            passRepository.Update(pass);
                        });

                        passes
                        .Where(p => p.IsLibraried == null || !p.IsLibraried.Value)
                        .ToList()
                        .ForEach(pass =>
                        {
                            pass.IsLibraried = false;
                            passRepository.Update(pass);
                        });

                        scenarioRepository.SaveChanges();
                        passRepository.SaveChanges();
                    }
                }
            }
        }