|
|
@@ -4,8 +4,9 @@ namespace App\Http\Requests;
|
|
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
use App\Enums\{
|
|
|
- UserTypeEnum,
|
|
|
- LanguageEnum
|
|
|
+ LanguageEnum,
|
|
|
+ UserStatusEnum,
|
|
|
+ UserTypeEnum
|
|
|
};
|
|
|
use Illuminate\Validation\Rule;
|
|
|
|
|
|
@@ -13,18 +14,32 @@ class UserRequest extends FormRequest
|
|
|
{
|
|
|
public function rules(): array
|
|
|
{
|
|
|
+ $emailUnique = 'unique:users,email';
|
|
|
+ $cpfUnique = 'unique:users,cpf';
|
|
|
+ if ($this->isMethod('put') && $this->route('id')) {
|
|
|
+ $emailUnique = 'unique:users,email,' . $this->route('id');
|
|
|
+ $cpfUnique = 'unique:users,cpf,' . $this->route('id');
|
|
|
+ }
|
|
|
+
|
|
|
$rules = [
|
|
|
- 'avatar' => 'sometimes|string|nullable',
|
|
|
- 'name' => 'sometimes|string|nullable',
|
|
|
- 'email' => 'sometimes|email|unique:users,email',
|
|
|
- 'password' => 'sometimes|string|nullable',
|
|
|
- 'type' => ['sometimes', Rule::enum(UserTypeEnum::class)],
|
|
|
- 'language' => ['sometimes', Rule::enum(LanguageEnum::class)],
|
|
|
+ 'avatar' => 'sometimes|string|nullable',
|
|
|
+ 'name' => 'sometimes|string|nullable',
|
|
|
+ 'email' => ['sometimes', 'email', $emailUnique],
|
|
|
+ 'password' => 'sometimes|string|nullable',
|
|
|
+ 'type' => ['sometimes', Rule::enum(UserTypeEnum::class)],
|
|
|
+ 'language' => ['sometimes', Rule::enum(LanguageEnum::class)],
|
|
|
+ 'cpf' => ['sometimes', 'nullable', 'string', 'max:14', $cpfUnique],
|
|
|
+ 'registration' => 'sometimes|nullable|string|max:50',
|
|
|
+ 'status' => ['sometimes', Rule::enum(UserStatusEnum::class)],
|
|
|
+ 'admission_date' => 'sometimes|nullable|date',
|
|
|
+ 'expiry_date' => 'sometimes|nullable|date',
|
|
|
+ 'position_id' => 'sometimes|nullable|integer|exists:positions,id',
|
|
|
+ 'sector_id' => 'sometimes|nullable|integer|exists:sectors,id',
|
|
|
];
|
|
|
|
|
|
if ($this->isMethod('post')) {
|
|
|
- $rules['name'] = 'required|string|max:255';
|
|
|
- $rules['email'] = 'required|email|unique:users,email';
|
|
|
+ $rules['name'] = 'required|string|max:255';
|
|
|
+ $rules['email'] = ['required', 'email', $emailUnique];
|
|
|
$rules['password'] = 'required|string|min:6';
|
|
|
if (!$this->has('language')) {
|
|
|
$this->merge(['language' => LanguageEnum::PORTUGUESE->value]);
|