File "StoreUserRequest.php"

Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Requests/Admin/StoreUserRequest.php
File size: 2.91 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Requests\Admin;

use App\Models\User;
use Gate;
use Illuminate\Foundation\Http\FormRequest;

class StoreUserRequest extends FormRequest
{
    public function authorize()
    {
        return Gate::allows('user_create');
    }

    public function rules()
    {
        return [
            'name' => [
                'string',
                'required',
            ],
            'email' => [
                'required',
                'unique:users',
            ],
            'password' => [
                'required',
                'regex:/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/i',
            ],
            'phone_number' => [
                'nullable',
                'max:20',
            ],
            'company' => [
                'nullable',
                'string',
                'max:50',
            ],
            'fax_number' => [
                'nullable',
                'string',
                'max:50',
            ],
            'roles' => [
                'required',
                'array',
            ],
            'roles.*' => [
                'integer',
                'exists:roles,id',
            ],
            'user_type' => [
                'required',
                'integer',
                'in:'.implode(",", array_keys(User::USER_TYPE_RADIO))
            ],
            'status' => [
                'required',
                'integer',
                'in:'.implode(',', array_keys(User::STATUS_RADIO))
            ],
            'profile_image' => [
                'nullable',
                'mimes:jpg,gif,png',
            ],
            'reminder_duration' => [
                'nullable',
                'in:' . implode(',', User::REMINDER_DURATION),
            ],
            'birth_date' => [
                'nullable',
                'date',
                'before:today'
            ],
            'secondary_email' => [
                'nullable',
                'email',
            ],
            'secondary_phone' => [
                'nullable',
                'max:20',
            ],
            'secondary_name' => [
                'nullable',
                'max:20',
            ],
            'sms_notification' => [
                'in:0,1',
            ],
        ];
    }

    public function messages()
    {
        return [
            'roles.*.integer' => 'Role #:position must be an integer.',
            'roles.*.exists' => 'Invalid role on position #:position.',
            'user_type.in' => "Invalid user type.",
            'password.regex' => 'Password should contain at least 8 characters, one letter, one number & one special character.',
            'phone_number.integer' => 'Phone number can only contain numbers.',
            'secondary_phone.integer' => 'Secondary phone can only contain numbers.',
            'reminder_duration.in' => ':attribute can only be '. implode(',', User::REMINDER_DURATION),
        ];
    }
}