public static IList <OrderInfoViewModel> GetAll(IUnitOfWork db, ILogService log, IWeightService weightService, int?batchId) { var filter = new OrderSearchFilter(); if (!batchId.HasValue) { filter.OrderStatus = OrderStatusEnumEx.AllUnshipped; } else { filter.OrderStatus = OrderStatusEnumEx.AllUnshippedWithShipped; filter.BatchId = batchId.Value; } filter.IncludeNotify = true; filter.IncludeMailInfos = true; IList <DTOOrder> orders = db.ItemOrderMappings .GetFilteredOrderInfos(weightService, filter) .ToList(); return(orders.Select(o => new OrderInfoViewModel(o)) .Where(o => !o.HasAllLabels && !o.HasMailLabels) .ToList()); }
public IHttpActionResult GetCustomerOrdersBy(string customerId, int year, int month, int pageNumber, OrderSearchFilter searchFilter) { if (searchFilter == null) { searchFilter = new OrderSearchFilter(); } var startTime = new DateTime(year, month, 1); var days = DateTime.DaysInMonth(year, month); var endTime = new DateTime(year, month, days, 23, 59, 59); //取得顧客該月訂單 var monthOrders = _customerRepository .GetAll() .Include(x => x.Orders) .FirstOrDefault(x => x.CustomerID == customerId)? .Orders .Where(x => x.OrderDate >= startTime && x.OrderDate <= endTime); //搜尋過濾 var filteredOrders = monthOrders?.Where(searchFilter.GetPredicate()); //[LinqKit] var result = Tools.AutoMapperConfig.Mapper //[AutoMapper] .Map <List <OrderDto> >(filteredOrders); // 投影到 Dto 物件隱藏導覽屬性 return(Ok(result.AsQueryable() .OrderBy(searchFilter.SortColumnName) //[DynamicQuery] .ToPagedList(pageNumber, pageSize: 5))); //[PagedList] }
public virtual ActionResult Manage(OrderSearchFilter filter) { ViewBag.WithoutAddButton = true; ViewBag.FilterBoxIsOpen = true; if (!Request.IsAjaxRequest()) { return(View(_OrderSrv.Get(filter))); } else { return(PartialView("Partials/_List", _OrderSrv.Get(filter))); } }
public async Task <Page <MarketOrder> > Search(OrderSearchFilter filter, int pageIndex) { var pageSize = 100; var pageResult = await _repo.SearchOrders(pageIndex, pageSize, filter); // We need to forget the last page result, otherwise the client will end up getting events for all orders await UnSubscribeFromAll(); foreach (var order in pageResult.Results) { await Subscribe(order.OrderId); } return(pageResult); }
public virtual ActionResult Manage(OrderSearchFilter filter) { ViewBag.WithoutAddButton = true; ViewBag.Stores = GetStores(); filter.UserId = User.GetUserId(); if (!Request.IsAjaxRequest()) { return(View(_OrderSrv.Get(filter))); } else { return(PartialView("Partials/_List", _OrderSrv.Get(filter))); } }
public ActionResult List(OrderSearchFilter filter = null) { if (filter == null) { filter = new OrderSearchFilter(); filter.pg = 1; } filter.PageSize = Define.PAGE_SIZE; filter.UserId = UserId; filter.Role = (CommonEnum.GroupOfCustomer)_customerService.GetEntityById(UserId).GroupId; ViewBag.FundFlowList = _orderService.GetFundFlowList(); ViewBag.OrderTypeList = _orderService.GetOrderTypeList(); Tuple <OrderSearchResult[], PagerEntity> orderListPaging = _orderService.GetOrderList(filter); ViewBag.OrderList = orderListPaging; return(View()); }
public PaginatedList <OrderView> Search(OrderSearchFilter filter, PaginationInfoView paginationInfo) { var query = _repository.Query <Order>(); if (filter.Id > 0) { query = query.Where(x => x.Id == filter.Id); } if (filter.CompanyId > 0) { query = query.Where(x => x.CompanyId == filter.CompanyId); } if (filter.ProductId > 0) { query = query.Where(x => x.ProductId == filter.ProductId); } if (filter.OrderStatus >= 0) { query = query.Where(x => x.OrderStatus == filter.OrderStatus); } query = query.Where(x => x.Status == Status.Active); var newQuery = query.Select(x => new OrderView { Id = x.Id, RefId = x.RefId, CompanyId = x.CompanyId, ProductId = x.ProductId, Status = x.Status, Description = x.Description, Discount = x.Discount, Total = x.Total, SetPaid = x.SetPaid, PaymentMethod = x.PaymentMethod, Currency = x.Currency }); PaginatedList <OrderView> paginatedList = new PaginatedList <OrderView>(paginationInfo, newQuery); return(paginatedList); }
public PagingListDetails <Order> Get(OrderSearchFilter filter) { Expression <Func <Order, bool> > conditions = x => true; if (filter != null) { if (filter.UserId != null) { conditions = conditions.And(x => x.UserId == filter.UserId); } if (filter.StoreId != null) { conditions = conditions.And(x => x.StoreId == filter.StoreId); } if (!string.IsNullOrWhiteSpace(filter.FromDateSh)) { var dt = PersianDateTime.Parse(filter.FromDateSh).ToDateTime(); conditions = conditions.And(x => x.InsertDateMi >= dt); } if (!string.IsNullOrWhiteSpace(filter.ToDateSh)) { var dt = PersianDateTime.Parse(filter.ToDateSh).ToDateTime(); conditions = conditions.And(x => x.InsertDateMi <= dt); } if (!string.IsNullOrWhiteSpace(filter.TransactionId)) { conditions = conditions.And(x => x.Payments.Any(p => p.TransactionId == filter.TransactionId)); } if (filter.OrderStatus != null) { conditions = conditions.And(x => x.OrderStatus == filter.OrderStatus); } } return(_orderRepo.Get(conditions, filter, x => x.OrderByDescending(i => i.OrderId), new System.Collections.Generic.List <Expression <Func <Order, object> > > { x => x.Store, x => x.ToAddress, x => x.User })); }
public async Task <Page <MarketOrder> > SearchOrders(int pageIndex, int pageSize, OrderSearchFilter filter) { var ordersQuery = _dbContext.Orders .Include(o => o.Item) .Include(o => o.Owner) .Where(o => o.State != OrderState.Cancelled) .Where(o => o.OrderType == filter.OrderType); if (!string.IsNullOrEmpty(filter.ItemId)) { ordersQuery = ordersQuery.Where(o => o.ItemId == filter.ItemId); } if (filter.MinPrice != null) { ordersQuery = ordersQuery.Where(o => o.Price >= filter.MinPrice.Value); } if (filter.MaxPrice != null) { ordersQuery = ordersQuery.Where(o => o.Price <= filter.MaxPrice.Value); } var count = ordersQuery.Count(); return(new Page <MarketOrder> { PageCount = (int)Math.Ceiling(count / (decimal)pageSize), PageIndex = pageIndex, ResultCount = count, Results = await ordersQuery.Skip(pageSize *(pageIndex - 1)).Take(pageSize).ToListAsync(), }); }
public static OrderHistoryViewModel GetByOrderId(IUnitOfWork db, ILogService log, IWeightService weightService, string orderId) { DTOOrder order = null; if (!String.IsNullOrEmpty(orderId)) { orderId = orderId.RemoveWhitespaces(); var orderNumber = OrderHelper.RemoveOrderNumberFormat(orderId); var filter = new OrderSearchFilter() { EqualOrderNumber = orderNumber, IncludeMailInfos = true, IncludeNotify = false, UnmaskReferenceStyles = false, }; order = db.ItemOrderMappings .GetFilteredOrdersWithItems(weightService, filter) .FirstOrDefault(); } if (order == null) { return(null); } else { var anotherBuyerOrders = new List <OrderLinkViewModel>(); if (!String.IsNullOrEmpty(order.BuyerEmail)) { anotherBuyerOrders = db.Orders.GetAll().Where(o => o.BuyerEmail == order.BuyerEmail) .ToList() .Where(o => o.Id != order.Id) .OrderByDescending(o => o.OrderDate) .Select(o => new OrderLinkViewModel() { OrderId = o.Id, OrderNumber = o.AmazonIdentifier, OrderDate = o.OrderDate, OrderStatus = o.OrderStatus, Market = o.Market, MarketplaceId = o.MarketplaceId }) .ToList(); } var comments = db.OrderComments.GetByOrderIdDto(order.Id).ToList(); var emails = db.Emails.GetAllWithOrder(new EmailSearchFilter() { OrderId = orderId }).ToList(); var returnRequests = db.ReturnRequests.GetAll() .OrderByDescending(r => r.CreateDate) .Select(r => new ReturnRequestDTO() { OrderNumber = r.OrderNumber, ReceiveDate = r.ReceiveDate, ItemName = r.ItemName, CustomerComments = r.CustomerComments, Details = r.Details, CreateDate = r.CreateDate, Reason = r.Reason }) .Where(r => r.OrderNumber == order.OrderId) .ToList(); var refundRequests = RefundViewModel.GetByOrderId(db, order.OrderId); var labels = order.ShippingInfos .Where(i => !String.IsNullOrEmpty(i.LabelPath) //|| i.LabelPurchaseResult != null //NOTE: in case when bag system shows user issue (keeped twice shippings with labels) ) .ToList(); labels.AddRange(order.MailInfos); var address = order.GetAddressDto(); var changes = db.OrderChangeHistories.GetByOrderIdDto(order.Id) .ToList() .OrderByDescending(ch => ch.ChangeDate) .Select(ch => new OrderChangeViewModel(ch, emails)) .Where(ch => ch.ChangeType != OrderChangeTypes.None) //NOTE: Skipped empty .ToList(); changes.Add(OrderChangeViewModel.BuildCreateOrderChange(order)); changes.AddRange(comments.Select(c => new OrderChangeViewModel(c)).ToList()); changes.AddRange(emails.Select(e => new OrderChangeViewModel(e)).ToList()); changes.AddRange(labels.SelectMany(l => OrderChangeViewModel.BuildChanges(l)).ToList()); changes.AddRange(refundRequests.Select(r => new OrderChangeViewModel(r)).ToList()); changes.AddRange(returnRequests.Select(r => new OrderChangeViewModel(r)).ToList()); return(new OrderHistoryViewModel { //Notes = string.Format("{0} {1}", order.OrderId, itemsNotes), OrderID = order.OrderId, OrderEntityId = order.Id, OrderDate = order.OrderDate, Market = (MarketType)order.Market, MarketplaceId = order.MarketplaceId, WeightLb = (int)Math.Floor(order.WeightD / 16), WeightOz = order.WeightD % 16, TotalPrice = order.TotalPrice, PriceCurrency = PriceHelper.FormatCurrency(order.TotalPriceCurrency), Items = order.Items.Select(i => new OrderItemViewModel(i, false, false)).ToList(), Changes = changes.OrderByDescending(c => c.ChangeDate).ToList(), AnotherOrders = anotherBuyerOrders, ToAddress = new AddressViewModel(address), }); } }
public async Task <PagedResponse <Order> > Search(OrderSearchFilter Filter, OrderDetailLevelEnum?Details = null, int Page = 0, int PageSize = 50) { List <RequestFilter> filter = new List <RequestFilter>(); if (Filter != null) { if (Filter.CreatedOnEnd.HasValue) { filter.Add(new RequestFilter() { field = "CreatedOnEnd", values = new List <string>() { Filter.CreatedOnEnd.Value.ToString("yyyy-MM-dd") } }); } if (Filter.CreatedOnStart.HasValue) { filter.Add(new RequestFilter() { field = "CreatedOnStart", values = new List <string>() { Filter.CreatedOnStart.Value.ToString("yyyy-MM-dd") } }); } if (Filter.CreatedOneDockEnd.HasValue) { filter.Add(new RequestFilter() { field = "CreatedOneDockEnd", values = new List <string>() { Filter.CreatedOneDockEnd.Value.ToString("yyyy-MM-dd") } }); } if (Filter.CreatedOneDockStart.HasValue) { filter.Add(new RequestFilter() { field = "CreatedOneDockStart", values = new List <string>() { Filter.CreatedOneDockStart.Value.ToString("yyyy-MM-dd") } }); } if (Filter.UpdatedOnEnd.HasValue) { filter.Add(new RequestFilter() { field = "UpdatedOnEnd", values = new List <string>() { Filter.UpdatedOnEnd.Value.ToString("yyyy-MM-dd") } }); } if (Filter.UpdatedOnStart.HasValue) { filter.Add(new RequestFilter() { field = "UpdatedOnStart", values = new List <string>() { Filter.UpdatedOnStart.Value.ToString("yyyy-MM-dd") } }); } if (Filter.idStatusFilter.HasValue) { filter.Add(new RequestFilter() { field = "idStatusFilter", values = new List <string>() { Filter.idStatusFilter.Value.ToString() } }); } if (Filter.OrderIdGreaterOrEqualThan.HasValue) { filter.Add(new RequestFilter() { field = "OrderIdGreaterOrEqualThan", values = new List <string>() { Filter.OrderIdGreaterOrEqualThan.Value.ToString() } }); } if (Filter.OrderIdLowerOrEqualThan.HasValue) { filter.Add(new RequestFilter() { field = "OrderIdLowerOrEqualThan", values = new List <string>() { Filter.OrderIdLowerOrEqualThan.Value.ToString() } }); } if (Filter.Paid.HasValue) { filter.Add(new RequestFilter() { field = "Paid", values = new List <string>() { Filter.Paid.Value.ToString() } }); } if (Filter.ShippedOnEnd.HasValue) { filter.Add(new RequestFilter() { field = "ShippedOnEnd", values = new List <string>() { Filter.ShippedOnEnd.Value.ToString() } }); } if (Filter.ShippedOnStart.HasValue) { filter.Add(new RequestFilter() { field = "ShippedOnStart", values = new List <string>() { Filter.ShippedOnStart.Value.ToString() } }); } if (!String.IsNullOrEmpty(Filter.SKU)) { filter.Add(new RequestFilter() { field = "SKU", values = new List <string>() { Filter.SKU } }); } if (Filter.OrderId.HasValue) { filter.Add(new RequestFilter() { field = "OrderId", values = new List <string>() { Filter.OrderId.Value.ToString() } }); } if (!String.IsNullOrEmpty(Filter.CustomerFilter)) { filter.Add(new RequestFilter() { field = "CustomerFilter", values = new List <string>() { Filter.CustomerFilter } }); } if (!String.IsNullOrEmpty(Filter.eBayUsername)) { filter.Add(new RequestFilter() { field = "eBayUsername", values = new List <string>() { Filter.eBayUsername } }); } if (Filter.idCountry.HasValue) { filter.Add(new RequestFilter() { field = "idCountry", values = new List <string>() { Filter.idCountry.Value.ToString() } }); } if (Filter.idCounty.HasValue) { filter.Add(new RequestFilter() { field = "idCounty", values = new List <string>() { Filter.idCounty.Value.ToString() } }); } if (Filter.idCurrency.HasValue) { filter.Add(new RequestFilter() { field = "idCurrency", values = new List <string>() { Filter.idCurrency.Value.ToString() } }); } if (Filter.idPaymentMethod.HasValue) { filter.Add(new RequestFilter() { field = "idPaymentMethod", values = new List <string>() { Filter.idPaymentMethod.Value.ToString() } }); } if (Filter.ModuleIDFilter.HasValue) { filter.Add(new RequestFilter() { field = "ModuleIDFilter", values = new List <string>() { Filter.ModuleIDFilter.Value.ToString() } }); } if (!String.IsNullOrEmpty(Filter.CustomerEmail)) { filter.Add(new RequestFilter() { field = "CustomerEmail", values = new List <string>() { Filter.CustomerEmail } }); } if (!String.IsNullOrEmpty(Filter.MarketplaceOrderId)) { filter.Add(new RequestFilter() { field = "MarketplaceOrderId", values = new List <string>() { Filter.MarketplaceOrderId } }); } if (!String.IsNullOrEmpty(Filter.eBaySellerUser)) { filter.Add(new RequestFilter() { field = "eBaySellerUser", values = new List <string>() { Filter.eBaySellerUser } }); } if (!String.IsNullOrEmpty(Filter.SellingManagerSalesRecordNumber)) { filter.Add(new RequestFilter() { field = "SellingManagerSalesRecordNumber", values = new List <string>() { Filter.SellingManagerSalesRecordNumber } }); } } List <ItemDetail> details = new List <ItemDetail>(); if (Details.HasValue) { if (Details.Value.HasFlag(OrderDetailLevelEnum.BillingAddress)) { details.Add(new ItemDetail() { field = "BillingAddress" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.ContactInformations)) { details.Add(new ItemDetail() { field = "ContactInformations" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.ExternalSellerReference)) { details.Add(new ItemDetail() { field = "ExternalSellerReference" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.History)) { details.Add(new ItemDetail() { field = "History" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.Payments)) { details.Add(new ItemDetail() { field = "Payments" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.Rows)) { details.Add(new ItemDetail() { field = "Rows" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.RowVariationAttributes)) { details.Add(new ItemDetail() { field = "RowVariationAttributes" }); } if (Details.Value.HasFlag(OrderDetailLevelEnum.ShippingAddress)) { details.Add(new ItemDetail() { field = "ShippingAddress" }); } } PagedRequest req = new PagedRequest() { Page = Page, PageSize = PageSize, filters = filter, details = details }; RestRequest elm = CreateRequest <PagedRequest>("Orders/GetOrders", Method.POST, req); IRestResponse <PagedResponse <Order> > resp = await Client.ExecutePostTaskAsync <PagedResponse <Order> >(elm); if (resp.StatusCode == HttpStatusCode.Unauthorized) { throw new UnauthorizedException(); } else if (resp.StatusCode != HttpStatusCode.OK) { throw new eDockAPIException(); } return(resp.Data); }
public async Task <PagedResponse <Order> > Search(OrderSearchFilter Filter, int Page = 0, int PageSize = 50) { return(await Search(Filter, null, Page, PageSize)); }
public static OrderQuickSummaryViewModel GetByOrderId(IUnitOfWork db, ILogService log, IWeightService weightService, string orderId) { DTOOrder order = null; if (!String.IsNullOrEmpty(orderId)) { orderId = orderId.RemoveWhitespaces(); var orderNumber = OrderHelper.RemoveOrderNumberFormat(orderId); var filter = new OrderSearchFilter() { EqualOrderNumber = orderNumber, IncludeMailInfos = true, IncludeNotify = false, UnmaskReferenceStyles = false, }; order = db.ItemOrderMappings .GetFilteredOrdersWithItems(weightService, filter) .FirstOrDefault(); } if (order == null) { return(null); } else { var refundRequestList = RefundViewModel.GetByOrderId(db, order.OrderId); var shippingPrice = 0M; var activeShippings = order.ShippingInfos.Where(i => i.IsActive).ToList(); activeShippings.AddRange(order.MailInfos); activeShippings = activeShippings.OrderBy(sh => sh.LabelPurchaseDate).ToList(); //if (order.MailInfos.Any(m => !m.LabelCanceled) // && order.ShippingInfos.All(sh => String.IsNullOrEmpty(sh.LabelPath) || sh.LabelCanceled)) //{ // var mailShipping = order.MailInfos.OrderBy(m => m.LabelPurchaseDate).FirstOrDefault(l => !l.LabelCanceled); // activeShippings = new List<OrderShippingInfoDTO>() { mailShipping }; //} //var mainActiveShipping = activeShippings.FirstOrDefault(); //var shipmentProviderType = mainActiveShipping != null ? mainActiveShipping.ShipmentProviderType : (int)Core.Models.Settings.ShipmentProviderType.Stamps; var address = order.GetAddressDto(); return(new OrderQuickSummaryViewModel() { OrderID = order.OrderId, OrderEntityId = order.Id, OrderDate = order.OrderDate, OrderStatus = order.OrderStatus, Market = (MarketType)order.Market, MarketplaceId = order.MarketplaceId, OrderIsOnHold = order.OnHold, WeightLb = (int)Math.Floor(order.WeightD / 16), WeightOz = order.WeightD % 16, TrackingNumbers = activeShippings.Where(t => !String.IsNullOrEmpty(t.TrackingNumber)).Select(t => new LabelViewModel() { TrackingNumber = t.TrackingNumber, Carrier = t.ShippingMethod.CarrierName, FromType = (LabelFromType)t.LabelFromType, TrackingStatusSource = t.TrackingStateSource, ShippingDate = t.ShippingDate, EstDeliveryDate = t.EstimatedDeliveryDate, ActualDeliveryDate = t.ActualDeliveryDate, LastTrackingStateUpdateDate = t.LastTrackingRequestDate, IsCanceled = t.CancelLabelRequested || t.LabelCanceled, DeliveryStatusMessage = GetDeliveryStatus(order.LatestDeliveryDate, t.ActualDeliveryDate, t.TrackingStateDate, t.DeliveredStatus == (int)DeliveredStatusEnum.DeliveredToSender), ShippingMethodName = t.ShippingMethod != null ? ShippingUtils.PrepareMethodNameToDisplay(t.ShippingMethod.Name, t.DeliveryDaysInfo) : string.Empty, ShippingProviderName = ShipmentProviderHelper.GetName((ShipmentProviderType)t.ShipmentProviderType), }).ToList(), PriceCurrency = PriceHelper.FormatCurrency(order.TotalPriceCurrency), ExpectedShipDate = order.LatestShipDate, ExpectedDeliveryDate = order.LatestDeliveryDate, //ShippingMethodName = mainActiveShipping != null && mainActiveShipping.ShippingMethod != null // ? ShippingUtils.PrepareMethodNameToDisplay(mainActiveShipping.ShippingMethod.Name, mainActiveShipping.DeliveryDaysInfo) : string.Empty, //ShippingProviderName = ShipmentProviderHelper.GetName((ShipmentProviderType)shipmentProviderType), //ShippingDate = activeShippings.Where(i => i.IsActive).Max(i => i.ShippingDate), //DeliveryDate = mainActiveShipping != null ? mainActiveShipping.ActualDeliveryDate : null, //DeliveryStatus = GetDeliveryStatus(order.LatestDeliveryDate, // mainActiveShipping != null ? mainActiveShipping.ActualDeliveryDate : null, // mainActiveShipping != null ? mainActiveShipping.TrackingStateDate : null, // mainActiveShipping != null ? mainActiveShipping.DeliveredStatus == (int)DeliveredStatusEnum.DeliveredToSender : false), Refunds = refundRequestList, Items = order.Items.Select(i => new OrderItemViewModel(i, false, false)).ToList(), ToAddress = address, }); } }
static void Main(string[] args) { Search = new OrderSearchFilter<Order>(CreateSampleData()); //create search DateTime from = new DateTime(2015, 1, 1); //Search.TxNumber = 2; Search.TransactionDateFrom = from; Search.MaxBigTicketItemPrice = 1000m; Search.SortDir = "Desc"; Search.SortField = "TxNumber"; //Search.CustomerName = "Jill"; //Run search Console.WriteLine("Running search..."); Search.GetResults(); Console.WriteLine("Result transaction numbers:"); foreach (var o in Search.Results) Console.WriteLine(o.TxNumber); Console.ReadKey(); }