DatabaseAdmin::handle()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 22
c 1
b 0
f 1
nc 2
nop 0
dl 0
loc 28
ccs 0
cts 26
cp 0
crap 6
rs 9.568
1
<?php
2
3
namespace CodexShaper\DBM\Commands;
4
5
use CodexShaper\DBM\Facades\Manager;
6
use Illuminate\Console\Command;
7
use Symfony\Component\Console\Input\InputOption;
8
9
class DatabaseAdmin extends Command
10
{
11
    /**
12
     * The name and signature of the console command.
13
     *
14
     * @var string
15
     */
16
    protected $signature = 'dbm:admin {email} {action=create} {--c|column=email}';
17
    /**
18
     * The console command description.
19
     *
20
     * @var string
21
     */
22
    protected $description = 'Make Database Admin';
23
24
    /**
25
     * Get Option.
26
     *
27
     * @return array
28
     */
29
    protected function getOptions()
30
    {
31
        return [
32
            ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production', null],
33
        ];
34
    }
35
36
    /**
37
     * Get the composer command for the environment.
38
     *
39
     * @return string
40
     */
41
    protected function findComposer()
42
    {
43
        if (file_exists(getcwd().'/composer.phar')) {
44
            return '"'.PHP_BINARY.'" '.getcwd().'/composer.phar';
45
        }
46
47
        return 'composer';
48
    }
49
50
    /**
51
     * Execute the console command.
52
     *
53
     * @param \Illuminate\Filesystem\Filesystem $filesystem
54
     *
55
     * @return void
56
     */
57
    public function handle()
58
    {
59
        $email = $this->argument('email');
60
        $column = $this->option('column');
61
        $permissions = Manager::Permission()->all();
62
        $successMessage = 'Admin Created successfully';
63
64
        if ($this->argument('action') == 'drop') {
65
            $permissions = [];
66
            $successMessage = 'Admin Deleted successfully';
67
        }
68
69
        $userModel = config('dbm.auth.user.model');
70
        $userTable = config('dbm.auth.user.table');
71
        $localObject = Manager::model($userModel, $userTable)
72
            ->where($column, $email)
73
            ->first();
74
        Manager::Object()
75
            ->setManyToManyRelation(
76
                $localObject,
77
                Manager::Permission(),
78
                'dbm_user_permissions',
79
                'user_id',
80
                'dbm_permission_id'
81
            )
82
            ->belongs_to_many()
83
            ->sync($permissions);
84
        $this->info($successMessage);
85
    }
86
}
87