| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace App\Http\Requests;
- use App\Services\StudentRegistrationDraftService;
- use App\ValueObjects\Cpf;
- use Carbon\Carbon;
- use Illuminate\Foundation\Http\FormRequest;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Validation\Validator;
- class StoreStudentRequest extends FormRequest
- {
- public function rules(): array
- {
- return [
- 'registration_draft_token' => 'required|uuid',
- 'avatar' => 'sometimes|nullable|image',
- 'responsible' => 'sometimes|nullable|array|required_array_keys:name,birth_date,cpf,degree,email,phone,postal_code,street,neighborhood,city_id,state_id',
- 'responsible.name' => 'required_with:responsible|string|max:255',
- 'responsible.birth_date' => 'required_with:responsible|date',
- 'responsible.cpf' => ['required_with:responsible', 'string', 'max:20', Cpf::rule()],
- 'responsible.gender' => 'sometimes|nullable|string|in:no_preference,male,female,other',
- 'responsible.degree' => 'required_with:responsible|string|max:255',
- 'responsible.email' => 'required_with:responsible|email|max:255|unique:student_responsibles,email',
- 'responsible.phone' => 'required_with:responsible|string|max:20',
- 'responsible.postal_code' => 'required_with:responsible|string|max:10',
- 'responsible.street' => 'required_with:responsible|string|max:255',
- 'responsible.address_number' => 'sometimes|nullable|string|max:20',
- 'responsible.neighborhood' => 'required_with:responsible|string|max:255',
- 'responsible.city_id' => 'required_with:responsible|integer|exists:cities,id',
- 'responsible.state_id' => 'required_with:responsible|integer|exists:states,id',
- 'responsible.complement' => 'sometimes|nullable|string|max:255',
- 'responsible.notes' => 'sometimes|nullable|string',
- ];
- }
- public function after(): array
- {
- return [
- function (Validator $validator): void {
- if ($validator->errors()->has('registration_draft_token')) {
- return;
- }
- $draft = app(StudentRegistrationDraftService::class)->findOwnedDraft(
- Auth::user(),
- $this->string('registration_draft_token')->toString(),
- );
- if ($draft === null) {
- $validator->errors()->add(
- 'registration_draft_token',
- __('validation.registration_draft_invalid'),
- );
- return;
- }
- if (
- Carbon::parse($draft['data']['birth_date'])->age < 18
- && empty($this->input('responsible'))
- ) {
- $validator->errors()->add(
- 'responsible',
- __('validation.minor_requires_responsible'),
- );
- }
- },
- ];
- }
- }
|