76 lines
2.3 KiB
PHP
76 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\SuperAdmin\Companies;
|
|
|
|
use App\Http\Requests\SuperAdmin\SuperAdminBaseRequest;
|
|
use App\Scopes\CompanyScope;
|
|
use App\User;
|
|
use Illuminate\Validation\Rule;
|
|
use Illuminate\Validation\Validator;
|
|
|
|
class StoreRequest extends SuperAdminBaseRequest
|
|
{
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function rules()
|
|
{
|
|
\Illuminate\Support\Facades\Validator::extend('check_client', function($attribute, $value, $parameters, $validator) {
|
|
$user = User::withoutGlobalScopes(['active', CompanyScope::class])
|
|
->join('client_details', 'client_details.user_id', 'users.id')
|
|
->where('users.email', $value)
|
|
->first();
|
|
|
|
$userTable = User::withoutGlobalScopes(['active', CompanyScope::class])
|
|
->where('users.email', $value)->first();
|
|
|
|
if(!is_null($user) && (!is_null($userTable) && !$userTable->hasRole('admin'))){
|
|
return true;
|
|
}
|
|
|
|
elseif((!is_null($userTable) && is_null($user) && $userTable->hasRole('admin')) ){
|
|
return false;
|
|
}
|
|
elseif(is_null($userTable) && is_null($user)){
|
|
return true;
|
|
}
|
|
return false;
|
|
|
|
});
|
|
|
|
return [
|
|
"company_name" => "required",
|
|
"company_email" => "required|email|unique:companies",
|
|
'sub_domain' => module_enabled('Subdomain') ?'required|min:4|unique:companies,sub_domain|max:50|sub_domain':'',
|
|
"company_phone" => "required",
|
|
"address" => "required",
|
|
"status" => "required",
|
|
'email' => 'required|check_client',
|
|
'password' => 'required|min:6'
|
|
|
|
];
|
|
|
|
}
|
|
|
|
public function prepareForValidation()
|
|
{
|
|
if (empty($this->sub_domain)) {
|
|
return;
|
|
}
|
|
|
|
// Add servername domain suffix at the end
|
|
$subdomain = trim($this->sub_domain, '.') . '.' . get_domain();
|
|
$this->merge(['sub_domain' => $subdomain]);
|
|
request()->merge(['sub_domain' => $subdomain]);
|
|
}
|
|
|
|
public function messages()
|
|
{
|
|
return [
|
|
'email.check_client' => 'The email has already been taken.'
|
|
];
|
|
}
|
|
}
|