public function update(UserAuth $user, $id) { $user = \App\Models\User::find($id) ?: $this->notFoundJson(); $this->validateJson(request()->all(), $rules = ['first_name' => 'alpha|max:60', 'last_name' => 'alpha|max:60', 'email' => 'email|unique:users,email,' . $id . ',id', 'phone' => 'max:30', 'password' => 'sometimes|required|min:3|max:20|confirmed', 'password_confirmation' => 'sometimes|required']); $user->update(reqOnlyIfExists(array_keys($rules))); return $user; }
public function update(UserAuth $user, $id) { $product = \App\Models\Product::find($id) ?: $this->notFoundJson(); $this->validateJson(request()->all(), $rules = ['title' => 'sometimes|required|title|min:4|max:60', 'subtitle' => 'title|min:4|max:120', 'description' => 'sometimes|required', 'price' => 'sometimes|required|numeric', 'stock_initial' => 'integer', 'stock_available' => 'integer', 'starts' => 'sometimes|required|date_format:d/m/Y', 'ends' => 'sometimes|required|date_format:d/m/Y', 'is_active' => 'sometimes|required|boolean']); $data = reqOnlyIfExists(array_keys($rules)); if (isset($data['starts'])) { $data['starts'] = \DateTime::createFromFormat('d/m/Y', $data['starts']); } if (isset($data['ends'])) { $data['ends'] = \DateTime::createFromFormat('d/m/Y', $data['ends']); } $dataAll = array_merge($product->toArray(), $data); if (is_string($dataAll['starts'])) { $dataAll['starts'] = \DateTime::createFromFormat('d/m/Y', $dataAll['starts']); } if (is_string($dataAll['ends'])) { $dataAll['ends'] = \DateTime::createFromFormat('d/m/Y', $dataAll['ends']); } // price: if (isset($data['price']) && $data['price'] < 0) { $this->errorValidateJson(['price' => 'price must be positive']); } // stock: if (isset($data['stock_initial']) && $data['stock_initial'] < $dataAll['stock_available']) { $this->errorValidateJson(['stock_initial' => 'stock initial must be greater or equal than stock available']); } if (isset($data['stock_available']) && $data['stock_available'] > $dataAll['stock_initial']) { $this->errorValidateJson(['stock_available' => 'stock available must be lower or equal than stock initial']); } // start / end dates: if (isset($data['starts']) && $data['starts'] >= $dataAll['ends']) { $this->errorValidateJson(['starts' => 'start date must be before ends date']); } if (isset($data['ends']) && $data['ends'] < $dataAll['starts']) { $this->errorValidateJson(['ends' => 'end date must be after start date']); } $product->update($data); return $product; }