public override void StartPacking(MachinePacking packingMachine) { var packingProcess = Processes .OfType <ProcessPacking>() .FirstOrDefault(); if (packingProcess == null) { throw new Exception("Order not for PACKING"); } switch (CurrentProcess) { case ProcessRouting routing: if (!routing.EndTime.HasValue) { throw new Exception($"Order is currently being routed on Router {routing.MachineRouter.Name}"); } if (!IsRoutingOnly) { throw new Exception("Order needs to be PRESSED and CLEANED before packing"); } routing.IsCurrent = false; packingProcess.StartTime = DateTime.Now; packingProcess.MachineId = packingMachine.Id; packingProcess.IsCurrent = true; break; case ProcessCleaning cleaning: if (!cleaning.EndTime.HasValue) { throw new Exception($"Order is currently being cleaned on Cleaning Machine {cleaning.MachineCleaning.Name}"); } cleaning.IsCurrent = false; packingProcess.StartTime = DateTime.Now; packingProcess.MachineId = packingMachine.Id; packingProcess.IsCurrent = true; break; case ProcessPacking packing: if (packing.EndTime.HasValue) { throw new Exception("Order has already been PACKED"); } break; default: throw new Exception("Order not valid for PACKING"); } }
public abstract void StartPacking(MachinePacking packingMachine);