File: /home/armgroup/libs/app/Http/Livewire/Admin/User/Create.php
<?php
namespace App\Http\Livewire\Admin\User;
use Carbon\Carbon;
use App\Models\User;
use App\Rules\Mobile;
use Livewire\Component;
use App\Models\Organization;
use App\Http\Livewire\General;
use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use App\Http\Livewire\ConvertEmptyStringsToNull;
class Create extends Component
{
use ConvertEmptyStringsToNull, General;
public $is_seller = 0;
public $name;
public $mobile;
public $email;
public $password;
public $active = 1;
public $roles;
public $role_id;
public $organization_id;
public $organizations;
public $company;
public $career_field;
public $number_whatsapp;
public $number_rubika;
public $postal_code;
public function mount()
{
$this->roles = Role::query()->get(['id', 'name']);
$this->organizations = Organization::query()->get(['id', 'name']);
}
public function render()
{
return view('livewire.admin.user.create');
}
protected function rules()
{
return [
'name' => 'required|string|max:250',
'mobile' => ['required', 'unique:users', new Mobile],
'email' => 'nullable|email|max:250|unique:users',
'password' => 'required|string|min:8|max:250',
'role_id' => 'nullable|exists:roles,id',
'active' => 'required|in:0,1',
'is_seller' => 'required|boolean',
// 'sheba_number' => ['nullable', 'digits:24'],
// 'card_number' => ['nullable', 'digits:16'],
'organization_id' => 'nullable|exists:organizations,id',
'company' => ['nullable', 'required_if:user.is_seller,1', 'max:200'],
'postal_code' => ['nullable', 'required_if:user.is_seller,1', 'digits:10'],
'career_field' => ['nullable', 'required_if:user.is_seller,1', 'string'],
'number_whatsapp' => ['nullable', 'required_if:user.is_seller,1', 'max:20'],
'number_rubika' => ['nullable', 'max:20'],
];
}
public function store()
{
$data = $this->validate();
$data['password'] = Hash::make($this->password);
$data['mobile'] = to_latin_numbers($this->mobile);
$data['email_verified_at'] = Carbon::now();
DB::transaction(function () use ($data) {
$user = User::create($data);
if ($this->role_id) {
$user->assignRole($this->role_id);
}
if ($this->is_seller) {
$user->sellerInformation()->create($data);
}
saveActivity("کاربر {$user->name} ایجاد شد", $user);
});
$this->doneMessage("کاربر {$this->name} با موفقیت ایجاد شد");
return redirect()->route('admin.users.index');
}
}