Files
Verde-Web/app/Http/Requests/SuperAdmin/StoreSuperAdminUserRequest.php

79 lines
2.4 KiB
PHP

<?php
namespace App\Http\Requests\SuperAdmin;
use App\Models\User;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\Password;
class StoreSuperAdminUserRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
$isCreate = $this->isMethod('post');
$userId = $this->route('user')?->id;
return [
'first_name' => ['required', 'string', 'max:100'],
'middle_name' => ['nullable', 'string', 'max:100'],
'last_name' => ['required', 'string', 'max:100'],
'email' => [
'required',
'email',
'max:191',
Rule::unique('users', 'email')
->ignore($userId)
->whereNull('deleted_at'),
],
'phone' => [
'required',
'string',
'regex:/^\+?[0-9]{10,15}$/',
Rule::unique('users', 'phone')
->ignore($userId)
->whereNull('deleted_at'),
],
'role' => [
'required',
Rule::in([
User::ROLE_SUPER_ADMIN,
User::ROLE_ADMIN,
User::ROLE_RESIDENT,
User::ROLE_DRIVER,
User::ROLE_HELPER,
User::ROLE_SCANNER,
User::ROLE_STORE_PARTNER,
]),
],
'tenant_id' => [
Rule::requiredIf(function () {
return $this->input('role') !== User::ROLE_SUPER_ADMIN;
}),
Rule::prohibitedIf(function () {
return $this->input('role') === User::ROLE_SUPER_ADMIN;
}),
'nullable',
'integer',
'exists:tenants,id',
],
'password' => $isCreate
? ['required', 'confirmed', Password::min(8)->letters()->numbers()]
: ['nullable', 'confirmed', Password::min(8)->letters()->numbers()],
];
}
public function messages(): array
{
return [
'tenant_id.required' => 'An LGU must be selected for this user role.',
'tenant_id.prohibited' => 'Super Admins cannot be assigned to a specific LGU.',
];
}
}