File: /home/imensosw/www/mpl.imenso.co/app/Http/Requests/DoAddTourArtistRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str;
class DoAddTourArtistRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'name' => ['required'],
'description' => ['nullable', 'string'],
'user_id' => ['required'],
'event_ids' => ['required'],
'artist_ids' => ['required'],
'artist_type' => [],
'status_id' => ['required', 'in:1,2']
];
$tempArtistRules = collect($this->all())
->filter(function ($value, $key) {
return Str::contains($key, 'temp_artist_t');
})
->map(function ($value, $key) {
return ['required', 'string'];
})
->toArray();
$tempEventRules = collect($this->all())
->filter(function ($value, $key) {
return Str::contains($key, [
'temp_event_end_time_t',
'temp_event_end_date_t',
'temp_event_start_time_t',
'temp_event_start_date_t',
'temp_event_venue_country_t',
'temp_event_venue_postcode_t',
'temp_event_venue_name_t',
]);
})
->map(function ($value, $key) {
if (Str::contains($key, 'end_time') || Str::contains($key, 'start_time')) {
return ['required', 'string', 'min:4', 'max:5'];
}
if (Str::contains($key, 'end_date') || Str::contains($key, 'end_time')) {
return ['required', 'date_format:d/m/Y'];
}
if (Str::contains($key, 'venue_country')) {
return ['required', 'integer'];
}
if (Str::contains($key, 'venue_postcode')) {
return ['required', 'string'];
}
if (Str::contains($key, 'venue_name')) {
return ['required', 'string'];
}
return [];
})
->toArray();
return array_merge($rules, $tempArtistRules, $tempEventRules);
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'name.required' => 'You need to enter a name.',
'event_ids.required' => 'You must select at least 1 event',
'artist_ids.required' => 'You must select at least 1 artist',
];
}
}