public static void UpdateActualDeliveryDate(Int32 id, DateTime actualDelivery)
 {
     using (PharmacyContainer db = new PharmacyContainer())
     {
         ReplenishmentOrder order = GetOrder(id, db);
         order.ActualDelivery = actualDelivery;
         db.SaveChanges();
     }
 }
        internal static ReplenishmentOrder GetOrder(Int32 id, PharmacyContainer db)
        {
            ReplenishmentOrder result = (from o in db.ReplenishmentOrderSet where o.Id == id select o).FirstOrDefault();

            if (result == default(ReplenishmentOrder))
            {
                throw new ArgumentException(String.Format("Order with ID {0} not found", id.ToString()));
            }

            return(result);
        }
        public static ReplenishmentOrder GetOrderWithPositions(Int32 id)
        {
            using (PharmacyContainer db = new PharmacyContainer())
            {
                ReplenishmentOrder result = (from o in db.ReplenishmentOrderSet.Include("Positions") where o.Id == id select o).FirstOrDefault();

                if (result == default(ReplenishmentOrder))
                {
                    throw new ArgumentException(String.Format("Order with ID {0} not found", id.ToString()));
                }

                return(result);
            }
        }
 public static void Cancel(Int32 id)
 {
     using (PharmacyContainer db = new PharmacyContainer())
     {
         ReplenishmentOrder order = GetOrder(id, db);
         order.State = order.State.Cancel();
         foreach (Position p in order.Positions)
         {
             InitiateReplenishment(p.DrugPZN, p.Quantity, db);
         }
         // migrate all positions to new or existing open order
         db.SaveChanges();
     }
 }
 private static void ValidateOrderExists(Int32 orderId)
 {
     try
     {
         ReplenishmentOrder order = OrderService.GetOrder(orderId);
         if (order.State != OrderState.Finished)
         {
             throw new WebFaultException(System.Net.HttpStatusCode.NotFound);
         }
     }
     catch
     {
         throw new WebFaultException(System.Net.HttpStatusCode.NotFound);
     }
 }
 public static void ProceedToNextState(Int32 id)
 {
     using (PharmacyContainer db = new PharmacyContainer())
     {
         ReplenishmentOrder order = GetOrder(id, db);
         order.State = order.State.Next();
         if (order.State == OrderState.Finished)
         {
             foreach (Position p in order.Positions)
             {
                 DrugService.Replenish(p.Drug.PZN, p.Quantity, order.ActualDelivery, db);
             }
         }
         db.SaveChanges();
     }
 }
        private static String MarshalSingleForAll(ReplenishmentOrder order)
        {
            String marshalledResult = "";

            marshalledResult += order.Id;
            marshalledResult += DELIMITER;
            marshalledResult += order.State.ToString().ToUpper();
            if (order.State == OrderState.Ordered ||
                order.State == OrderState.Finished)
            {
                marshalledResult += DELIMITER;
                marshalledResult += Format(order.ExpectedDelivery);
            }
            if (order.State == OrderState.Finished)
            {
                marshalledResult += DELIMITER;
                marshalledResult += Format(order.ActualDelivery);
            }
            return(marshalledResult);
        }
 private static void CreatePositionOnOpenOrNewOrder(Drug drug, int quantity, PharmacyContainer db)
 {
     if (OpenOrdersAvailable(db))
     {
         ReplenishmentOrder openOrder = GetOpenOrders(db).First();
         openOrder.Positions.Add(new Position
         {
             Drug     = drug,
             Order    = openOrder,
             Quantity = quantity
         });
     }
     else
     {
         ReplenishmentOrder newOrder = new ReplenishmentOrder();
         newOrder.Positions.Add(new Position
         {
             Drug     = drug,
             Order    = newOrder,
             Quantity = quantity
         });
         newOrder = db.ReplenishmentOrderSet.Add(newOrder);
     }
 }