Viewing file: StoreVendorRequest.php (2.41 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Support\Str;
use Illuminate\Foundation\Http\FormRequest;
use App\Rules\{
StrengthPassword,
CheckValidURL,
CheckValidPhone,
CheckValidFile,
CheckValidEmail
};
class StoreVendorRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|min:3|max:80|unique:vendors,name',
'email' => ['required','max:99', 'unique:vendors,email', 'unique:users,email', new CheckValidEmail],
'phone' => ['required', 'min:10', 'max:45', new CheckValidPhone],
'formal_name' => 'max:99',
'website' => ['nullable', 'max:191', new CheckValidURL],
'status' => 'required|in:Pending,Active,Inactive',
'sell_commissions' =>'nullable|numeric',
'logo' => ['nullable', new CheckValidFile(getFileExtensions(3))],
'alias' => 'required|unique:shops,alias',
'address' => 'required|max:191',
'password' => ['required', new StrengthPassword],
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'status.in' => __('Status must be Active, Inactive or Pending')
];
}
/**
* Get custom attributes for validator errors.
*
* @return array
*/
public function attributes()
{
return [
'email' => __('Email Address'),
];
}
/**
* Handle a passed validation attempt.
*/
protected function passedValidation(): void
{
$this->merge([
'password' => \Hash::make($this->password),
'vendor_data' => [
'vendorData' => $this->only('name', 'email', 'phone', 'formal_name', 'website', 'status', 'sell_commissions'),
'vendorMetaData' => $this->only('description', 'cover_photo', 'vendor_logo')
],
'activation_code' => $this->status <> 'Active' ? Str::random(10) : NULL,
]);
}
}
|