Passed
Push — master ( d19b6f...b2bfd0 )
by Jonathan
02:31 queued 10s
created

ModuleManagerController::activation()   B

Complexity

Conditions 7
Paths 20

Size

Total Lines 51
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 26
c 0
b 0
f 0
nc 20
nop 3
dl 0
loc 51
rs 8.5706

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
namespace Uccello\Core\Http\Controllers\Settings;
4
5
use Illuminate\Http\Request;
6
use Uccello\Core\Http\Controllers\Core\Controller;
7
use Uccello\Core\Models\Domain;
8
use Uccello\Core\Models\Module;
9
10
class ModuleManagerController extends Controller
11
{
12
    /**
13
     * Default view name
14
     *
15
     * @var string
16
     */
17
    protected $viewName = 'module-manager.main';
18
19
    /**
20
     * Check user permissions
21
     */
22
    protected function checkPermissions()
23
    {
24
        $this->middleware('uccello.permissions:admin');
25
    }
26
27
    /**
28
     * Displays the list of modules
29
     *
30
     * @param \Uccello\Core\Models\Domain|null $domain
31
     * @param \Uccello\Core\Models\Module $module
32
     * @param \Illuminate\Http\Request $request
33
     * @return void
34
     */
35
    public function process(?Domain $domain, Module $module, Request $request)
36
    {
37
        // Pre-process
38
        $this->preProcess($domain, $module, $request);
39
40
        $mainModules = [];
41
        $adminModules = [];
42
        foreach (Module::orderBy('id')->get() as $_module) {
43
            if ($_module->isAdminModule()) {
44
                $adminModules[] = $_module;
45
            } else {
46
                $mainModules[] = $_module;
47
            }
48
        }
49
50
        return $this->autoView(compact('mainModules', 'adminModules'));
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->autoView(c...ules', 'adminModules')) returns the type Illuminate\View\View which is incompatible with the documented return type void.
Loading history...
51
    }
52
53
    /**
54
     * Activates or deactivates a module on the current domain
55
     *
56
     * @param \Uccello\Core\Models\Domain|null $domain
57
     * @param \Uccello\Core\Models\Module $module
58
     * @param \Illuminate\Http\Request $request
59
     * @return array
60
     */
61
    public function activation(?Domain $domain, Module $module, Request $request)
62
    {
63
        // Pre-process
64
        $this->preProcess($domain, $module, $request);
65
66
        // Activate or deactivate a module on the current domain
67
        $success = false;
68
        $error = '';
69
        if (request('src_module')) {
70
            $sourceModule = ucmodule(request('src_module'));
71
            $isActive = request('active') == 1;
72
73
            if ($sourceModule) {
74
                // Activate the module on the current domain
75
                if ($isActive === true) {
76
                    $domain->modules()->attach($sourceModule);
77
                    $success = true;
78
                    $message = 'message.module_activated';
79
                }
80
                // Deactivate the module on the current domain only if it is not mandatory
81
                elseif (!$sourceModule->isMandatory()) {
82
                    $domain->modules()->detach($sourceModule);
83
                    $success = true;
84
                    $message = 'message.module_deactivated';
85
                }
86
                // Impossible to deactivate a mandatory module
87
                else {
88
                    $error = 'error.module_is_mandatory';
89
                }
90
            }
91
        }
92
        // Module name is not defined
93
        else {
94
            $error = 'error.module_not_defined';
95
        }
96
97
        $result = [
98
            'success' => $success
99
        ];
100
101
        // Add message if defined
102
        if (!empty($message)) {
103
            $result['message'] = uctrans($message, $module);
104
        }
105
106
        // Add error if defined
107
        if (!empty($error)) {
108
            $result['error'] = uctrans($error, $module);
109
        }
110
111
        return $result;
112
    }
113
}