コード例 #1
0
        public IPagedList <PVLog> Search(PvLogSearchCriteria criteria, PaginationOptions options, WorkingUser user)
        {
            var query = _pvLogRepository.TableNoTracking;

            query = FilterLog(query, criteria, user);

            query = string.IsNullOrEmpty(options.Sort)
                ? query.OrderByDescending(x => x.LogDate)
                : query.SortBy(options.SortExpression);

            return(new PagedList <PVLog>(query, options.PageIndex, options.PageSize));
        }
コード例 #2
0
        public JsonList <PvLogModel> Search(
            [FromUri] PvLogSearchCriteria criteria,
            [FromUri] PaginationOptions options)
        {
            options = GetPaginationOptions(options);

            var logs = _pvLogService.Search(criteria, options, _workContext.User);

            return(new JsonList <PvLogModel>
            {
                Data = logs.ToModelList <PVLog, PvLogModel>(),
                TotalItems = logs.TotalCount
            });
        }
コード例 #3
0
        public void SearchLogSummary_ShouldReturnCorrectData_ForAllUser()
        {
            var criteria = new PvLogSearchCriteria
            {
                StartDate = new DateTime(2016, 12, 1),
                EndDate   = new DateTime(2017, 1, 31)
            };

            var result = _pvLogService.SearchLogSummary(criteria, new PaginationOptions {
                PageIndex = 1, PageSize = 10
            }, new WorkingUser());

            Assert.Greater(result.TotalCount, 0);

            Console.WriteLine("User \tMonth \tPrevious PV \tMonthly Rewarded \tAwarded \tBirthday \tOrdering \tRemaining");
            foreach (var log in result)
            {
                Console.WriteLine(string.Join(" \t", log.UserName, log.Month, log.PreviousSessionPv, log.MonthlyRewardedPv, log.AwardedPv, log.BirthdayRewardedPv, log.OrderingPv, log.RemainingPv));
            }
        }
コード例 #4
0
        private static IQueryable <PVLog> FilterLog(IQueryable <PVLog> query, PvLogSearchCriteria criteria, WorkingUser user)
        {
            if (criteria.StartDate.HasValue)
            {
                var startDate = criteria.StartDate.Value.StartOfDate();
                query = query.Where(x => x.LogDate >= startDate);
            }

            if (criteria.EndDate.HasValue)
            {
                var endDate = criteria.EndDate.Value.EndOfDate();
                query = query.Where(x => x.LogDate <= endDate);
            }

            if (criteria.UserId.HasValue)
            {
                query = query.Where(x => x.UserId == criteria.UserId);
            }

            return(query);
        }
コード例 #5
0
        public JsonList <PvLogSummaryModel> SearchLogSummary(
            [FromUri] PvLogSearchCriteria criteria,
            [FromUri] PaginationOptions options)
        {
            options = GetPaginationOptions(options);

            // If user don't have permission to view others' log; set userid to himself
            if (!_workContext.User.HasPermission(UserPermission.ViewUserPvLog))
            {
                criteria.UserId = _workContext.User.Id;
            }

            var logs = _pvLogService.SearchLogSummary(criteria, options, _workContext.User);
            var data = logs.ToModelList <PvLogSummaryDto, PvLogSummaryModel>().OrderBy(x => ConvertMonthYearToDateTime(x.Month));

            return(new JsonList <PvLogSummaryModel>
            {
                Data = data,
                TotalItems = logs.TotalCount
            });
        }
コード例 #6
0
        public IPagedList <PvLogSummaryDto> SearchLogSummary(PvLogSearchCriteria criteria, PaginationOptions options, WorkingUser user)
        {
            var query = _pvLogRepository.TableNoTracking;

            query = FilterLog(query, criteria, user);

            var result = query
                         .GroupBy(_dataHelper.GroupLogByUserAndMonthYear())
                         .Select(group => new PvLogSummaryDto
            {
                UserId             = group.Key.UserId,
                UserName           = group.Key.UserName,
                Month              = group.Key.MonthYear,
                MonthlyRewardedPv  = group.Where(x => x.LogTypeId == (short)PvLogType.MonthlyReward).Sum(x => (double?)x.PV) ?? 0,
                AwardedPv          = group.Where(x => x.LogTypeId == (short)PvLogType.Award).Sum(x => (double?)x.PV) ?? 0,
                OrderingPv         = group.Where(x => x.LogTypeId == (short)PvLogType.Ordering).Sum(x => (double?)x.PV) ?? 0,
                BirthdayRewardedPv = group.Where(x => x.LogTypeId == (short)PvLogType.Birthday).Sum(x => (double?)x.PV) ?? 0,
                RemainingPv        = group.OrderByDescending(x => x.LogDate).FirstOrDefault().CurrentPV ?? 0,
                PreviousSessionPv  = (group.FirstOrDefault().CurrentPV ?? 0) - group.FirstOrDefault().PV
            }).
                         OrderBy(x => x.UserName);

            return(new PagedList <PvLogSummaryDto>(result, options.PageIndex, options.PageSize));
        }