/**
  * Overwrite the parent boot method
  *
  * @return void
  */
 public static function boot()
 {
     parent::boot();
     MaterialInventoryItem::creating(function ($materialCostLog) {
         $materialCostLog->mat_inventory_added_user_id_fk = \Auth::user()->id;
         $materialCostLog->mat_inventory_modified_user_id_fk = \Auth::user()->id;
     });
     MaterialInventoryItem::updating(function ($materialCostLog) {
         $materialCostLog->mat_inventory_modified_user_id_fk = \Auth::user()->id;
     });
 }
 /**
  * Update Inventory Item from Editable PUT request
  *
  * @param Request $request
  * @param MaterialInventoryItem $material_inventory_item
  * @return $this
  */
 public function editableUpdate(Request $request, MaterialInventoryItem $material_inventory_item)
 {
     $this->authorize('edit_material_inventory');
     $validator = Validator::make($request->all(), ['pk' => 'required|integer|exists:material_inventory,material_inventory_id']);
     $validator->sometimes('value', 'required|integer|between:1,400', function ($input) {
         return $input->name == 'mat_inventory_bin_location';
     });
     $validator->sometimes('value', 'required|numeric|min:0', function ($input) {
         return $input->name == 'cost';
     });
     if ($validator->fails()) {
         return response('Invalid request', 422);
     }
     $field = $request->get('name');
     $material_inventory_item->{$field} = $request->get('value');
     $material_inventory_item->save();
     return response('Okay', 200);
 }
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     $availableMeters = MaterialInventoryItem::findOrFail(Request::get('material_inventory_id'))->unused_meters;
     return ['material_inventory_id' => 'required|exists:material_inventory,material_inventory_id', 'produced_kg' => 'required|numeric|min:0', 'produced_m' => 'required|numeric|min:0|max:' . $availableMeters, 'startup_waste_kg' => 'required|numeric|min:0', 'note' => 'string'];
 }