| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace App\Http\Requests;
- use App\Enums\PartnerAgreementServiceStatusEnum;
- use App\Enums\PartnerAgreementServiceTypeEnum;
- use App\Enums\PartnerAgreementTypeEnum;
- use App\Enums\UserDependentStatusEnum;
- use App\Enums\UserTypeEnum;
- use Illuminate\Foundation\Http\FormRequest;
- use Illuminate\Validation\Rule;
- class AppointmentExamRequest extends FormRequest
- {
- public function rules(): array
- {
- $associadoExists = Rule::exists('users', 'id')
- ->where('type', UserTypeEnum::ASSOCIADO->value);
- $partnerExists = Rule::exists('partner_agreements', 'id')
- ->where('type', PartnerAgreementTypeEnum::AGREEMENT->value)
- ->whereNull('deleted_at');
- $examExists = Rule::exists('partner_agreement_services', 'id')
- ->where('type', PartnerAgreementServiceTypeEnum::EXAME->value)
- ->where('status', PartnerAgreementServiceStatusEnum::ACTIVE->value)
- ->whereNull('deleted_at')
- ->when(
- $this->filled('partner_agreement_id'),
- fn ($rule) => $rule->where('partner_agreement_id', $this->input('partner_agreement_id')),
- );
- $dependentExists = Rule::exists('user_dependents', 'id')
- ->where('responsible_user_id', $this->input('user_id'))
- ->where('status', UserDependentStatusEnum::APPROVED->value)
- ->whereNull('deleted_at');
- return [
- 'user_id' => ['required', 'integer', $associadoExists],
- 'user_dependent_id' => ['sometimes', 'nullable', 'integer', $dependentExists],
- 'partner_agreement_id' => ['required', 'integer', $partnerExists],
- 'service_ids' => 'required|array|min:1',
- 'service_ids.*' => ['integer', $examExists],
- 'date' => 'sometimes|nullable|date',
- 'time' => 'sometimes|nullable|date_format:H:i',
- 'observations' => 'sometimes|nullable|string',
- ];
- }
- }
|