public IEnumerable <Ones> GetOnesForMasterScenario(OnesForMasterScenarioFilter onesFilter) { var ones = GetCollectionAsQueryable(o => o.ScenarioId == onesFilter.ShowOnesScenarioId && o.ShowId == onesFilter.ShowId && o.DisciplineId > 0 && o.ExtractDataType.Contains(OnesConstants.ShowOnesExtractDataType) && !OnesConstants.IgnoredOnesTypes.Contains(o.OnesTypeId) && !OnesConstants.IgnoreOnesStatuses.Contains(o.StatusId) && onesFilter.BuIds.Contains(o.BuId) && onesFilter.SiteIds.Contains(o.SiteEntityId) && onesFilter.DisciplineIds.Contains(o.DisciplineId.Value)) .Include(o => o.Artist) .Where(o => onesFilter.ArtistLevelIds.Contains(o.Artist.LevelId.Value)) .ToList(); return(ones); }
private static void Main(string[] args) { //Console.WriteLine("Warning. All records in quota tables will be deleted."); //_context.Database.ExecuteSqlCommand(CommonConstants.ClearAllQuotaTablesScriptText); while (true) { Console.WriteLine("Business units:"); foreach (var businessUnit in CommonConstants.BusinessUnits) { Console.WriteLine($"{businessUnit.Value,-30}{businessUnit.Key,5}"); } Console.WriteLine("\nWrite the business unit id and press enter:"); int buId; while (!int.TryParse(Console.ReadLine(), out buId) || !CommonConstants.BusinessUnits.ContainsKey(buId)) { Console.Write("This is not valid input. Please enter business unit id:\n"); } _quotaScenarioRepository.DeleteQuotaScenariosForBusinessUnit(buId); Console.WriteLine("\nGetting shows"); var shows = _showRepository.GetShowsByBuId(buId); Console.WriteLine("Getting disciplines"); var disciplines = GetDisciplinesForBusinessUnitIncludingTps(buId); Console.WriteLine("Getting artist levels\n"); var artistLevelIds = _artistLevelRepository.GetArtistLevels().Select(l => l.Id).ToList(); var buIds = _entityTpsRelationRepository.GetEntityTpsRelations(buId).Select(x => x.TpsEntityId).ToList(); buIds.Add(buId); var userId = _userProfileRepository .GetItemAsQueryable(u => !u.Deleted && u.Active && u.BuId == buId && u.UserTypeId == CommonConstants.GlobalResourceManagerUserTypeId) .Select(u => u.UserId) .First(); var showsCount = shows.Count; var i = 1; foreach (var show in shows) { try { var showFacilities = _showFacilityRepository.GetShowFacilities(show.ShowId).ToList(); var showFacilityIds = showFacilities.Select(x => x.EntityId).ToList(); var disciplineIds = disciplines.Select(x => x.Id).ToList(); if (show.ProducerUserId.HasValue) { userId = show.ProducerUserId.Value; } var filter = new OnesForMasterScenarioFilter { ShowOnesScenarioId = CommonConstants.ShowOnesMasterScenarioId, ShowId = show.ShowId, BuIds = buIds, ArtistLevelIds = artistLevelIds, SiteIds = showFacilityIds, DisciplineIds = disciplineIds }; var ones = _onesRepository.GetOnesForMasterScenario(filter).ToList(); using (var transaction = _context.Database.BeginTransaction()) { try { var quotaScenario = new ShowOnesQuotaScenario { ShowId = show.ShowId, UserId = userId, Name = CommonConstants.MasterScenarioName, CreatedDateTimeUtc = DateTime.UtcNow, IsMaster = true }; var dbQuotaScenarioId = _quotaScenarioRepository.Save(quotaScenario); var uniqueFilters = CreateUniqueFilters(dbQuotaScenarioId, disciplines, showFacilities); _context.BulkInsert(uniqueFilters); var isEpisodicShow = show.ShowCategoryId == CommonConstants.EpisodicShowCategoryId; List <ShowOnesQuota> levelQuotas; if (isEpisodicShow) { levelQuotas = CreateLevelQuotasFromDailyUnassignedOnes(ones, uniqueFilters, dbQuotaScenarioId); } else { levelQuotas = CreateLevelQuotasFromWeeklyUnassignedOnes(ones, uniqueFilters, dbQuotaScenarioId); } _context.BulkInsert(levelQuotas); var siteQuotas = CreateSiteQuotas(levelQuotas); _context.BulkInsert(siteQuotas); transaction.Commit(); //transaction.Rollback(); } catch (Exception ex) { transaction.Rollback(); Console.WriteLine($"Show code:{show.ShowCode}\n" + $"Error message: {ex.Message}\n" + $"Inner exception: {ex.InnerException}"); } } } catch (Exception ex) { Console.WriteLine($"Show code:{show.ShowCode}\n" + $"Error message: {ex.Message}\n" + $"Inner exception: {ex.InnerException}"); } var progressValue = (double)i / showsCount * 100; var completedPercent = Math.Round(progressValue, 1, MidpointRounding.AwayFromZero); Console.WriteLine($"Convert completed on: {completedPercent}%"); i++; } Console.WriteLine($"Finish converting for {CommonConstants.BusinessUnits.First(bu => bu.Key == buId).Value}\n"); } }