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', ]; } }