// GET: Delivery public ActionResult Index() { // See if the service is available, else handle List <DeliveryInfo> deliveryList = null; try { ServiceFactory.Instance.UserService.Log("(" + DateTime.Now + ") Attempting to fetch all deliveries."); deliveryList = ExternalServiceFactory.Instance.DeliveryService.getAllDelivery(); } catch { ServiceFactory.Instance.UserService.Log("(" + DateTime.Now + ") Attempt to fetch all deliveries failed. Delivery service may be unavailable."); deliveryList = new List <DeliveryInfo>(); } DeliveryList list = new DeliveryList(); list.deliveryList = deliveryList; return(View(list)); }
public void AddProduct(Product product) { DeliveryList.Add(product); NumberOfProducts = DeliveryList.Count; SetCost(product); }
private async void DeliveryList_Refreshing(object sender, EventArgs e) { await GetDeliveriesFromServer(); DeliveryList.EndRefresh(); }
private async void DeliveryList_Refreshing(object sender, EventArgs e) { await GetDeliveriesFromServer(startDatePicker.Date, endDatePicker.Date); DeliveryList.EndRefresh(); }
public DeliveryListNumber GetDeliveries(int offset = 0, int limit = int.MaxValue, string needle = "", bool isCreatingDispatch = false, int dispatchId = 0) { if (UserHelper.IsAuthorize(new List <int> { (int)UserType.SuperAdmin, (int)UserType.Admin })) { dynamic allDeliveries; if (!isCreatingDispatch) { allDeliveries = (from deliveries in _context.Deliveries join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q from orders in q.DefaultIfEmpty() where (deliveries.Deleted_At == null && (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle))) select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit); } else { if (dispatchId == 0) { allDeliveries = (from deliveries in _context.Deliveries join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q from orders in q.DefaultIfEmpty() where (deliveries.Deleted_At == null && (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle)) && deliveries.If_Delivery_Dispatch_Balanced == false) select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit); } else { List <int> deliveryDispatchIds = _context.Deliveries_Dispatches.Where(d => d.Dispatch_Id == dispatchId && d.Deleted_At == null).Select(d => d.Delivery_Id).ToList(); allDeliveries = (from deliveries in _context.Deliveries join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q from orders in q.DefaultIfEmpty() where (deliveries.Deleted_At == null && (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle)) && (deliveries.If_Delivery_Dispatch_Balanced == false || deliveryDispatchIds.Contains(deliveries.Id))) select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit); } } //List<Delivery> listOfDeliveries = new List<Delivery>(); DeliveryListNumber result = new DeliveryListNumber(); try { List <DeliveryList> listOfDeliveryResult = new List <DeliveryList>(); foreach (var item in allDeliveries) { DeliveryList deliveryResult = new DeliveryList(); deliveryResult.Id = item.Delivery.Id; deliveryResult.OrderId = item.Delivery.Order_Id; deliveryResult.ATB = item.Order.ATB; deliveryResult.Container_Id = item.Order.Container_Id; deliveryResult.Date_Of_Delivery = item.Delivery.Date_Of_Delivery == null? string.Empty : item.Delivery.Date_Of_Delivery.ToString("dd-MM-yyyy"); deliveryResult.Name = item.Order.Name; deliveryResult.IsBalancedDeliveryDispatch = item.Delivery.If_Delivery_Dispatch_Balanced; deliveryResult.IsDifferentDeliveryOrder = item.Delivery.If_Differential_Delivery_Order; int deliveryId = item.Delivery.Id; // gdzie masz te przedmioty, któe znajdują się w magazynie? Wyszukaj je funkcją strzałkową. Tylko, te które mają ID Deliveries_Dispatches deliveryDispatch = _context.Deliveries_Dispatches.FirstOrDefault(d => d.Delivery_Id == deliveryId && d.Deleted_At == null); if (deliveryDispatch != null) { deliveryResult.IsDispatched = true; } else { deliveryResult.IsDispatched = false; } listOfDeliveryResult.Add(deliveryResult); } result.ListOfDeliveries = listOfDeliveryResult; result.NumberOfDeliveries = _deliveryManager.CountOfDeliveries(needle, isCreatingDispatch, dispatchId); return(result); } catch (Exception ex) { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)); } } else { throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "User don't have acces to this method")); } }
public ActionResult CheckList(string Date, int ShopID) { var d = Date.ToDate(); if (!d.HasValue) { return(new ContentResult()); } /* * var options = new DataLoadOptions(); * options.LoadWith((DeliveryListOrder x) => x.Order); * DB.LoadOptions = options; */ var list = DB.DeliveryLists.FirstOrDefault(x => x.Date.Date == d.Value.Date && x.ShopID == ShopID); /* * var dtl = (DateTime?)Session["CheckList_" + Date.Date.ToString("yy-mm-dd")]; * if (dtl.HasValue && DateTime.Now.Subtract(dtl.Value).TotalSeconds < 2) * { * return list; * } * else * { * Session["CheckList_" + Date.Date.ToString("yy-mm-dd")] = null; * } * Session["CheckList_" + Date.Date.ToString("yy-mm-dd")] = DateTime.Now; * */ var orders = DB.Orders.Where( x => x.DeliveryDate.HasValue && x.DeliveryDate.Value.Date == d.Value.Date && x.ShopID == ShopID) .ToList(); var poly = new PolygonList(ShopID); foreach (var order in orders) { if (order.OrderDelivery == null) { var delivery = new DeliveryAddress() { DeliveryType = (int)SectorTypes.CarSector }; DB.DeliveryAddresses.InsertOnSubmit(delivery); order.OrderDelivery = delivery; DB.SubmitChanges(); } if (order.OrderDelivery.DeliveryType == (int)SectorTypes.CarSector && !order.CarID.HasValue) { var cars = poly.GetDefaultCars(order); if (cars.Any()) { order.CarID = cars.First().ID; } } if (order.OrderDelivery.DeliveryType == (int)SectorTypes.CourierSector && !order.WorkerID.HasValue) { var couriers = poly.GetDefaultCouriers(order); if (couriers.Any()) { order.WorkerID = couriers.First().ID; } } } DB.SubmitChanges(); var stores = DB.Stores.Where(x => x.ShopStores.Any(z => z.ShopID == ShopID)).ToList(); if (list == null) { list = new DeliveryList() { Approved = false, Date = d.Value.Date, ShopID = ShopID }; DB.DeliveryLists.InsertOnSubmit(list); DB.SubmitChanges(); int add = 1; if (stores.Any() && orders.Any()) { var workers = orders.Where(x => x.WorkerID.HasValue).Select(x => x.WorkerID).Distinct().ToList(); foreach (var worker in workers) { DB.DeliveryListOrders.InsertAllOnSubmit( stores.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, StoreID = x.ID, OrderNum = index + add, Type = (int)SectorTypes.CourierSector, WorkerID = worker }) .ToList()); DB.SubmitChanges(); add += stores.Count; var workerOrders = orders.Where(x => x.WorkerID == worker).ToList(); DB.DeliveryListOrders.InsertAllOnSubmit( workerOrders.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, OrderID = x.ID, OrderNum = index + add }) .ToList()); DB.SubmitChanges(); add += workerOrders.Count; } var cars = orders.Where(x => x.CarID.HasValue).Select(x => x.CarID).Distinct().ToList(); foreach (var car in cars) { DB.DeliveryListOrders.InsertAllOnSubmit( stores.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, StoreID = x.ID, OrderNum = index + add, Type = (int)SectorTypes.CarSector, CarID = car }) .ToList()); add += stores.Count; var carOrders = orders.Where(x => x.CarID == car).ToList(); DB.DeliveryListOrders.InsertAllOnSubmit( carOrders.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, OrderID = x.ID, OrderNum = index + add }) .ToList()); DB.SubmitChanges(); add += carOrders.Count; } var another = orders.Where(x => !x.WorkerID.HasValue && !x.CarID.HasValue); DB.DeliveryListOrders.InsertAllOnSubmit( another.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, OrderID = x.ID, OrderNum = index + add }) .ToList()); DB.SubmitChanges(); } } else { var old = DB.DeliveryListOrders.Where(x => x.ListID == list.ID && x.Store == null && x.Order == null).ToList(); if (old.Any()) { DB.DeliveryListOrders.DeleteAllOnSubmit(old); DB.SubmitChanges(); } var newOrders = orders.Where(x => list.DeliveryListOrders.All(z => z.OrderID != x.ID)).ToList(); if (newOrders.Any()) { var min = list.DeliveryListOrders.Any() ? (list.DeliveryListOrders.Max(x => x.OrderNum) + 1) : 1; DB.DeliveryListOrders.InsertAllOnSubmit(newOrders.Select((x, index) => new DeliveryListOrder() { ListID = list.ID, OrderID = x.ID, OrderNum = min + index })); DB.SubmitChanges(); } var orderList = DB.DeliveryListOrders.Where(x => x.ListID == list.ID && (x.Order.CarID.HasValue || x.Order.WorkerID.HasValue)).ToList(); foreach (var listOrder in orderList) { if (listOrder.Order.OrderDelivery.DeliveryType == (int)SectorTypes.CarSector) { var storeCheck = DB.DeliveryListOrders.Where( x => x.StoreID.HasValue && x.ListID == list.ID && x.CarID.HasValue && !x.OrderID.HasValue && x.CarID == listOrder.Order.CarID); if (!storeCheck.Any()) { var stl = stores.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, StoreID = x.ID, OrderNum = listOrder.OrderNum - index - 1, Type = (int)SectorTypes.CarSector, CarID = listOrder.Order.CarID }) .ToList(); DB.DeliveryListOrders.InsertAllOnSubmit(stl); DB.SubmitChanges(); } } if (listOrder.Order.OrderDelivery.DeliveryType == (int)SectorTypes.CourierSector) { var storeCheck = DB.DeliveryListOrders.Where( x => x.StoreID.HasValue && x.ListID == list.ID && x.WorkerID.HasValue && !x.OrderID.HasValue && x.WorkerID == listOrder.Order.WorkerID); if (!storeCheck.Any()) { var stl = stores.Select( (x, index) => new DeliveryListOrder() { ListID = list.ID, StoreID = x.ID, OrderNum = listOrder.OrderNum - index - 1, Type = (int)SectorTypes.CourierSector, WorkerID = listOrder.Order.WorkerID }) .ToList(); DB.DeliveryListOrders.InsertAllOnSubmit(stl); DB.SubmitChanges(); } } } var emptyCheck = DB.DeliveryListOrders.Where( x => !x.OrderID.HasValue && x.ListID == list.ID && x.StoreID.HasValue).ToList(); foreach (var st in emptyCheck) { var suitable = DB.DeliveryListOrders.Any( x => x.OrderID.HasValue && x.ListID == list.ID && x.Order.OrderDelivery != null && x.Order.OrderDelivery.DeliveryType > 0 && (x.Order.OrderDelivery.DeliveryType == (int)SectorTypes.CarSector ? x.Order.CarID == st.CarID : x.Order.WorkerID == st.WorkerID)); if (!suitable) { DB.DeliveryListOrders.DeleteOnSubmit(st); } } DB.SubmitChanges(); } return(new ContentResult()); }