where('type', PartnerAgreementTypeEnum::AGREEMENT->value) ->whereNull('deleted_at'); $serviceExists = Rule::exists('partner_agreement_services', 'id') ->whereNull('deleted_at') ->when( $this->filled('partner_agreement_id'), fn ($rule) => $rule->where('partner_agreement_id', $this->input('partner_agreement_id')), ); $rules = [ 'user_id' => 'sometimes|integer|exists:users,id', 'partner_agreement_id' => ['sometimes', 'integer', $partnerExists], 'partner_agreement_service_id' => ['sometimes', 'integer', $serviceExists], 'date' => 'sometimes|date', 'time' => 'sometimes|date_format:H:i', 'observations' => 'sometimes|nullable|string', 'status' => ['sometimes', Rule::enum(AppointmentStatusEnum::class)], ]; if ($this->isMethod('post')) { $rules['user_id'] = 'required|integer|exists:users,id'; $rules['partner_agreement_id'] = ['required', 'integer', $partnerExists]; $rules['partner_agreement_service_id'] = ['required', 'integer', $serviceExists]; } return $rules; } }