Buat daftar Pesanan khusus di NopCommerce

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


person WhoAmI    schedule 03.04.2014    source sumber
comment
Pertanyaan Anda agak sulit diikuti. Anda membuang istilah khusus untuk proyek ini saja yang tidak kami ketahui. Bisakah Anda menyingkat pertanyaan Anda?   -  person Botonomous    schedule 03.04.2014
comment
Maaf saya akan memperbarui posting dan menulis lebih banyak dalam hal kode daripada platform/proyek.   -  person WhoAmI    schedule 03.04.2014
comment
Silakan periksa ukuran halaman jaringan Telerik Anda, itu harus disetel ke 10 dalam tampilan   -  person Nitin Varpe    schedule 04.04.2014
comment
Terima kasih Nitin. Mungkin masalahnya tetapi masalahnya adalah saya tidak ingin menampilkan data dalam tampilan. Yang saya inginkan hanyalah membuat daftar dengan dua parameter. 1 untuk total pesanan berdasarkan tanggal dan 2 untuk tanggal sebenarnya (CreatedOnUtc). Pasti cara mudah untuk mendapatkan data ini dari database? Seperti 05-02-2014 - 200 pesanan, 06-04-2014 - 230 pesanan, dll.   -  person WhoAmI    schedule 07.04.2014


Jawaban (1)


Terselesaikan.

Untuk mendapatkan daftar lengkap pesanan, Anda dapat membuat konstruktor baru di IOrderService/OrderService yang bertipe Daftar, bukan IPagedList. Metode yang digunakan untuk mencari pesanan disebut "SearchOrders" dan bertipe IPagedList. IPagedList berisi properti PageSize yang menghasilkan hanya 10 pesanan.

Anda dapat membuat metode baru dengan implementasi yang sama seperti SearchOrders dan mengubah IPagedList menjadi Daftar, menghapus "int pageIndex" dan "int pageSize".

Kemudian gunakan:

            _orderService.YourNewConstructor(DateTime? startTime, DateTime? endTime,
            OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, string billingEmail,
            string orderGuid)
            {
                 some code...
            }

Ini akan memberi Anda akses ke semua pesanan.

person WhoAmI    schedule 07.04.2014