HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
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');
    }
}