Exemple #1
0
        public int PopOrder(int staffId)
        {
            var user = (from i in Workforce where i.ID == staffId select i).FirstOrDefault();

            if (user != null)
            {
                var id = user.Workload.Dequeue();
                Log.LogInfo($"Staff {staffId} has completed order {id}");
                if (PendingOrders.Count > 0)
                {
                    PushOrder(PendingOrders.Dequeue());
                }
                return(id);
            }
            return(0);
        }
Exemple #2
0
        public void AppendShipment(int orderId)
        {
            var freeStaff = (from i in workforce where i.Value.WorkInProgress < 3 select i.Value).FirstOrDefault();

            if (freeStaff != null)
            {
                workforce[freeStaff.ID].WorkInProgress++;
                workforce[freeStaff.ID].Orders.Add(orderId);
                Log.LogInfo($"Assigned order {orderId} to {freeStaff.ID} for delivery.");
            }
            else
            {
                PendingOrders.Enqueue(orderId);
                Log.LogInfo($"No taxi staff available, order {orderId} is pending for delivery.");
            }
        }
Exemple #3
0
 public void PushOrder(int orderId)
 {
     //(from i in Workforce where i.Capacity > i.Workload.Count select i).First().Workload.Enqueue(orderId);
     if (!unitOfWork.OrdersRepository.GetByID(orderId).IsCancelled)
     {
         for (int i = 0; i < Workforce.Count; i++)
         {
             if (Workforce[i].Capacity > Workforce[i].Workload.Count)
             {
                 Workforce[i].Workload.Enqueue(orderId);
                 Log.LogInfo($"Order {orderId} has been assigned to {Workforce[i].Name} ({Workforce[i].ID})");
                 return;
             }
         }
         PendingOrders.Enqueue(orderId);
         Log.LogInfo($"There was no staff available, so order {orderId} is pending for assignment");
     }
     else
     {
         Log.LogError($"Cannot enqueue order {orderId} because it's canceled.");
     }
 }