mein-sterntours/app/Http/Requests/Offer/StoreOfferRequest.php

60 lines
1.7 KiB
PHP

<?php
namespace App\Http\Requests\Offer;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Validator;
class StoreOfferRequest extends FormRequest
{
public function authorize(): bool
{
return $this->user() !== null;
}
public function rules(): array
{
return [
'contact_id' => [
'nullable',
'integer',
Rule::exists('contacts', 'id'),
],
'inquiry_id' => [
'nullable',
'integer',
Rule::exists('inquiries', 'id'),
],
'template_id' => [
'nullable',
'integer',
Rule::exists('offer_templates', 'id')->whereNull('deleted_at'),
],
'booking_id' => [
'nullable',
'integer',
Rule::exists('booking', 'id'),
],
];
}
public function withValidator(Validator $validator): void
{
$validator->after(function (Validator $v) {
if (! $v->fails() && $this->input('contact_id') === null && $this->input('inquiry_id') === null) {
$v->errors()->add('contact_id', 'Bitte wähle einen Kontakt oder eine Anfrage.');
}
});
}
public function messages(): array
{
return [
'contact_id.exists' => 'Der gewählte Kontakt existiert nicht.',
'inquiry_id.exists' => 'Die gewählte Anfrage existiert nicht.',
'template_id.exists' => 'Die gewählte Vorlage existiert (nicht) oder ist gelöscht.',
'booking_id.exists' => 'Die gewählte Buchung existiert nicht.',
];
}
}