More complete rework of packet parsing and packet generation with 29710c
This commit is contained in:
71
app/Http/Requests/SystemEchoareaRequest.php
Normal file
71
app/Http/Requests/SystemEchoareaRequest.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
use App\Models\Domain;
|
||||
|
||||
/**
|
||||
* Validation to register echoareas for a system
|
||||
* o = System::class
|
||||
*
|
||||
* @note This validation only expects to be used with POST
|
||||
* Variables:
|
||||
* + "address_id" => "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, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|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?');
|
||||
},
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user