Completed
Push — master ( 8927df...f70445 )
by Abdelrahman
02:05
created

AbilityUpdateCommand::handle()   C

Complexity

Conditions 7
Paths 20

Size

Total Lines 51
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 28
nc 20
nop 0
dl 0
loc 51
rs 6.9743
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/*
4
 * NOTICE OF LICENSE
5
 *
6
 * Part of the Rinvex Fort Package.
7
 *
8
 * This source file is subject to The MIT License (MIT)
9
 * that is bundled with this package in the LICENSE file.
10
 *
11
 * Package: Rinvex Fort Package
12
 * License: The MIT License (MIT)
13
 * Link:    https://rinvex.com
14
 */
15
16
namespace Rinvex\Fort\Console\Commands\AbilityUpdateCommand;
17
18
use Illuminate\Console\Command;
19
use Illuminate\Support\Facades\Lang;
20
use Illuminate\Contracts\Validation\Factory;
21
22
class AbilityUpdateCommand extends Command
23
{
24
    /**
25
     * The name and signature of the console command.
26
     *
27
     * @var string
28
     */
29
    protected $signature = 'fort:ability:update
30
                            {field? : The identifier of the ability (id, email, abilityname)}
31
                            {--N|name= : The name of the ability}
32
                            {--S|slug= : The slug of the ability}
33
                            {--D|description= : The description of the ability}';
34
35
    /**
36
     * The console command description.
37
     *
38
     * @var string
39
     */
40
    protected $description = 'Update an existing ability.';
41
42
    /**
43
     * Execute the console command.
44
     *
45
     * @return void
46
     */
47
    public function handle()
48
    {
49
        $data = array_filter([
50
51
            // Required ability attributes
52
            'name'        => $this->option('name'),
53
            'slug'        => $this->option('slug'),
54
            'description' => $this->option('description'),
55
56
        ], [
57
            $this,
58
            'filter'
59
        ]);
60
61
        // Get required argument
62
        $field = $this->argument('field') ?: $this->ask(Lang::get('rinvex.fort::artisan.ability.invalid'));
63
64
        // Find single ability
65
        if (intval($field)) {
66
            $ability = $this->laravel['rinvex.fort.ability']->find($field);
67
        } else {
68
            $ability = $this->laravel['rinvex.fort.ability']->findWhere(['slug' => $field])->first();
69
        }
70
71
        if (! $ability) {
72
            return $this->error(Lang::get('rinvex.fort::artisan.ability.invalid', ['field' => $field]));
73
        }
74
75
        $rules = [
76
            'name' => 'sometimes|required|max:255',
77
            'slug' => 'sometimes|required|max:255|unique:'.config('rinvex.fort.tables.abilities'),
78
        ];
79
80
        if (! empty($data)) {
81
            $validator = app(Factory::class)->make($data, $rules);
82
83
            if ($validator->fails()) {
84
                $this->error('Errors:');
85
86
                foreach ($validator->errors()->getMessages() as $key => $messages) {
87
                    $this->error('- '.$key.': '.$messages[0]);
88
                }
89
            } else {
90
                $ability->update($data);
91
92
                $this->info(Lang::get('rinvex.fort::artisan.ability.updated').' ['.Lang::get('rinvex.fort::artisan.ability.id').': '.$ability->id.', '.Lang::get('rinvex.fort::artisan.ability.name').': '.$ability->name.', '.Lang::get('rinvex.fort::artisan.ability.slug').': '.$ability->slug.']');
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 295 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
93
            }
94
        } else {
95
            $this->info(Lang::get('rinvex.fort::artisan.ability.nothing'));
96
        }
97
    }
98
99
    /**
100
     * Filter null and empty values.
101
     *
102
     * @param $value
103
     *
104
     * @return bool
105
     */
106
    protected function filter($value)
107
    {
108
        return ($value !== null && $value !== '');
109
    }
110
}
111