/// <summary> /// Prepare paged bestseller list model /// </summary> /// <param name="searchModel">Bestseller search model</param> /// <returns>Bestseller list model</returns> public virtual BestsellerListModel PrepareBestsellerListModel(BestsellerSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } var bestsellers = GetBestsellersReport(searchModel); //prepare list model var model = new BestsellerListModel().PrepareToGrid(searchModel, bestsellers, () => { return(bestsellers.Select(bestseller => { //fill in model values from the entity var bestsellerModel = new BestsellerModel { ProductId = bestseller.ProductId, TotalQuantity = bestseller.TotalQuantity }; //fill in additional values (not existing in the entity) bestsellerModel.ProductName = _productService.GetProductById(bestseller.ProductId)?.Name; bestsellerModel.TotalAmount = _priceFormatter.FormatPrice(bestseller.TotalAmount, true, false); return bestsellerModel; })); }); return(model); }
/// <summary> /// Prepare paged bestseller list model /// </summary> /// <param name="searchModel">Bestseller search model</param> /// <returns>Bestseller list model</returns> public virtual BestsellerListModel PrepareBestsellerListModel(BestsellerSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter bestsellers var orderStatus = searchModel.OrderStatusId > 0 ? (OrderStatus?)searchModel.OrderStatusId : null; var paymentStatus = searchModel.PaymentStatusId > 0 ? (PaymentStatus?)searchModel.PaymentStatusId : null; if (_workContext.CurrentVendor != null) { searchModel.VendorId = _workContext.CurrentVendor.Id; } 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); //get bestsellers var bestsellers = _orderReportService.BestSellersReport(showHidden: true, createdFromUtc: startDateValue, createdToUtc: endDateValue, os: orderStatus, ps: paymentStatus, billingCountryId: searchModel.BillingCountryId, orderBy: 2, vendorId: searchModel.VendorId, categoryId: searchModel.CategoryId, manufacturerId: searchModel.ManufacturerId, storeId: searchModel.StoreId, pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize); //prepare list model var model = new BestsellerListModel { Data = bestsellers.Select(bestseller => { //fill in model values from the entity var bestsellerModel = new BestsellerModel { ProductId = bestseller.ProductId, TotalQuantity = bestseller.TotalQuantity }; //fill in additional values (not existing in the entity) bestsellerModel.ProductName = _productService.GetProductById(bestseller.ProductId)?.Name; bestsellerModel.TotalAmount = _priceFormatter.FormatPrice(bestseller.TotalAmount, true, false); return(bestsellerModel); }), Total = bestsellers.TotalCount }; return(model); }