public async Task <ActionResult <DailyStatisticsViewModel> > GetDailyStatistcs()
        {
            if (User.Identity.IsAuthenticated == false)
            {
                return(BadRequest());
            }

            var ads = await _functionalUnitOfWork.AdRepository.All();

            var userId = User.NameIdentifier();

            var contacts = await _functionalUnitOfWork.ContactRepository.GetContacts(userId);

            var sents = await _functionalUnitOfWork.InvitationRepository.GetInvitationsBy(userId);

            var received = await _functionalUnitOfWork.InvitationRepository.GetInvitationsFor(userId);

            var daily = new DailyStatisticsViewModel
            {
                UserStatistics = new UserStatisticsViewModel
                {
                    NbOfUsers       = _userManager.Users.Count(),
                    NbOfUsersOnline = _userManager.Users.Where(u => u.IsOnline).Count()
                },

                AdsStatistics = new AdsStatisticsViewModel
                {
                    AdsCount  = ads.Count,
                    AdsOnline = ads.Count(a => a.StartDisplayTime <= DateTime.UtcNow && a.EndDisplayTime >= DateTime.UtcNow && a.IsValid)
                },

                OwnerStatistics = new OwnerStatisticsViewModel
                {
                    ContactsCount           = contacts.Count,
                    AdsCount                = ads.Count(a => a.OwnerId == userId),
                    InvitationSentCount     = sents.Count,
                    InvitationReceivedCount = received.Count
                }
            };

            return(Ok(daily));
        }
예제 #2
0
        public List <DailyStatisticsViewModel> GetDailyUserRegistrationChartData(int year, int month, int day)
        {
            List <DailyStatisticsViewModel> list = new List <DailyStatisticsViewModel>();

            for (int i = 0; i <= 23; i++)
            {
                DailyStatisticsViewModel model = new DailyStatisticsViewModel();
                model.Hour = i;
                if (i <= 9)
                {
                    model.HourString = String.Format("0{0}:00", i);
                }
                else
                {
                    model.HourString = String.Format("{0}:00", i);
                }
                var createdUser = _unitOfWork.UserRepository.FindBy(u => u.CreationDate.Day == day && u.CreationDate.Month == month && u.CreationDate.Year == year && u.CreationDate.Hour == i);

                model.Count = createdUser.Count();
                list.Add(model);
            }
            return(list);
        }
예제 #3
0
        public List <DailyStatisticsViewModel> GetDailyActiveClassifiedChartData(int year, int month, int day)
        {
            List <DailyStatisticsViewModel> list = new List <DailyStatisticsViewModel>();

            for (int i = 0; i <= 23; i++)
            {
                DailyStatisticsViewModel model = new DailyStatisticsViewModel();
                model.Hour = i;
                if (i <= 9)
                {
                    model.HourString = String.Format("0{0}:00", i);
                }
                else
                {
                    model.HourString = String.Format("{0}:00", i);
                }
                var activeClassifieds = _unitOfWork.ClassifiedRepository.FindBy(u => u.Status == AdStatusList.Active && u.PostingDate.Value.Day == day && u.PostingDate.Value.Month == month && u.PostingDate.Value.Year == year && u.PostingDate.Value.Hour == i);

                model.Count = activeClassifieds.Count();
                list.Add(model);
            }
            return(list);
        }