public GetUserInformationReportResultDto Execute(GetUserInformationReportDto dto) { return(new GetUserInformationReportResultDto { Status = true, Object = unit.User.GetUserInformationReport(dto) }); }
public GenericUsers GetUserInformationReport(GetUserInformationReportDto dto) { var nowStart = DateTime.Now.SubDays(0).ToUnix(); var users = ctx.Users.ToList(); List <DayUserReport> week = new List <DayUserReport>(); var lastWeekStart = DateTime.Now.SubDays(-DateTime.Now.DayOfWeek.ToInt() - 7); var lastWeekEnd = DateTime.Now.SubDays(-DateTime.Now.DayOfWeek.ToInt()); var weekUsers = users.Where(p => p.CreatedAt >= lastWeekStart.ToUnix() && p.CreatedAt <= lastWeekEnd.ToUnix()).ToList(); for (int i = 0; i < 7; i++) { var start = lastWeekStart.SubDays(i).ToUnix(); var end = lastWeekStart.SubDays(i + 1).ToUnix(); lastWeekStart = lastWeekStart.SubDays(1); week.Add( new DayUserReport { DayName = start.DayName(), NewUsers = weekUsers.Where(p => p.CreatedAt >= start && p.CreatedAt <= end).Count(), LoggedInUsers = weekUsers.Where(q => q.WorkTime.Any(p => p.CreatedAt >= start && p.CreatedAt <= end)).Count() }); } return(new GenericUsers { FemaleCount = users.Where(p => p.Gender == Genders.Female.ToInt()).Count(), MaleCount = users.Where(p => p.Gender == Genders.Male.ToInt()).Count(), UnKnownCount = users.Where(p => p.Gender == null).Count(), NewUsers = users.Where(p => p.CreatedAt > nowStart).Count(), UserCount = users.Count, BestUsers = 0, TotalLoggedIn = users.Where(p => p.WorkTime.Any(q => q.CreatedAt > nowStart)).Count(), WeekUserReport = week }); }