"address" // address_id that will receive the echos * + "domain_id" => "domain" // Of the echoareas * + "id" => array of IDs // The echos being subscribed (or if absent, are removed) * * Rules: * @see AddressAdd::class for description of authorisation */ class SystemEchoareaRequest extends FormRequest { /** * Determine if the user is authorized to make this request. */ public function authorize(): bool { return request()->isMethod('get') || Gate::allows('update_nn',$this->route('o')); } /** * Get the validation rules that apply to the request. * * @return array|string> */ public function rules(Request $request): array { if (request()->isMethod('get')) return []; session()->flash('accordion','echoarea'); return [ 'address_id'=>[ 'exists:addresses,id', // Make sure we have session details for the area function ($attribute,$value,$fail) use ($request) { $ao = request()->route('o')->addresses->firstWhere('id',$request->address_id); if ((! $ao) || (! $ao->active) || (! $ao->system->zones->pluck('domain_id')->contains($request->domain_id))) $fail('Address must be ACTIVE, and have session details for the domain'); }, ], 'domain_id'=>'exists:domains,id', 'id'=>[ 'array', 'min:1', // Make sure the echoareas are in the domain function ($attribute,$value,$fail) use ($request) { $do = Domain::findOrFail($request->domain_id); if ($do->echoareas->pluck('id')->intersect($value)->count() !== count($value)) $fail('Some echaoreas dont exist in the domain?'); }, ] ]; } }