Completed
Push — master ( 5cd775...78bef9 )
by Jonathan
14:29 queued 04:27
created

AddDefaultData::addDefaultProfile()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
use Illuminate\Database\Migrations\Migration;
4
use Uccello\Core\Models\User;
5
use Uccello\Core\Models\Domain;
6
use Uccello\Core\Models\Role;
7
use Uccello\Core\Models\Module;
8
use Uccello\Core\Models\Profile;
9
10
class AddDefaultData extends Migration
11
{
12
    /**
13
     * Run the migrations.
14
     *
15
     * @return void
16
     */
17
    public function up()
18
    {
19
        $this->addDefaultDomain();
20
        $profile = $this->addDefaultProfile();
21
        $this->addDefaultRole($profile);
22
        $this->addModulesInDomain();
23
    }
24
25
    /**
26
     * Reverse the migrations.
27
     *
28
     * @return void
29
     */
30
    public function down()
31
    {
32
        User::where('username', 'admin')->forceDelete();
33
        Domain::where('name', 'Default')->forceDelete();
34
        Role::where('name', 'Administrator')->forceDelete();
35
    }
36
37
    protected function addDefaultDomain()
38
    {
39
        Domain::create([
40
            'name' => 'Uccello',
41
            'description' => null,
42
            'parent_id' => null
43
        ]);
44
    }
45
46
    protected function addDefaultProfile()
47
    {
48
        $profile = Profile::create([
49
            'name' => 'Administration',
50
            'description' => null,
51
            'domain_id' => Domain::first()->id
52
        ]);
53
54
        return $profile;
55
    }
56
57
    protected function addDefaultRole($profile)
58
    {
59
        $role = Role::create([
60
            'name' => 'Administrator',
61
            'description' => null,
62
            'parent_id' => null,
63
            'domain_id' => Domain::first()->id
64
        ]);
65
66
        $role->profiles()->attach($profile);
67
    }
68
69
    protected function addModulesInDomain()
70
    {
71
        $domain = Domain::first();
72
        $modules = Module::all();
73
74
        foreach ($modules as $module) {
75
            $domain->modules()->save($module);
76
        }
77
    }
78
}
79