private Expression<Func<AppraiserOrder, bool>> GetPaymentHistoryFilter(PaymentHistoryFilter filter) { var completedStatus = OrderStatus.Completed.ToString(); var result = PredicateBuilder.True<AppraiserOrder>(); result = result.AndAlso(o => o.Order.OrderStatusId == completedStatus && o.Order.PaidDate.HasValue); if (_securityContext.CurrentUser.HasUserAnyRoles(RoleType.Appraiser)) { result = result.AndAlso(o => o.AppraiserId == _securityContext.CurrentAppraiserUser.Id && o.Order.AcceptedAppraiserUserId == _securityContext.CurrentAppraiserUser.Id); } if (_securityContext.CurrentUser.HasUserAnyRoles(RoleType.AppraisalCompanyAdmin)) { result = result.AndAlso(o => !o.Order.IsTestOrder); } if (_securityContext.CurrentUser.HasUserAnyRoles(RoleType.AppraisalCompanyAdmin, RoleType.CompanyAdminAndAppraiser)) { var branchesId = _securityContext.CurrentAppraiserUser.Company.Branches.Select(b => b.Id).ToList(); result = result.AndAlso(o => o.Order.AcceptedAppraiserUserId == o.AppraiserId && (o.AppraiserUser.Company.Id == _securityContext.CurrentAppraiserUser.Company.Id || branchesId.Any(b => b == o.AppraiserUser.Branch.Id))); } if (filter.DateFrom.HasValue) { result = result.AndAlso(o => EntityFunctions.TruncateTime(o.Order.PaidDate) >= EntityFunctions.TruncateTime(filter.DateFrom)); } if (filter.DateTo.HasValue) { result = result.AndAlso(o => EntityFunctions.TruncateTime(o.Order.PaidDate) <= EntityFunctions.TruncateTime(filter.DateTo)); } return result; }
public PaymentHistoryViewModel GetPaymentHistory(PaymentHistoryFilter filter) { var result = new PaymentHistoryViewModel(); var where = GetPaymentHistoryFilter(filter); var orderBy = GetSortingOrder(filter, PaymentHistoryColumnName.OrderNumber, false); int totalCount; result.Items = GetPaymentHistoryList(where, orderBy, filter.ItemsPerPage, filter.PageNumber, out totalCount); result.TotalItemsCount = totalCount; result.IsAppraiserColumnVisible = _securityContext.CurrentUser.HasUserAnyRoles(RoleType.AppraisalCompanyAdmin, RoleType.CompanyAdminAndAppraiser); return result; }
public ActionResult Index() { FiltersDetails.LastOrder.IsDesc = true; FiltersDetails.LastOrder.DefaultColumn = PaymentHistoryColumnName.PaidDate.ToString(); var filter = new PaymentHistoryFilter { ColumnName = FiltersDetails.LastOrder.ToEnum(PaymentHistoryColumnName.PaidDate), IsAsc = !FiltersDetails.LastOrder.IsDesc, ItemsPerPage = FiltersDetails.PaggingDetails.ElementsPerPage, PageNumber = FiltersDetails.PaggingDetails.CurrentPage, DateFrom = AssignmentFilters.ParseDateTime(FiltersDetails.GetFilterValue<PaymentHistoryFilterViewModel, DateTime?>(f => f.DateFrom)), DateTo = AssignmentFilters.ParseDateTime(FiltersDetails.GetFilterValue<PaymentHistoryFilterViewModel, DateTime?>(f => f.DateTo)) }; var model = _paymentHistoryService.GetPaymentHistory(filter); FiltersDetails.PaggingDetails.SetPageCount(model.TotalItemsCount).CheckElementOnPage(model.TotalItemsCount); return DashboardView("Index", model); }
private Func<IQueryable<AppraiserOrder>, IOrderedQueryable<AppraiserOrder>> GetSortingOrder(PaymentHistoryFilter filter, PaymentHistoryColumnName defaultColumn, bool defaultIsAsc) { var targetOrder = OrderItems.FirstOrDefault(e => e.ColumnName == filter.ColumnName && e.IsAsc == filter.IsAsc); if (targetOrder != null) { return targetOrder.SortingOrder; } return OrderItems.Single(e => e.ColumnName == defaultColumn && e.IsAsc == defaultIsAsc).SortingOrder; }