44 lines
1.0 KiB
PHP
44 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\Repos;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
|
|
class UserRepo
|
|
{
|
|
/**
|
|
* Register new user
|
|
*/
|
|
public static function registerUser(Request $request): User
|
|
{
|
|
return User::create([
|
|
'phone' => $request->phone,
|
|
'name' => $request->name,
|
|
'username' => static::generateUsername($request->name),
|
|
'locale' => app()->getLocale(),
|
|
'password' => Str::random(6),
|
|
'active' => true,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Generate random and unique username
|
|
*/
|
|
public static function generateUsername(string $name): string
|
|
{
|
|
// Convert the full name to lowercase and replace spaces with underscores
|
|
$username = Str::slug($name, '_');
|
|
|
|
$count = DB::table('users')->where('username', $username)->count();
|
|
|
|
if ($count > 0) {
|
|
$username = $username.'_'.($count + 1);
|
|
}
|
|
|
|
return $username;
|
|
}
|
|
}
|