Passed
Push — master ( e17fe7...c7e0b9 )
by Reza
17:46
created

Create::create()   A

Complexity

Conditions 2
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 3
nop 0
dl 0
loc 13
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace EasyPanel\Http\Livewire\Admins;
4
5
use Livewire\Component;
6
use Iya30n\DynamicAcl\ACL;
7
use Iya30n\DynamicAcl\Models\Role;
8
9
class Create extends Component
10
{
11
    public $name;
12
13
    public $access = [];
14
15
    protected $rules = [
16
        'name' => 'required|min:3|unique:roles',
17
        'access' => 'required'
18
    ];
19
20
    private function fixAccessKeys()
21
    {
22
        foreach($this->access as $key => $value) {
23
            unset($this->access[$key]);
24
            $key = str_replace('-', '.', $key);
25
            $this->access[$key] = $value;
26
        }
27
28
        return $this->access;
29
    }
30
31
    public function create()
32
    {
33
        $this->validate();
34
35
        try {
36
            Role::create(['name' => $this->name, 'permissions' => $this->fixAccessKeys()]);
37
38
            $this->dispatchBrowserEvent('show-message', ['type' => 'success', 'message' => __('CreatedMessage', ['name' => __('Role') ])]);
39
        } catch (\Exception $exception){
40
            $this->dispatchBrowserEvent('show-message', ['type' => 'error', 'message' => $exception->getMessage()]);
41
        }
42
43
        $this->reset();
44
    }
45
46
    public function render()
47
    {
48
        $permissions = ACL::getRoutes();
49
50
        return view('admin::livewire.role.create', compact('permissions'))
51
            ->layout('admin::layouts.app', ['title' => __('CreateTitle', ['name' => __('Role') ])]);
52
    }
53
}
54