Esempio n. 1
0
 public GetUserInformationReportResultDto Execute(GetUserInformationReportDto dto)
 {
     return(new GetUserInformationReportResultDto
     {
         Status = true,
         Object = unit.User.GetUserInformationReport(dto)
     });
 }
Esempio n. 2
0
        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
            });
        }