LandingPageRegisterRequest.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Enums\UserStatusEnum;
  4. use App\Models\User;
  5. use Illuminate\Foundation\Http\FormRequest;
  6. class LandingPageRegisterRequest extends FormRequest
  7. {
  8. public function rules(): array
  9. {
  10. return [
  11. 'name' => 'required|string|max:120',
  12. 'last_name' => 'required|string|max:120',
  13. 'cpf' => 'required|string|max:14|unique:users,cpf',
  14. 'registration' => 'required|string|max:255|unique:users,registration',
  15. 'email' => 'required|email|unique:users,email',
  16. 'phone' => 'required|string|max:20',
  17. 'position_id' => 'required|integer|exists:positions,id',
  18. 'sector_id' => 'required|integer|exists:sectors,id',
  19. ];
  20. }
  21. public function messages(): array
  22. {
  23. return [
  24. 'registration.unique' => $this->registrationTakenMessage(),
  25. 'cpf.unique' => __('messages.landing.cpf_taken'),
  26. 'email.unique' => __('messages.landing.email_taken'),
  27. ];
  28. }
  29. private function registrationTakenMessage(): string
  30. {
  31. $user = User::where('registration', $this->input('registration'))->first();
  32. return match (true) {
  33. (bool) $user?->first_access_completed_at => __('messages.landing.registration_first_access_done'),
  34. $user?->status === UserStatusEnum::PENDING => __('messages.landing.registration_pending_approval'),
  35. default => __('messages.landing.registration_taken'),
  36. };
  37. }
  38. }