method() == 'POST') { return auth('api')->check() && auth('api')->user()->can('store', Package::class); } else { $Package = $this->route('Package'); return auth('api')->check() && $Package && auth('api')->user()->can('update', $Package); } } public function rules() { switch ($this->method()) { case 'POST': { return [ 'name' => 'required|max:250|unique:packages', 'unique_id' => 'nullable|max:250|unique:packages', 'note' => 'nullable', 'items' => 'required', 'udi' => 'required|max:100|unique:packages', ]; break; } case 'PUT': case 'PATCH': { $Package = $this->route('Package'); return [ 'name' => 'required|max:250|unique:packages,name,'.$Package->id, 'unique_id' => 'nullable|max:250|unique:packages,unique_id,'.$Package->id, 'note' => 'nullable', 'items' => 'required', 'udi' => 'required|max:100|unique:packages', ]; break; } default: break; } } }