public AccountUsedLimitsTodayDataInfo GetUsedTodayTariffLimit(AccountDbContext context) { CheckForNewCurrentDataRow(context); var result = new AccountUsedLimitsTodayDataInfo() { EventRequests = DataTotal.EventsRequests + DataCurrent.EventsRequests, EventsSize = DataTotal.EventsSize + DataCurrent.EventsSize, UnitTestsRequests = DataTotal.UnitTestsRequests + DataCurrent.UnitTestsRequests, UnitTestsSize = DataTotal.UnitTestsSize + DataCurrent.UnitTestsSize, LogSize = DataTotal.LogSize + DataCurrent.LogSize, MetricRequests = DataTotal.MetricsRequests + DataCurrent.MetricsRequests, MetricsSize = DataTotal.MetricsSize + DataCurrent.MetricsSize, SmsCount = DataTotal.SmsCount + DataCurrent.SmsCount }; var tempData = new LimitDataArchiveItem(); foreach (var data in DataTotal.UnitTestData.ToList()) { tempData.GetUnitTestData(data.Key).ResultsCount += data.Value.ResultsCount; } foreach (var data in DataCurrent.UnitTestData.ToList()) { tempData.GetUnitTestData(data.Key).ResultsCount += data.Value.ResultsCount; } result.UnitTestsResults = tempData.UnitTestData.Select(t => new AccountUsedLimitsUnitTestDataInfo() { UnitTestId = t.Key, ApiChecksResults = t.Value.ResultsCount }).ToArray(); return(result); }
protected void RecalcDataTotal(AccountDbContext context) { LimitDataArchiveItem[] rows; lock (DataArchiveLockObject) { var dataArchive = GetDataArchive(context); rows = dataArchive.Where(t => t.BeginDate >= Now.Date).ToArray(); } // Рассчитаем суммарные значения по истории за сегодня var newDataTotal = new LimitDataArchiveItem(); newDataTotal.EventsRequests = rows.Sum(t => t.EventsRequests); newDataTotal.EventsSize = rows.Sum(t => t.EventsSize); newDataTotal.UnitTestsRequests = rows.Sum(t => t.UnitTestsRequests); newDataTotal.UnitTestsSize = rows.Sum(t => t.UnitTestsSize); newDataTotal.MetricsRequests = rows.Sum(t => t.MetricsRequests); newDataTotal.MetricsSize = rows.Sum(t => t.MetricsSize); newDataTotal.LogSize = rows.Sum(t => t.LogSize); newDataTotal.SmsCount = rows.Sum(t => t.SmsCount); // Рассчитаем суммарные данные по проверкам // Сначала суммируем все несохранённые данные из архива в памяти foreach (var row in rows.Where(t => t.Id == Guid.Empty).ToArray()) { foreach (var unitTestData in row.UnitTestData) { var totalData = newDataTotal.GetUnitTestData(unitTestData.Key); totalData.ResultsCount += unitTestData.Value.ResultsCount; } } // И добавляем к ним сохранённые данные из архива в базе var repository = context.GetLimitDataForUnitTestRepository(); var archiveFromDb = repository.GetGroupedByUnitTest(Now.Date); foreach (var row in archiveFromDb) { var totalData = newDataTotal.GetUnitTestData(row.Item1); totalData.ResultsCount += row.Item2; } DataTotal = newDataTotal; // Рассчитаем суммарные данные за всю историю OverallArchive = GetUsedLimitsTotalData(context); }