예제 #1
0
        public async Task <GeneralStatisticsViewModel> GetGeneralStatisticsAsync(DateTimeOffset dt)
        {
            var todayVisits = await _statistics
                              .AsNoTracking()
                              .LongCountAsync(p => p.VisitDate.Day == dt.Day);

            var yesterdayVisits = await _statistics
                                  .AsNoTracking()
                                  .LongCountAsync(p => p.VisitDate.Day == dt.AddDays(-1).Day);

            var iranDateTime = dt.GetDateTimeOffsetPart(DateTimeOffsetPart.IranLocalDateTime);

            var startDateYear = iranDateTime.GetPersianYearStartAndEndDates().StartDate;
            var endDateYear   = iranDateTime.GetPersianYearStartAndEndDates().EndDate;

            var startDateMonth = iranDateTime.GetPersianMonthStartAndEndDates().StartDate;
            var endDateMonth   = iranDateTime.GetPersianMonthStartAndEndDates().EndDate;

            var thisMonth = await _statistics
                            .AsNoTracking()
                            .LongCountAsync(p => p.VisitDate >= startDateMonth && p.VisitDate <= endDateMonth);

            var thisYear = await _statistics
                           .AsNoTracking()
                           .LongCountAsync(p => p.VisitDate >= startDateYear && p.VisitDate <= endDateYear);

            var uniqueVisitors = await _statistics
                                 .GroupBy(p => p.IpAddress)
                                 .AsNoTracking()
                                 .LongCountAsync();

            var peakDate = await _statistics
                           .GroupBy(p => p.VisitDate.Date)
                           .OrderByDescending(p => p.LongCount())
                           .AsNoTracking()
                           .FirstOrDefaultAsync();

            var lowDate = await _statistics
                          .GroupBy(p => p.VisitDate.Date)
                          .OrderBy(p => p.LongCount())
                          .AsNoTracking()
                          .FirstOrDefaultAsync();

            var viewModel = new GeneralStatisticsViewModel()
            {
                OnlineUsers     = 0,
                TodayVisits     = todayVisits,
                YesterdayVisits = yesterdayVisits,
                ThisMonthVisits = thisMonth,
                ThisYearVisits  = thisYear,
                PeakDate        = peakDate.Key.Date,
                LowDate         = lowDate.Key.Date,
                TotalVisits     = 0,
                UniqueVisitors  = uniqueVisitors,
            };

            return(viewModel);
        }
        public ActionResult <GeneralStatisticsViewModel> GetGeneralStatistics()
        {
            var generalStatisticsViewModel = new GeneralStatisticsViewModel()
            {
                NumberOfCompanies   = _companyService.CountCompanies(),
                NumberOfStudents    = _studentService.CountStudents(),
                NumberOfInternships = _internshipService.CountInternships()
            };

            return(Ok(generalStatisticsViewModel));
        }