public void EditOrder() { var orderController = UnityConfig.Resolve <OrderController>(); BaseCriteriaDTO criteria = new BaseCriteriaDTO { Filter = "", OrderAsc = true, OrderBy = "", PageNumber = 1 }; var postResult = orderController.PostGetOrders(criteria).Result; var listOrders = postResult as OkNegotiatedContentResult <PagedListDTO <OrderDTO> >; //Modify Entity var entity = listOrders.Content.CurrentPageItems[0]; entity.shipAdress = "sarasa"; entity.Details[0].Quantity = 10000; entity.Details[0].Discount = 10000; var result = orderController.PostEditOrder(entity).Result; var posRes = result as OkResult; Assert.IsNotNull(posRes); }
public Task <PagedListDTO <OrderDTO> > GetOrders(BaseCriteriaDTO criteria) { //PageSize int pageSize = Convert.ToInt32(ConfigurationManager.AppSettings["pageSize"].ToString()); //filter (expression in DB) Expression <Func <Order, bool> > filterExpression = x => x.Id != "0"; //Azure cosmos db not support method toString, and we use the next Workarround int filterAmount = 0; int.TryParse(criteria.Filter, out filterAmount); if (!string.IsNullOrWhiteSpace(criteria.Filter)) { filterExpression = filterExpression.Join( x => (x.OrderCustomer != null && x.OrderCustomer.ContactName.ToUpper().Contains(criteria.Filter.ToUpper())) || x.ShipAdress.ToUpper().Contains(criteria.Filter.ToUpper()) || x.ShipCity.ToUpper().Contains(criteria.Filter.ToUpper()) || x.ShipCountry.ToUpper().Contains(criteria.Filter.ToUpper()) || x.ShipPostalCode.ToUpper().Contains(criteria.Filter.ToUpper()) || x.TotalAmount == filterAmount ); } //order by Expression <Func <Order, object> >[] orderByExpressions = this.GetOrderByExpressions_Orders(criteria.OrderBy); Tuple <List <Order>, int> q = repositoryOrders.GetAllAsync(criteria.PageNumber, pageSize, filterExpression, criteria.OrderAsc, orderByExpressions); //get total entities int totalItems = q.Item2; //parse to DTO List <OrderDTO> items = q.Item1.ToList().Select(m => new OrderDTO { Id = Convert.ToInt32(m.Id), Created_At = m.Created_At, //OrderCustomer = m.OrderCustomer, Details = m.OrdersDetails.Where(x => x != null).Select(a => new OrderDetailDTO { Id = Convert.ToInt32(a.OrderDetailId), OrderId = Convert.ToInt32(m.Id), Discount = a.Discount, ProductId = a.ProductId, ProductName = (a.ProductSold != null ? a.ProductSold.Name : ""), Quantity = a.Quantity }).ToList(), shipAdress = m.ShipAdress, shipCity = m.ShipCity, shipCountry = m.ShipCountry, shipPostalCode = m.ShipPostalCode, TotalAmount = m.TotalAmount }).ToList(); var res = new PagedListDTO <OrderDTO>(totalItems, pageSize, items, criteria.PageNumber); return(Task.FromResult(res)); }
public async Task <IHttpActionResult> PostGetOrders([FromBody] BaseCriteriaDTO criteria) { if (criteria == null) { return(BadRequest()); } PagedListDTO <OrderDTO> result = await orderService.GetOrders(criteria); return(Ok(result)); }
public void GetOrdersFilterShipCity() { var orderController = UnityConfig.Resolve <OrderController>(); BaseCriteriaDTO criteria = new BaseCriteriaDTO { Filter = "testAddress", OrderAsc = true, OrderBy = "", PageNumber = 1 }; var postResult = orderController.PostGetOrders(criteria).Result; var listOrders = postResult as OkNegotiatedContentResult <PagedListDTO <OrderDTO> >; Assert.IsTrue(listOrders.Content.TotalItems > 0); }
public void GetOrdersWithoutFilter() { var repo = UnityConfig.Resolve <IDocumentDbRepository <Order> >(); var orderController = UnityConfig.Resolve <OrderController>(); BaseCriteriaDTO criteria = new BaseCriteriaDTO { Filter = "", OrderAsc = true, OrderBy = "", PageNumber = 1 }; var postResult = orderController.PostGetOrders(criteria).Result; var listOrders = postResult as OkNegotiatedContentResult <PagedListDTO <OrderDTO> >; Assert.IsTrue(listOrders.Content.TotalItems > 0); }