Test Setup Failed
Push — develop ( 04b246...d52f7e )
by Nikita
10:40
created

ModulesController::migrate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 3
c 2
b 0
f 0
dl 0
loc 6
rs 10
ccs 0
cts 0
cp 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace Gameap\Http\Controllers;
4
5
use Gameap\Repositories\Modules\LaravelModulesRepository;
6
use Illuminate\Support\Facades\Artisan;
7
use Gameap\Http\Requests\Modules\InstallModuleRequest;
8
use Gameap\Repositories\Modules\MarketplaceModulesRepository;
9
use Gameap\Services\Modules\Installer;
10
use Illuminate\Contracts\Foundation\Application;
11
use Illuminate\Contracts\View\Factory;
12
use Illuminate\Http\RedirectResponse;
13
use Illuminate\View\View;
14
15
class ModulesController extends AuthController
16
{
17
    /** @var MarketplaceModulesRepository */
18
    private $marketplaceModulesRepository;
19
20
    /** @var LaravelModulesRepository */
21
    private $laravelModulesRepository;
22
23
    /** @var Installer */
24
    private $modulesInstaller;
25
26
    public function __construct(
27
        MarketplaceModulesRepository $modulesRepository,
28
        LaravelModulesRepository $laravelModulesRepository,
29
        Installer $modulesInstaller
30
    ) {
31
        parent::__construct();
32
33
        $this->marketplaceModulesRepository = $modulesRepository;
34
        $this->laravelModulesRepository = $laravelModulesRepository;
35
        $this->modulesInstaller  = $modulesInstaller;
36
    }
37
38
    /**
39
     * @return Application|Factory|View
40
     */
41
    public function index()
42
    {
43
        $modules = $this->laravelModulesRepository->getCached();
44
45
        return view('modules/installed', compact('modules'));
46
    }
47
48
    public function marketplace()
49
    {
50
        $installedModules = $this->laravelModulesRepository->getModulesVersions();
51
        $modules = $this->marketplaceModulesRepository->getAll();
52
53
        return view('modules/marketplace', compact('modules', 'installedModules'));
54
    }
55
56
    /**
57
     * @throws \Gameap\Exceptions\GameapException
58
     * @throws \Gameap\Exceptions\InvalidArgumentValueException
59
     * @throws \splitbrain\PHPArchive\ArchiveCorruptedException
60
     * @throws \splitbrain\PHPArchive\ArchiveIOException
61
     * @throws \splitbrain\PHPArchive\ArchiveIllegalCompressionException
62
     */
63
    public function install(InstallModuleRequest $request): RedirectResponse
64
    {
65
        $moduleID = $request->input('module');
66
        $version  = $request->input('version');
67
68
        $this->modulesInstaller->install($moduleID, $version);
69
70
        Artisan::call('module:enable ' . $moduleID);
71
        Artisan::call('module:migrate ' . $moduleID);
72
73
        return redirect(route('modules.marketplace'))->with('success', __('modules.install_success_msg'));
74
    }
75
76
    public function destroy(string $moduleId): RedirectResponse
77
    {
78
        $this->laravelModulesRepository->delete($moduleId);
79
80
        return redirect(route('modules'))->with('success', __('modules.remove_success_msg'));
81
    }
82
83
    public function migrate(): RedirectResponse
84
    {
85
        Artisan::call('migrate');
86
        Artisan::call('module:migrate');
87
88
        return redirect(route('modules'))->with('success', __('modules.migrate_success_msg'));
89
    }
90
}
91