private static List <ShowOnesQuota> CreateLevelQuotasFromWeeklyUnassignedOnes(List <Ones> onesCollection, List <ShowOnesQuotaUniqueFilter> uniqueFilters, int scenarioId) { var showOnesQuotas = new List <ShowOnesQuota>(); var groupsOnes = onesCollection .Where(o => o.DayOfPeriod == null) .GroupBy(o => new { o.Artist.LevelId, o.Period, o.DisciplineId, o.SiteEntityId }); foreach (var groupOnes in groupsOnes) { var sum = 0D; var siteId = groupOnes.First().SiteEntityId; var disciplineId = groupOnes.First().DisciplineId; var seniorityLevelId = groupOnes.First().Artist.LevelId; var date = groupOnes.Key.Period; foreach (var ones in groupOnes) { sum += GetSumOnesValueAndOt(ones); } if (sum > 0) { var uniqueFilter = uniqueFilters.FirstOrDefault(f => f.DisciplineId == disciplineId && f.SiteId == siteId && f.ShowOnesQuotaScenarioId == scenarioId); if (uniqueFilter != null) { var value = Math.Round(sum, 1, MidpointRounding.AwayFromZero); var showOnesQuota = new ShowOnesQuota { ShowOnesQuotaUniqueFilterId = uniqueFilter.Id, SeniorityLevelId = seniorityLevelId ?? CommonConstants.UndefinedArtistLevelId, MetricTypeId = CommonConstants.OnesMetricTypeId, Value = Convert.ToDecimal(value), Date = date }; showOnesQuotas.Add(showOnesQuota); } } } return(showOnesQuotas); }
private static List <ShowOnesQuota> CreateSiteQuotas(List <ShowOnesQuota> quotas) { var showOnesQuotas = new List <ShowOnesQuota>(); var groupsQuotas = quotas .GroupBy(q => new { q.Date, q.ShowOnesQuotaUniqueFilterId }); foreach (var groupQuotas in groupsQuotas) { var uniqueFilterId = groupQuotas.First().ShowOnesQuotaUniqueFilterId; var seniorityLevelId = CommonConstants.UndefinedArtistLevelId; var date = groupQuotas.Key.Date; var sum = groupQuotas.Sum(q => q.Value); var value = Math.Round(sum, 1, MidpointRounding.AwayFromZero); if (sum != 0) { var showOnesQuota = new ShowOnesQuota { ShowOnesQuotaUniqueFilterId = uniqueFilterId, SeniorityLevelId = seniorityLevelId, MetricTypeId = CommonConstants.OnesMetricTypeId, Value = value, Date = date }; showOnesQuotas.Add(showOnesQuota); } } return(showOnesQuotas); }