public virtual IActionResult ReportBestCustomersByNumberOfOrdersList(BestCustomersReportSearchModel searchModel) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers)) { return(AccessDeniedDataTablesJson()); } //prepare model var model = _reportModelFactory.PrepareBestCustomersReportListModel(searchModel); return(Json(model)); }
/// <summary> /// Prepare paged best customers report list model /// </summary> /// <param name="searchModel">Best customers report search model</param> /// <returns>Best customers report list model</returns> public virtual BestCustomersReportListModel PrepareBestCustomersReportListModel(BestCustomersReportSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter var startDateValue = !searchModel.StartDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.StartDate.Value, _dateTimeHelper.CurrentTimeZone); var endDateValue = !searchModel.EndDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.EndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1); var orderStatus = searchModel.OrderStatusId > 0 ? (OrderStatus?)searchModel.OrderStatusId : null; var paymentStatus = searchModel.PaymentStatusId > 0 ? (PaymentStatus?)searchModel.PaymentStatusId : null; var shippingStatus = searchModel.ShippingStatusId > 0 ? (ShippingStatus?)searchModel.ShippingStatusId : null; //get report items var reportItems = _customerReportService.GetBestCustomersReport(createdFromUtc: startDateValue, createdToUtc: endDateValue, os: orderStatus, ps: paymentStatus, ss: shippingStatus, orderBy: searchModel.OrderBy, pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize); //prepare list model var model = new BestCustomersReportListModel { Data = reportItems.Select(item => { //fill in model values from the entity var bestCustomersReportModel = new BestCustomersReportModel { CustomerId = item.CustomerId, OrderTotal = _priceFormatter.FormatPrice(item.OrderTotal, true, false), OrderCount = item.OrderCount }; //fill in additional values (not existing in the entity) var customer = _customerService.GetCustomerById(item.CustomerId); if (customer != null) { bestCustomersReportModel.CustomerName = customer.IsRegistered() ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest"); } return(bestCustomersReportModel); }), Total = reportItems.TotalCount }; return(model); }
/// <summary> /// Prepare best customers report search model /// </summary> /// <param name="searchModel">Best customers report search model</param> /// <returns>Best customers report search model</returns> protected virtual BestCustomersReportSearchModel PrepareBestCustomersReportSearchModel(BestCustomersReportSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //prepare available order, payment and shipping statuses _baseAdminModelFactory.PrepareOrderStatuses(searchModel.AvailableOrderStatuses); _baseAdminModelFactory.PreparePaymentStatuses(searchModel.AvailablePaymentStatuses); _baseAdminModelFactory.PrepareShippingStatuses(searchModel.AvailableShippingStatuses); //prepare page parameters searchModel.SetGridPageSize(); return(searchModel); }
public virtual async Task <IActionResult> ReportBestCustomersByOrderTotalList(BestCustomersReportSearchModel searchModel) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageCustomers)) { return(await AccessDeniedDataTablesJson()); } //prepare model var model = await _reportModelFactory.PrepareBestCustomersReportListModelAsync(searchModel); return(Json(model)); }
/// <summary> /// Prepare best customers report search model /// </summary> /// <param name="searchModel">Best customers report search model</param> /// <returns>Best customers report search model</returns> protected virtual BestCustomersReportSearchModel PrepareBestCustomersReportSearchModel(BestCustomersReportSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //prepare page parameters searchModel.SetGridPageSize(); return(searchModel); }