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/Option/Create.php
<?php

namespace App\Http\Livewire\Admin\Option;

use App\Http\Livewire\ConvertEmptyStringsToNull;
use App\Http\Livewire\General;
use App\Models\Option;
use Illuminate\Support\Facades\DB;
use Livewire\Component;

class Create extends Component
{
    use ConvertEmptyStringsToNull, General;

    public $name;

    public $label;

    public $sort_order;

    public $type = 0;

    public $values = [];

    public function mount()
    {
        $this->addItem();
    }

    public function render()
    {
        return view('livewire.admin.option.create');
    }

    protected function rules()
    {
        return [
            'name' => 'required|max:250|string',
            'label' => 'nullable|max:250|string',
            'sort_order' => 'nullable|integer|min:0|max:10000',
            'type' => 'required|integer|min:0|max:'.(count(Option::TYPE_TRANSLATE) - 1),
            'values.*.name' => 'required|max:250|string|distinct',
            'values.*.color' => ['nullable', 'regex:/^(#(?:[0-9a-f]{2}){2,4}|#[0-9a-f]{3}|(?:rgba?|hsla?)\((?:\d+%?(?:deg|rad|grad|turn)?(?:,|\s)+){2,3}[\s\/]*[\d\.]+%?\))$/i'],
            'values.*.sort_order' => 'nullable|integer|min:0|max:10000',
        ];
    }

    protected $validationAttributes = [
        'values.*.name' => 'مقدار',
        'values.*.color' => 'رنگ',
        'values.*.sort_order' => 'ترتیپ',
    ];

    public function addItem()
    {
        $this->values[] = [
            'name' => null,
            'color' => null,
            'sort_order' => null,
        ];
    }

    public function removeItem($index)
    {
        unset($this->values[$index]);
    }

    public function store()
    {
        $this->validate();

        DB::transaction(function () {
            $option = Option::create([
                'name' => $this->name,
                'label' => $this->label,
                'sort_order' => $this->sort_order,
                'type' => $this->type,
            ]);

            $option->values()->createMany($this->values);

            saveActivity("گزینه {$this->name} ایجاد شد", $option);
        });

        $this->doneMessage();

        return redirect()->route('admin.options.index');
    }
}