コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }