Saya mencoba membuat daftar pesanan di Pengontrol khusus di aplikasi NopCommerce/MVC dan saya ingin daftar tersebut diurutkan berdasarkan Tanggal Pembuatan dan berisi total pesanan untuk tanggal tersebut dan mengonversi nilai-nilai ini ke format string.
Masalahnya adalah saya tidak ingin ActionResult menampilkan kotak dalam tampilan seperti di Admin/Orders. Yang saya inginkan hanyalah Daftar semua pesanan berbayar antara model.StartDate dan model.EndDate yang berisi dua parameter "CreationDateUtc" dan TotalOrders". Saya hanya memerlukan daftar yang berisi data pesanan yang diurutkan berdasarkan tanggal pembuatan.
Jika saya memilih StartDate 29-03-2014 dan EndDate 2014-04-02, output yang saya inginkan akan terlihat seperti ini:
Cantumkan OrdersTotalList dengan parameter CreationDateUtc dan TotalOrders
CreationDateUtc "2014-03-29"
TotalOrders "562"
CreationDateUtc "2014-03-30"
TotalOrders "485"
CreationDateUtc "2014-03-31"
TotalOrders "733"
CreationDateUtc "2014-04-01"
TotalOrders "729"
CreationDateUtc "2014-04-02"
TotalOrders "681
"
Saya mencoba mengakses data dengan implementasi OrderList dari OrderController di CustomController saya. Masalahnya adalah metode ini selalu mengembalikan 10 objek padahal jumlah total pesanan dalam rentang waktu ini adalah 58. Saat men-debug Total = pesanan.TotalCount sebenarnya menampilkan 58 pesanan sebagai satu nilai int). Model grid juga digunakan di sini tetapi saya sebenarnya tidak memerlukan model grid, saya hanya memerlukan data dari database:
Daftar Publik OrderList(perintah GridCommand, model OrderListModel, OrderModel Omodel) {
DateTime S = new DateTime(2014, 3, 29); //-- Dates for testing
DateTime E = new DateTime(2014, 4, 02);
model.StartDate = S;
model.EndDate = E;
DateTime? startDateValue = (model.StartDate == null) ? null
: (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.StartDate.Value, _dateTimeHelper.CurrentTimeZone);
DateTime? endDateValue = (model.EndDate == null) ? null
: (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.EndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);
OrderStatus? orderStatus = model.OrderStatusId > 0 ? (OrderStatus?)(model.OrderStatusId) : null;
PaymentStatus? paymentStatus = model.PaymentStatusId > 0 ? (PaymentStatus?)(model.PaymentStatusId) : null;
ShippingStatus? shippingStatus = model.ShippingStatusId > 0 ? (ShippingStatus?)(model.ShippingStatusId) : null;
//load orders
var orders = _orderService.SearchOrders(startDateValue, endDateValue, orderStatus,
paymentStatus, shippingStatus, model.CustomerEmail, model.OrderGuid, command.Page - 1, command.PageSize);
var gridModel = new GridModel<OrderModel>
{
Data = orders.Select(x =>
{
var customerCurrency = _currencyService.GetCurrencyByCode(x.CustomerCurrencyCode);
var totalInCustomerCurrency = _currencyService.ConvertCurrency(x.OrderTotal, x.CurrencyRate);
return new OrderModel()
{
Id = x.Id,
OrderTotal = _priceFormatter.FormatPrice(totalInCustomerCurrency, true, customerCurrency),
OrderStatus = x.OrderStatus.GetLocalizedEnum(_localizationService, _workContext),
PaymentStatus = x.PaymentStatus.GetLocalizedEnum(_localizationService, _workContext),
ShippingStatus = x.ShippingStatus.GetLocalizedEnum(_localizationService, _workContext),
CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc)
};
}),
Total = orders.TotalCount <-- Returns all orders (58) but as an integer
};
var reportSummary = _orderReportService.GetOrderAverageReportLine
(orderStatus, paymentStatus, shippingStatus, startDateValue, endDateValue, model.CustomerEmail);
var profit = _orderReportService.ProfitReport
(orderStatus, paymentStatus, shippingStatus, startDateValue, endDateValue, model.CustomerEmail);
var aggregator = new OrderModel()
{
aggregatorprofit = _priceFormatter.FormatPrice(profit, true, false),
aggregatortax = _priceFormatter.FormatPrice(reportSummary.SumTax, true, false),
aggregatortotal = _priceFormatter.FormatPrice(reportSummary.SumOrders, true, false)
//aggregatordates =
};
List<Order> TotalProductsSold = new List<Order>();
foreach (var o in orders)
{
TotalProductsSold.Add(o);
}
return TotalProductsSold.ToList(); //<-- returns 10 orders containing all order info
}
Jika saya memahaminya dengan benar untuk mengarsipkannya, saya harus mencari terlebih dahulu melalui pesanan dan apakah Status Pembayarannya Dibayar. Kemudian buat Daftar di Metode dari atas. Perulangan foreach dapat mengulangi pesanan dan menambahkan pesanan ke Daftar, meskipun saya perlu menentukan saya hanya ingin Tanggal Penciptaan dan TotalOrders untuk tanggal itu sebagai parameter dalam Daftar.
Saya tahu ini tidak benar tetapi saya membayangkan hal serupa. Masalahnya adalah saya memerlukan daftar objek pesanan dan bukan satu objek dengan satu nilai:
List<OrderModel> OrdersTotalList = new List<OrderModel>();
foreach (var o in orders)
{
OrderModel OM = new OrderModel(OM.OrderTotal, OM.CreatedOn);
OrdersTotalList.Add(OM);
}
return OrdersTotalList; //--
Apakah saya sepenuhnya setuju atau ini pendekatan yang tepat? Saya berharap seseorang yang lebih akrab dengan NopCommerce mengetahui lebih banyak tentang ini.
Maaf untuk semua teksnya
Terima kasih