ฉันกำลังพยายามสร้างรายการคำสั่งซื้อในคอนโทรลเลอร์ที่กำหนดเองในแอปพลิเคชัน NopCommerce/MVC และฉันต้องการให้รายการเรียงลำดับตามcreationDate และมีคำสั่งซื้อทั้งหมดสำหรับวันที่นั้น และแปลงค่าเหล่านี้เป็นรูปแบบสตริง
ประเด็นคือฉันไม่ต้องการให้ ActionResult แสดงตารางในมุมมองเหมือนในผู้ดูแลระบบ/คำสั่งซื้อ สิ่งที่ฉันต้องการคือรายการคำสั่งซื้อที่ชำระเงินทั้งหมดระหว่าง model.StartDate และ model.EndDate ที่มีพารามิเตอร์สองตัวคือ "CreationDateUtc" และ TotalOrders" ฉันแค่ต้องการรายการที่มีข้อมูลคำสั่งซื้อที่จัดเรียงตามวันที่สร้าง
ถ้าฉันเลือก StartDate 2014-03-29 และ EndDate 2014-04-02 ผลลัพธ์ที่ฉันต้องการจะมีลักษณะดังนี้:
แสดงรายการ OrderTotalList พร้อมพารามิเตอร์ CreationDateUtc และ 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
"
ฉันกำลังพยายามเข้าถึงข้อมูลโดยการใช้งาน OrderList จาก OrderController ใน CustomController ของฉัน ปัญหาคือเมธอดนี้จะส่งคืนออบเจ็กต์ 10 รายการเสมอเมื่อจำนวนคำสั่งซื้อทั้งหมดภายในระยะเวลานี้คือ 58 เมื่อทำการดีบั๊ก Total = orders.TotalCount จะแสดงคำสั่งซื้อ 58 รายการเป็นค่า int หนึ่งค่า) นอกจากนี้ยังมีการใช้ gridmodel ที่นี่ แต่ฉันไม่ต้องการ gridmodel จริงๆ ฉันแค่ต้องการข้อมูลจากฐานข้อมูล:
รายการสาธารณะ OrderList (คำสั่ง GridCommand, โมเดล 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
}
หากฉันเข้าใจถูกต้องเพื่อที่จะเก็บข้อมูลนี้ ฉันจะต้องค้นหาคำสั่งซื้อก่อน และสถานะการชำระเงินของพวกเขาได้รับการชำระเงินแล้วหรือไม่ จากนั้นสร้างรายการในวิธีการจากด้านบน การวนซ้ำ foreach สามารถวนซ้ำตามคำสั่งซื้อและเพิ่มคำสั่งซื้อลงในรายการ ทั้งหมดนี้แม้ว่าฉันต้องระบุว่าฉันต้องการ CreationDate และ TotalOrders สำหรับวันที่นั้นเป็นพารามิเตอร์ในรายการเท่านั้น
ฉันรู้ว่านี่ไม่ถูกต้อง แต่ฉันจินตนาการถึงสิ่งที่คล้ายกัน ประเด็นคือฉันต้องการรายการออบเจ็กต์ลำดับและไม่ใช่ออบเจ็กต์เดียวที่มีค่าเดียว:
List<OrderModel> OrdersTotalList = new List<OrderModel>();
foreach (var o in orders)
{
OrderModel OM = new OrderModel(OM.OrderTotal, OM.CreatedOn);
OrdersTotalList.Add(OM);
}
return OrdersTotalList; //--
ฉันสมบูรณ์หรือนี่เป็นแนวทางที่ถูกต้องหรือไม่? ฉันหวังว่าคนที่คุ้นเคยกับ NopCommerce มากกว่านี้จะรู้เรื่องนี้มากขึ้น
ขออภัยสำหรับข้อความทั้งหมด
ขอบคุณ