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