本文整理汇总了C#中ShippingStatus类的典型用法代码示例。如果您正苦于以下问题:C# ShippingStatus类的具体用法?C# ShippingStatus怎么用?C# ShippingStatus使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ShippingStatus类属于命名空间,在下文中一共展示了ShippingStatus类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetBestCustomersReport
/// <summary>
/// Get best customers
/// </summary>
/// <param name="createdFromUtc">Order created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Order created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Order shipment status; null to load all records</param>
/// <param name="orderBy">1 - order by order total, 2 - order by number of orders</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <returns>Report</returns>
public virtual IPagedList<BestCustomerReportLine> GetBestCustomersReport(DateTime? createdFromUtc,
DateTime? createdToUtc, OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, int orderBy,
int pageIndex = 0, int pageSize = 214748364)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query1 = from c in _customerRepository.Table
join o in _orderRepository.Table on c.Id equals o.CustomerId
where (!createdFromUtc.HasValue || createdFromUtc.Value <= o.CreatedOnUtc) &&
(!createdToUtc.HasValue || createdToUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(!c.Deleted)
select new { c, o };
var query2 = from co in query1
group co by co.c.Id into g
select new
{
CustomerId = g.Key,
OrderTotal = g.Sum(x => x.o.OrderTotal),
OrderCount = g.Count()
};
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.OrderTotal);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.OrderCount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
var tmp = new PagedList<dynamic>(query2, pageIndex, pageSize);
return new PagedList<BestCustomerReportLine>(tmp.Select(x => new BestCustomerReportLine
{
CustomerId = x.CustomerId,
OrderTotal = x.OrderTotal,
OrderCount = x.OrderCount
}),
tmp.PageIndex, tmp.PageSize, tmp.TotalCount);
}
示例2: GetCountryReport
/// <summary>
/// Get "order by country" report
/// </summary>
/// <param name="storeId">Store identifier</param>
/// <param name="os">Order status</param>
/// <param name="ps">Payment status</param>
/// <param name="ss">Shipping status</param>
/// <param name="startTimeUtc">Start date</param>
/// <param name="endTimeUtc">End date</param>
/// <returns>Result</returns>
public virtual IList<OrderByCountryReportLine> GetCountryReport(int storeId, OrderStatus? os,
PaymentStatus? ps, ShippingStatus? ss, DateTime? startTimeUtc, DateTime? endTimeUtc)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
query = query.Where(o => !o.Deleted);
if (storeId > 0)
query = query.Where(o => o.StoreId == storeId);
if (orderStatusId.HasValue)
query = query.Where(o => o.OrderStatusId == orderStatusId.Value);
if (paymentStatusId.HasValue)
query = query.Where(o => o.PaymentStatusId == paymentStatusId.Value);
if (shippingStatusId.HasValue)
query = query.Where(o => o.ShippingStatusId == shippingStatusId.Value);
if (startTimeUtc.HasValue)
query = query.Where(o => startTimeUtc.Value <= o.CreatedOnUtc);
if (endTimeUtc.HasValue)
query = query.Where(o => endTimeUtc.Value >= o.CreatedOnUtc);
var report = (from oq in query
group oq by oq.BillingAddress.CountryId into result
select new
{
CountryId = result.Key,
TotalOrders = result.Count(),
SumOrders = result.Sum(o => o.OrderTotal)
}
)
.OrderByDescending(x => x.SumOrders)
.Select(r => new OrderByCountryReportLine
{
CountryId = r.CountryId,
TotalOrders = r.TotalOrders,
SumOrders = r.SumOrders
})
.ToList();
return report;
}
示例3: GetBestCustomersReport
public IPagedList<BestCustomerReportLine> GetBestCustomersReport(DateTime? createdFromUtc, DateTime? createdToUtc,
OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, int orderBy, int pageIndex = 0, int pageSize = int.MaxValue)
{
int? orderStatusId = null;
if (os.HasValue) orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue) paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue) shippingStatusId = (int)ss.Value;
var query1 = from c in _customerRepository.Table
join o in _orderRepository.Table on c.Id equals o.CustomerId
where !c.Deleted && !o.Deleted &&
(!createdFromUtc.HasValue || o.CreatedOnUtc >= createdFromUtc.Value) &&
(!createdToUtc.HasValue || o.CreatedOnUtc <= createdToUtc.Value) &&
(!orderStatusId.HasValue || o.OrderStatusId == orderStatusId.Value) &&
(!paymentStatusId.HasValue || o.PaymentStatusId == paymentStatusId.Value) &&
(!shippingStatusId.HasValue || o.ShippingStatusId == shippingStatusId.Value)
select new { c, o };
var query = from co in query1
group co by co.c.Id into g
select new BestCustomerReportLine // khác chỗ này
{
CustomerId = g.Key,
OrderTotal = g.Sum(x => x.o.OrderTotal),
OrderCount = g.Count()
};
switch(orderBy)
{
case 1:
query = query.OrderByDescending(p => p.OrderTotal);
break;
case 2:
query = query.OrderByDescending(p => p.OrderCount);
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
var result = new PagedList<BestCustomerReportLine>(query, pageIndex, pageSize);
return result;
}
示例4: GetOrderAverageReportLine
/// <summary>
/// Get order average report
/// </summary>
/// <param name="os">Order status</param>
/// <param name="ps">Payment status</param>
/// <param name="ss">Shipping status</param>
/// <param name="startTimeUtc">Start date</param>
/// <param name="endTimeUtc">End date</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="ignoreCancelledOrders">A value indicating whether to ignore cancelled orders</param>
/// <returns>Result</returns>
public virtual OrderAverageReportLine GetOrderAverageReportLine(OrderStatus? os,
PaymentStatus? ps, ShippingStatus? ss, DateTime? startTimeUtc, DateTime? endTimeUtc,
string billingEmail, bool ignoreCancelledOrders = false)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
query = query.Where(o => !o.Deleted);
if (ignoreCancelledOrders)
{
int cancelledOrderStatusId = (int)OrderStatus.Cancelled;
query = query.Where(o => o.OrderStatusId != cancelledOrderStatusId);
}
if (orderStatusId.HasValue)
query = query.Where(o => o.OrderStatusId == orderStatusId.Value);
if (paymentStatusId.HasValue)
query = query.Where(o => o.PaymentStatusId == paymentStatusId.Value);
if (shippingStatusId.HasValue)
query = query.Where(o => o.ShippingStatusId == shippingStatusId.Value);
if (startTimeUtc.HasValue)
query = query.Where(o => startTimeUtc.Value <= o.CreatedOnUtc);
if (endTimeUtc.HasValue)
query = query.Where(o => endTimeUtc.Value >= o.CreatedOnUtc);
if (!String.IsNullOrEmpty(billingEmail))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail));
var item = (from oq in query
group oq by 1 into result
select new { OrderCount = result.Count(), OrderTaxSum = result.Sum(o => o.OrderTax), OrderTotalSum = result.Sum(o => o.OrderTotal) }
).Select(r => new OrderAverageReportLine(){ SumTax = r.OrderTaxSum, CountOrders=r.OrderCount, SumOrders = r.OrderTotalSum}).FirstOrDefault();
item = item ?? new OrderAverageReportLine() { CountOrders = 0, SumOrders = decimal.Zero, SumTax = decimal.Zero };
return item;
}
示例5: ProfitReport
/// <summary>
/// Get profit report
/// </summary>
/// <param name="storeId">Store identifier; pass 0 to ignore this parameter</param>
/// <param name="vendorId">Vendor identifier; pass 0 to ignore this parameter</param>
/// <param name="orderId">Order identifier; pass 0 to ignore this parameter</param>
/// <param name="billingCountryId">Billing country identifier; 0 to load all orders</param>
/// <param name="paymentMethodSystemName">Payment method system name; null to load all records</param>
/// <param name="startTimeUtc">Start date</param>
/// <param name="endTimeUtc">End date</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Shipping status; null to load all records</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="billingLastName">Billing last name. Leave empty to load all records.</param>
/// <param name="orderNotes">Search in order notes. Leave empty to load all records.</param>
/// <returns>Result</returns>
public virtual decimal ProfitReport(int storeId = 0, int vendorId = 0,
int billingCountryId = 0, int orderId = 0, string paymentMethodSystemName = null,
OrderStatus? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null,
DateTime? startTimeUtc = null, DateTime? endTimeUtc = null,
string billingEmail = null, string billingLastName = "", string orderNotes = null)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
//We cannot use String.IsNullOrEmpty() in SQL Compact
bool dontSearchEmail = String.IsNullOrEmpty(billingEmail);
//We cannot use String.IsNullOrEmpty() in SQL Compact
bool dontSearchLastName = String.IsNullOrEmpty(billingLastName);
//We cannot use String.IsNullOrEmpty() in SQL Compact
bool dontSearchOrderNotes = String.IsNullOrEmpty(orderNotes);
//We cannot use String.IsNullOrEmpty() in SQL Compact
bool dontSearchPaymentMethods = String.IsNullOrEmpty(paymentMethodSystemName);
var query = from orderItem in _orderItemRepository.Table
join o in _orderRepository.Table on orderItem.OrderId equals o.Id
where (storeId == 0 || storeId == o.StoreId) &&
(orderId == 0 || orderId == o.Id) &&
(billingCountryId ==0 || (o.BillingAddress != null && o.BillingAddress.CountryId == billingCountryId)) &&
(dontSearchPaymentMethods || paymentMethodSystemName == o.PaymentMethodSystemName) &&
(!startTimeUtc.HasValue || startTimeUtc.Value <= o.CreatedOnUtc) &&
(!endTimeUtc.HasValue || endTimeUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(vendorId == 0 || orderItem.Product.VendorId == vendorId) &&
//we do not ignore deleted products when calculating order reports
//(!p.Deleted)
(dontSearchEmail || (o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail))) &&
(dontSearchLastName || (o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.LastName) && o.BillingAddress.LastName.Contains(billingLastName))) &&
(dontSearchOrderNotes || o.OrderNotes.Any(oNote => oNote.Note.Contains(orderNotes)))
select orderItem;
var productCost = Convert.ToDecimal(query.Sum(orderItem => (decimal?)orderItem.OriginalProductCost * orderItem.Quantity));
var reportSummary = GetOrderAverageReportLine(
storeId: storeId,
vendorId: vendorId,
billingCountryId: billingCountryId,
orderId: orderId,
paymentMethodSystemName: paymentMethodSystemName,
os: os,
ps: ps,
ss: ss,
startTimeUtc: startTimeUtc,
endTimeUtc: endTimeUtc,
billingEmail: billingEmail,
billingLastName: billingLastName,
orderNotes: orderNotes);
var profit = reportSummary.SumOrders - reportSummary.SumShippingExclTax - reportSummary.SumTax - productCost;
return profit;
}
示例6: ProfitReport
/// <summary>
/// Get profit report
/// </summary>
/// <param name="startTimeUtc">Start date</param>
/// <param name="endTimeUtc">End date</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Shipping status; null to load all records</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <returns>Result</returns>
public virtual decimal ProfitReport(OrderStatus? os,
PaymentStatus? ps, ShippingStatus? ss, DateTime? startTimeUtc, DateTime? endTimeUtc,
string billingEmail)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
//We cannot use String.IsNullOrEmpty(billingEmail) in SQL Compact
bool dontSearchEmail = String.IsNullOrEmpty(billingEmail);
var query = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
where (!startTimeUtc.HasValue || startTimeUtc.Value <= o.CreatedOnUtc) &&
(!endTimeUtc.HasValue || endTimeUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(!p.Deleted) &&
(!pv.Deleted) &&
(dontSearchEmail || (o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail)))
select new { opv, pv };
var opvPrices = Convert.ToDecimal(query.Sum(o => (decimal?)o.opv.PriceExclTax));
var productCost = Convert.ToDecimal(query.Sum(o => (decimal?) o.pv.ProductCost * o.opv.Quantity));
var profit = opvPrices - productCost;
return profit;
}
示例7: SearchOrders
/// <summary>
/// Search orders
/// </summary>
/// <param name="startTime">Order start time; null to load all orders</param>
/// <param name="endTime">Order end time; null to load all orders</param>
/// <param name="os">Order status; null to load all orders</param>
/// <param name="ps">Order payment status; null to load all orders</param>
/// <param name="ss">Order shippment status; null to load all orders</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="orderGuid">Search by order GUID (Global unique identifier) or part of GUID. Leave empty to load all orders.</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <param name="storId">vendor id</param>
/// <returns>Order collection</returns>
public virtual IPagedList<Order> SearchOrders(DateTime? startTime, DateTime? endTime,
OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, string billingEmail,
string orderGuid, int pageIndex, int pageSize, int vendorId)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
//add by hz
if (vendorId > 0)
{
query = (from o in _orderRepository.Table
join opv in _opvRepository.Table on o.Id equals opv.OrderId
join pv in _pvRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
join pvendor in _productVendorRepository.Table on p.Id equals pvendor.ProductId
where pvendor.VendorId == vendorId
select o).Distinct() ;
}
//end by hz
if (startTime.HasValue)
query = query.Where(o => startTime.Value <= o.CreatedOnUtc);
if (endTime.HasValue)
query = query.Where(o => endTime.Value >= o.CreatedOnUtc);
if (orderStatusId.HasValue)
query = query.Where(o => orderStatusId.Value == o.OrderStatusId);
if (paymentStatusId.HasValue)
query = query.Where(o => paymentStatusId.Value == o.PaymentStatusId);
if (shippingStatusId.HasValue)
query = query.Where(o => shippingStatusId.Value == o.ShippingStatusId);
if (!String.IsNullOrEmpty(billingEmail))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail));
query = query.Where(o => !o.Deleted);
query = query.OrderByDescending(o => o.CreatedOnUtc);
var orders = query.ToList();
//filter by GUID. Filter in BLL because EF doesn't support casting of GUID to string
if (!String.IsNullOrEmpty(orderGuid))
orders = orders.FindAll(o => o.OrderGuid.ToString().ToLowerInvariant().Contains(orderGuid.ToLowerInvariant()));
return new PagedList<Order>(orders, pageIndex, pageSize);
}
示例8: BestSellersReport
/// <summary>
/// Get best sellers report
/// </summary>
/// <param name="startTime">Order start time; null to load all</param>
/// <param name="endTime">Order end time; null to load all</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Shipping status; null to load all records</param>
/// <param name="recordsToReturn">Records to return</param>
/// <param name="orderBy">1 - order by quantity, 2 - order by total amount</param>
/// <param name="showHidden">A value indicating whether to show hidden records</param>
/// <returns>Result</returns>
public virtual IList<BestsellersReportLine> BestSellersReport(DateTime? startTime,
DateTime? endTime, OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss,
int recordsToReturn = 5, int orderBy = 1, bool showHidden = false)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query1 = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
where (!startTime.HasValue || startTime.Value <= o.CreatedOnUtc) &&
(!endTime.HasValue || endTime.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(!p.Deleted) &&
(!pv.Deleted) &&
(showHidden || p.Published) &&
(showHidden || pv.Published)
select opv;
var query2 = from opv in query1
group opv by opv.ProductVariantId into g
select new
{
ProductVariantId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
};
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.TotalQuantity);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.TotalAmount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
if (recordsToReturn != 0 && recordsToReturn != int.MaxValue)
query2 = query2.Take(recordsToReturn);
var result = query2.ToList().Select(x =>
{
return new BestsellersReportLine()
{
ProductVariantId = x.ProductVariantId,
TotalAmount = x.TotalAmount,
TotalQuantity = x.TotalQuantity
};
}).ToList();
return result;
}
示例9: GetBestCustomersReport
/// <summary>
/// Get best customers
/// </summary>
/// <param name="createdFromUtc">Order created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Order created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Order shippment status; null to load all records</param>
/// <param name="orderBy">1 - order by order total, 2 - order by number of orders</param>
/// <returns>Report</returns>
public virtual IList<BestCustomerReportLine> GetBestCustomersReport(DateTime? createdFromUtc,
DateTime? createdToUtc, OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, int orderBy)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query1 = from c in _customerRepository.Table
join o in _orderRepository.Table on c.Id equals o.CustomerId
where (!createdFromUtc.HasValue || createdFromUtc.Value <= o.CreatedOnUtc) &&
(!createdToUtc.HasValue || createdToUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(!c.Deleted)
select new { c, o };
var query2 = from co in query1
group co by co.c.Id into g
select new
{
CustomerId = g.Key,
OrderTotal = g.Sum(x => x.o.OrderTotal),
OrderCount = g.Count()
};
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.OrderTotal);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.OrderCount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
//load 20 customers
query2 = query2.Take(20);
var result = query2.ToList().Select(x =>
{
return new BestCustomerReportLine()
{
CustomerId = x.CustomerId,
OrderTotal = x.OrderTotal,
OrderCount = x.OrderCount
};
}).ToList();
return result;
}
示例10: BestSellersReport
/// <summary>
/// Get best sellers report
/// </summary>
/// <param name="storeId">Store identifier; 0 to load all records</param>
/// <param name="vendorId">Vendor identifier; 0 to load all records</param>
/// <param name="categoryId">Category identifier; 0 to load all records</param>
/// <param name="manufacturerId">Manufacturer identifier; 0 to load all records</param>
/// <param name="createdFromUtc">Order created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Order created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Shipping status; null to load all records</param>
/// <param name="billingCountryId">Billing country identifier; 0 to load all records</param>
/// <param name="orderBy">1 - order by quantity, 2 - order by total amount</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <param name="showHidden">A value indicating whether to show hidden records</param>
/// <returns>Result</returns>
public virtual IPagedList<BestsellersReportLine> BestSellersReport(
int categoryId = 0, int manufacturerId = 0,
int storeId = 0, int vendorId = 0,
DateTime? createdFromUtc = null, DateTime? createdToUtc = null,
OrderStatus? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null,
int billingCountryId = 0,
int orderBy = 1,
int pageIndex = 0, int pageSize = int.MaxValue,
bool showHidden = false)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var builder = Builders<Order>.Filter;
var filter = builder.Where(o => !o.Deleted);
if (storeId > 0)
filter = filter & builder.Where(o => o.StoreId == storeId);
if (vendorId > 0)
{
filter = filter & builder
.Where(o => o.OrderItems
.Any(orderItem => orderItem.Product.VendorId == vendorId));
}
if (billingCountryId > 0)
filter = filter & builder.Where(o => o.BillingAddress != null && o.BillingAddress.CountryId == billingCountryId);
if (orderStatusId.HasValue)
filter = filter & builder.Where(o => o.OrderStatusId == orderStatusId.Value);
if (paymentStatusId.HasValue)
filter = filter & builder.Where(o => o.PaymentStatusId == paymentStatusId.Value);
if (shippingStatusId.HasValue)
filter = filter & builder.Where(o => o.ShippingStatusId == shippingStatusId.Value);
if (createdFromUtc.HasValue)
filter = filter & builder.Where(o => createdFromUtc.Value <= o.CreatedOnUtc);
if (createdToUtc.HasValue)
filter = filter & builder.Where(o => createdToUtc.Value >= o.CreatedOnUtc);
if(manufacturerId > 0)
filter = filter & builder.Where( o=> o.OrderItems.Any(x => x.Product.ProductManufacturers.Any(pm => pm.ManufacturerId == manufacturerId)));
if (categoryId > 0)
filter = filter & builder.Where(o => o.OrderItems.Any(x => x.Product.ProductCategories.Any(pc => pc.CategoryId == categoryId)));
var query = _orderRepository.Collection
.Aggregate()
.Match(filter)
.Unwind<Order, UnwindedOrderItem>(x => x.OrderItems)
.Group(x => x.OrderItems.ProductId, g => new BestsellersReportLine
{
ProductId = g.Key,
TotalAmount = g.Sum(x => x.OrderItems.PriceExclTax),
TotalQuantity = g.Sum(x => x.OrderItems.Quantity),
});
if (orderBy == 1)
{
query = query.SortByDescending(x => x.TotalQuantity);
}
else
{
query = query.SortByDescending(x => x.TotalAmount);
}
var query2 = query.ToListAsync().Result;
var result = new PagedList<BestsellersReportLine>(query2, pageIndex, pageSize);
return result;
}
示例11: SearchOrders
/// <summary>
/// Search orders
/// </summary>
/// <param name="startTime">Order start time; null to load all orders</param>
/// <param name="endTime">Order end time; null to load all orders</param>
/// <param name="os">Order status; null to load all orders</param>
/// <param name="ps">Order payment status; null to load all orders</param>
/// <param name="ss">Order shippment status; null to load all orders</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="orderGuid">Search by order GUID (Global unique identifier) or part of GUID. Leave empty to load all orders.</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <returns>Order collection</returns>
public virtual IPagedList<Order> SearchOrders(DateTime? startTime, DateTime? endTime,
OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss, string billingEmail,
string orderGuid, int pageIndex, int pageSize)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
if (startTime.HasValue)
query = query.Where(o => startTime.Value <= o.CreatedOnUtc);
if (endTime.HasValue)
query = query.Where(o => endTime.Value >= o.CreatedOnUtc);
if (orderStatusId.HasValue)
query = query.Where(o => orderStatusId.Value == o.OrderStatusId);
if (paymentStatusId.HasValue)
query = query.Where(o => paymentStatusId.Value == o.PaymentStatusId);
if (shippingStatusId.HasValue)
query = query.Where(o => shippingStatusId.Value == o.ShippingStatusId);
if (!String.IsNullOrEmpty(billingEmail))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail));
query = query.Where(o => !o.Deleted);
query = query.OrderByDescending(o => o.CreatedOnUtc);
var orders = query.ToList();
//filter by GUID. Filter in BLL because EF doesn't support casting of GUID to string
if (!String.IsNullOrEmpty(orderGuid))
orders = orders.FindAll(o => o.OrderGuid.ToString().ToLowerInvariant().Contains(orderGuid.ToLowerInvariant()));
return new PagedList<Order>(orders, pageIndex, pageSize);
}
示例12: BestSellersReport
/// <summary>
/// Get best sellers report
/// </summary>
/// <param name="storeId">Store identifier; 0 to load all records</param>
/// <param name="vendorId">Vendor identifier; 0 to load all records</param>
/// <param name="createdFromUtc">Order created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Order created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Shipping status; null to load all records</param>
/// <param name="billingCountryId">Billing country identifier; 0 to load all records</param>
/// <param name="orderBy">1 - order by quantity, 2 - order by total amount</param>
/// <param name="groupBy">1 - group by product variants, 2 - group by products</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <param name="showHidden">A value indicating whether to show hidden records</param>
/// <returns>Result</returns>
public virtual IPagedList<BestsellersReportLine> BestSellersReport(int storeId = 0, int vendorId = 0,
DateTime? createdFromUtc = null, DateTime? createdToUtc = null,
OrderStatus? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null,
int billingCountryId = 0,
int orderBy = 1, int groupBy = 1,
int pageIndex = 0, int pageSize = 2147483647,
bool showHidden = false)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query1 = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _productVariantRepository.Table on opv.ProductVariantId equals pv.Id
join p in _productRepository.Table on pv.ProductId equals p.Id
where (storeId == 0 || storeId == o.StoreId) &&
(!createdFromUtc.HasValue || createdFromUtc.Value <= o.CreatedOnUtc) &&
(!createdToUtc.HasValue || createdToUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId == o.ShippingStatusId) &&
(!o.Deleted) &&
(!p.Deleted) &&
(vendorId == 0 || p.VendorId == vendorId) &&
(!pv.Deleted) &&
(billingCountryId == 0 || o.BillingAddress.CountryId == billingCountryId) &&
(showHidden || p.Published) &&
(showHidden || pv.Published)
select opv;
IQueryable<BestsellersReportLine> query2 = groupBy == 1 ?
//group by product variants
from opv in query1
group opv by opv.ProductVariantId into g
select new BestsellersReportLine()
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
:
//group by products
from opv in query1
group opv by opv.ProductVariant.ProductId into g
select new BestsellersReportLine()
{
EntityId = g.Key,
TotalAmount = g.Sum(x => x.PriceExclTax),
TotalQuantity = g.Sum(x => x.Quantity),
}
;
switch (orderBy)
{
case 1:
{
query2 = query2.OrderByDescending(x => x.TotalQuantity);
}
break;
case 2:
{
query2 = query2.OrderByDescending(x => x.TotalAmount);
}
break;
default:
throw new ArgumentException("Wrong orderBy parameter", "orderBy");
}
var result = new PagedList<BestsellersReportLine>(query2, pageIndex, pageSize);
return result;
}
示例13: GetOrderAverageReportLine
/// <summary>
/// Get order average report
/// </summary>
/// <param name="storeId">Store identifier; pass 0 to ignore this parameter</param>
/// <param name="vendorId">Vendor identifier; pass 0 to ignore this parameter</param>
/// <param name="billingCountryId">Billing country identifier; 0 to load all orders</param>
/// <param name="orderId">Order identifier; pass 0 to ignore this parameter</param>
/// <param name="paymentMethodSystemName">Payment method system name; null to load all records</param>
/// <param name="os">Order status</param>
/// <param name="ps">Payment status</param>
/// <param name="ss">Shipping status</param>
/// <param name="startTimeUtc">Start date</param>
/// <param name="endTimeUtc">End date</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="billingLastName">Billing last name. Leave empty to load all records.</param>
/// <param name="ignoreCancelledOrders">A value indicating whether to ignore cancelled orders</param>
/// <param name="orderNotes">Search in order notes. Leave empty to load all records.</param>
/// <returns>Result</returns>
public virtual OrderAverageReportLine GetOrderAverageReportLine(int storeId = 0,
int vendorId = 0, int billingCountryId = 0,
int orderId = 0, string paymentMethodSystemName = null,
OrderStatus? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null,
DateTime? startTimeUtc = null, DateTime? endTimeUtc = null,
string billingEmail = null, string billingLastName = "",
bool ignoreCancelledOrders = false, string orderNotes = null)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
query = query.Where(o => !o.Deleted);
if (storeId > 0)
query = query.Where(o => o.StoreId == storeId);
if (orderId > 0)
query = query.Where(o => o.Id == orderId);
if (vendorId > 0)
{
query = query
.Where(o => o.OrderItems
.Any(orderItem => orderItem.Product.VendorId == vendorId));
}
if (billingCountryId > 0)
query = query.Where(o => o.BillingAddress != null && o.BillingAddress.CountryId == billingCountryId);
if (ignoreCancelledOrders)
{
var cancelledOrderStatusId = (int)OrderStatus.Cancelled;
query = query.Where(o => o.OrderStatusId != cancelledOrderStatusId);
}
if (!String.IsNullOrEmpty(paymentMethodSystemName))
query = query.Where(o => o.PaymentMethodSystemName == paymentMethodSystemName);
if (orderStatusId.HasValue)
query = query.Where(o => o.OrderStatusId == orderStatusId.Value);
if (paymentStatusId.HasValue)
query = query.Where(o => o.PaymentStatusId == paymentStatusId.Value);
if (shippingStatusId.HasValue)
query = query.Where(o => o.ShippingStatusId == shippingStatusId.Value);
if (startTimeUtc.HasValue)
query = query.Where(o => startTimeUtc.Value <= o.CreatedOnUtc);
if (endTimeUtc.HasValue)
query = query.Where(o => endTimeUtc.Value >= o.CreatedOnUtc);
if (!String.IsNullOrEmpty(billingEmail))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail));
if (!String.IsNullOrEmpty(billingLastName))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.LastName) && o.BillingAddress.LastName.Contains(billingLastName));
if (!String.IsNullOrEmpty(orderNotes))
query = query.Where(o => o.OrderNotes.Any(on => on.Note.Contains(orderNotes)));
var grouping = (from oq in query
group oq by 1 into result
select result).AsEnumerable();
var item = (from result in grouping
select new
{
OrderCount = result.Count(),
OrderShippingExclTaxSum = result.Sum(o => o.OrderShippingExclTax),
OrderTaxSum = result.Sum(o => o.OrderTax),
OrderTotalSum = result.Sum(o => o.OrderTotal)
}
).Select(r => new OrderAverageReportLine
{
SumTax = r.OrderTaxSum,
CountOrders = r.OrderCount,
SumShippingExclTax = r.OrderShippingExclTaxSum,
SumOrders = r.OrderTotalSum
})
.FirstOrDefault();
// var item = (from oq in query
//group oq by 1 into result
//select new
//.........这里部分代码省略.........
示例14: SearchOrders
/// <summary>
/// Search orders
/// </summary>
/// <param name="storeId">Store identifier; 0 to load all orders</param>
/// <param name="vendorId">Vendor identifier; null to load all orders</param>
/// <param name="customerId">Customer identifier; 0 to load all orders</param>
/// <param name="productId">Product identifier which was purchased in an order; 0 to load all orders</param>
/// <param name="affiliateId">Affiliate identifier; 0 to load all orders</param>
/// <param name="billingCountryId">Billing country identifier; 0 to load all orders</param>
/// <param name="warehouseId">Warehouse identifier, only orders with products from a specified warehouse will be loaded; 0 to load all orders</param>
/// <param name="paymentMethodSystemName">Payment method system name; null to load all records</param>
/// <param name="createdFromUtc">Created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all orders</param>
/// <param name="ps">Order payment status; null to load all orders</param>
/// <param name="ss">Order shipment status; null to load all orders</param>
/// <param name="billingEmail">Billing email. Leave empty to load all records.</param>
/// <param name="billingLastName">Billing last name. Leave empty to load all records.</param>
/// <param name="orderNotes">Search in order notes. Leave empty to load all records.</param>
/// <param name="orderGuid">Search by order GUID (Global unique identifier) or part of GUID. Leave empty to load all orders.</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <returns>Orders</returns>
public virtual IPagedList<Order> SearchOrders(int storeId = 0,
int vendorId = 0, int customerId = 0,
int productId = 0, int affiliateId = 0, int warehouseId = 0,
int billingCountryId = 0, string paymentMethodSystemName = null,
DateTime? createdFromUtc = null, DateTime? createdToUtc = null,
OrderStatus? os = null, PaymentStatus? ps = null, ShippingStatus? ss = null,
string billingEmail = null, string billingLastName = "",
string orderNotes = null, string orderGuid = null,
int pageIndex = 0, int pageSize = int.MaxValue)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = _orderRepository.Table;
if (storeId > 0)
query = query.Where(o => o.StoreId == storeId);
if (vendorId > 0)
{
query = query
.Where(o => o.OrderItems
.Any(orderItem => orderItem.Product.VendorId == vendorId));
}
if (customerId > 0)
query = query.Where(o => o.CustomerId == customerId);
if (productId > 0)
{
query = query
.Where(o => o.OrderItems
.Any(orderItem => orderItem.Product.Id == productId));
}
if (warehouseId > 0)
{
var manageStockInventoryMethodId = (int)ManageInventoryMethod.ManageStock;
query = query
.Where(o => o.OrderItems
.Any(orderItem =>
//"Use multiple warehouses" enabled
//we search in each warehouse
(orderItem.Product.ManageInventoryMethodId == manageStockInventoryMethodId &&
orderItem.Product.UseMultipleWarehouses &&
orderItem.Product.ProductWarehouseInventory.Any(pwi => pwi.WarehouseId == warehouseId))
||
//"Use multiple warehouses" disabled
//we use standard "warehouse" property
((orderItem.Product.ManageInventoryMethodId != manageStockInventoryMethodId ||
!orderItem.Product.UseMultipleWarehouses) &&
orderItem.Product.WarehouseId == warehouseId))
);
}
if (billingCountryId > 0)
query = query.Where(o => o.BillingAddress != null && o.BillingAddress.CountryId == billingCountryId);
if (!String.IsNullOrEmpty(paymentMethodSystemName))
query = query.Where(o => o.PaymentMethodSystemName == paymentMethodSystemName);
if (affiliateId > 0)
query = query.Where(o => o.AffiliateId == affiliateId);
if (createdFromUtc.HasValue)
query = query.Where(o => createdFromUtc.Value <= o.CreatedOnUtc);
if (createdToUtc.HasValue)
query = query.Where(o => createdToUtc.Value >= o.CreatedOnUtc);
if (orderStatusId.HasValue)
query = query.Where(o => orderStatusId.Value == o.OrderStatusId);
if (paymentStatusId.HasValue)
query = query.Where(o => paymentStatusId.Value == o.PaymentStatusId);
if (shippingStatusId.HasValue)
query = query.Where(o => shippingStatusId.Value == o.ShippingStatusId);
if (!String.IsNullOrEmpty(billingEmail))
query = query.Where(o => o.BillingAddress != null && !String.IsNullOrEmpty(o.BillingAddress.Email) && o.BillingAddress.Email.Contains(billingEmail));
if (!String.IsNullOrEmpty(billingLastName))
//.........这里部分代码省略.........
示例15: GetAllOrderProductVariants
/// <summary>
/// Gets all order product variants
/// </summary>
/// <param name="orderId">Order identifier; null to load all records</param>
/// <param name="customerId">Customer identifier; null to load all records</param>
/// <param name="createdFromUtc">Order created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Order created date to (UTC); null to load all records</param>
/// <param name="os">Order status; null to load all records</param>
/// <param name="ps">Order payment status; null to load all records</param>
/// <param name="ss">Order shippment status; null to load all records</param>
/// <param name="loadDownloableProductsOnly">Value indicating whether to load downloadable products only</param>
/// <returns>Order collection</returns>
public virtual IList<OrderProductVariant> GetAllOrderProductVariants(int? orderId,
int? customerId, DateTime? createdFromUtc, DateTime? createdToUtc,
OrderStatus? os, PaymentStatus? ps, ShippingStatus? ss,
bool loadDownloableProductsOnly)
{
int? orderStatusId = null;
if (os.HasValue)
orderStatusId = (int)os.Value;
int? paymentStatusId = null;
if (ps.HasValue)
paymentStatusId = (int)ps.Value;
int? shippingStatusId = null;
if (ss.HasValue)
shippingStatusId = (int)ss.Value;
var query = from opv in _opvRepository.Table
join o in _orderRepository.Table on opv.OrderId equals o.Id
join pv in _pvRepository.Table on opv.ProductVariantId equals pv.Id
where (!orderId.HasValue || orderId.Value == 0 || orderId == o.Id) &&
(!customerId.HasValue || customerId.Value == 0 || customerId == o.CustomerId) &&
(!createdFromUtc.HasValue || createdFromUtc.Value <= o.CreatedOnUtc) &&
(!createdToUtc.HasValue || createdToUtc.Value >= o.CreatedOnUtc) &&
(!orderStatusId.HasValue || orderStatusId == o.OrderStatusId) &&
(!paymentStatusId.HasValue || paymentStatusId.Value == o.PaymentStatusId) &&
(!shippingStatusId.HasValue || shippingStatusId.Value == o.ShippingStatusId) &&
(!loadDownloableProductsOnly || pv.IsDownload) &&
!o.Deleted
orderby o.CreatedOnUtc descending, opv.Id
select opv;
var orderProductVariants = query.ToList();
return orderProductVariants;
}