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)); }