MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
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',
        ];
    }
}