/**
  * Register any other events for your application.
  *
  * @param  \Illuminate\Contracts\Events\Dispatcher  $events
  * @return void
  */
 public function boot(DispatcherContract $events)
 {
     parent::boot($events);
     GenericContainer::creating(function ($genericContainer) {
         return $genericContainer->isCreating();
     });
     GenericContainer::saving(function ($genericContainer) {
         return $genericContainer->isSaving();
     });
     InboundOrder::creating(function ($inboundOrder) {
         return $inboundOrder->isCreating();
     });
     InboundOrderDetail::creating(function ($inboundOrderDetail) {
         return $inboundOrderDetail->isCreating();
     });
     Inventory::creating(function ($inventory) {
         return $inventory->isCreating();
     });
     Inventory::saving(function ($inventory) {
         return $inventory->isSaving();
     });
     Item::creating(function ($item) {
         return $item->isCreating();
     });
     JobExperience::creating(function ($jobExperience) {
         return $jobExperience->isCreating();
     });
     JobStatus::creating(function ($jobStatus) {
         return $jobStatus->isCreating();
     });
     Location::creating(function ($location) {
         return $location->isCreating();
     });
     Location::saving(function ($location) {
         return $location->isSaving();
     });
     Pallet::creating(function ($pallet) {
         return $pallet->isCreating();
     });
     Pallet::saving(function ($pallet) {
         return $pallet->isSaving();
     });
     PerformanceTally::creating(function ($performanceTally) {
         return $performanceTally->isCreating();
     });
     User::creating(function ($user) {
         return $user->isCreating();
     });
 }
 /**
  * Implement create($input)
  */
 public function create($input)
 {
     return InboundOrder::create($input);
 }
 /**
  * Implement update($id, $input)
  */
 public function update($id, $input)
 {
     $po = InboundOrder::find($id);
     $updatedPo = $po->update($input);
     //TODO find a way to automate which $name's are Additional, should not be hardcoded here.
     //TODO Found it!, if we subtract original attribute names from attributes, we get this list of Additional names
     $name = 'RouteNumber';
     if (isset($input[$name])) {
         $additional = InboundOrderAdditional::where('objectID', $id)->where('Name', $name)->first();
         if (isset($additional)) {
             $additional->update(['Value' => $input[$name]]);
         } else {
             InboundOrderAdditional::create(['objectID' => $id, 'Name' => $name, 'Value' => $input[$name]]);
         }
     }
     return $updatedPo;
 }