ManagementSystem/BACKEND/Modules/Admin/app/Http/Requests/ClientRequest.php

89 lines
2.8 KiB
PHP
Executable File

<?php
namespace Modules\Admin\app\Http\Requests;
use App\Models\Client;
use Illuminate\Foundation\Http\FormRequest;
use Modules\Admin\app\Rules\PasswordRule;
use Modules\Admin\app\Rules\PointRule;
class ClientRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$actionMethod = $this->route()->getActionMethod();
$rules = [
'id' => [
'exists' => 'exists:' . (new Client)->getTable() . ',id'
],
'password' => ['nullable', new PasswordRule],
'name' => 'min:5|max:100',
'email' => 'email|nullable|unique:' . (new Client)->getTable(),
'phone' => 'max:50|nullable',
'company' => 'max:100|nullable',
'point' => [
new PointRule,
'nullable'
],
'avatar' => 'file|mimes:jpeg,jpg,png|nullable',
'country_code' => 'exists:h_country,code|max:2',
];
if ($actionMethod === 'create') {
$rules = array_merge($rules, [
'name' => 'required|' . $rules['name']
]);
}
if ($actionMethod === 'update') {
unset($rules['email'], $rules['avatar']);
}
if ($actionMethod === 'deletes') {
$rules = array_merge($rules, [
'clients.*.id' => 'required|' . $rules['id']['exists'],
]);
}
if ($actionMethod === 'updates') {
$rules = array_merge($rules, [
'clients.*.id' => 'required|' . $rules['id']['exists'],
'clients.*.password' => $rules['password'],
'clients.*.name' => $rules['name'],
'clients.*.email' => $rules['email'],
'clients.*.phone' => $rules['phone'],
'clients.*.company' => $rules['company'],
'clients.*.point' => $rules['point'],
'clients.*.avatar' => $rules['avatar'],
'clients.*.country_code' => $rules['country_code'],
]);
}
if ($actionMethod === 'creates') {
$rules = array_merge($rules, [
'clients.*.name' => 'required|' . $rules['name'],
'clients.*.email' => 'required|' . $rules['email'],
'clients.*.password' => $rules['password'],
'clients.*.phone' => $rules['phone'],
'clients.*.company' => $rules['company'],
'clients.*.point' => $rules['point'],
'clients.*.avatar' => $rules['avatar'],
'clients.*.country_code' => $rules['country_code'],
]);
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}