| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace App\Http\Requests;
- use Illuminate\Foundation\Http\FormRequest;
- use App\Enums\{
- LanguageEnum,
- UserStatusEnum,
- UserTypeEnum
- };
- use Illuminate\Validation\Rule;
- 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', $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', $emailUnique];
- $rules['password'] = 'required|string|min:6';
- if (!$this->has('language')) {
- $this->merge(['language' => LanguageEnum::PORTUGUESE->value]);
- }
- }
- return $rules;
- }
- }
|