Completed
Push — feature/manager_localization2 ( de29b5...0f36f8 )
by Xander
16:57 queued 09:59
created

DevSeeder   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 5
eloc 24
c 2
b 0
f 0
dl 0
loc 60
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A run() 0 35 5
1
<?php
2
3
use Illuminate\Database\Seeder;
4
use App\Models\Manager;
5
use App\Models\User;
6
use App\Models\JobPoster;
7
use App\Models\Applicant;
8
use App\Models\UserRole;
9
10
class DevSeeder extends Seeder
11
{
12
    /**
13
     * This seeder connects all manager objects to this user.
14
     * Note: all seeded users have 'password' for a password.
15
     *
16
     * @var string
17
     */
18
    protected $managerEmail = '[email protected]';
19
20
    /**
21
     * This seeder attaches all applicant objects to this user.
22
     * Note: all seeded users have 'password' for a password.
23
     *
24
     * @var string
25
     */
26
    protected $applicantEmail = '[email protected]';
27
28
29
30
    /**
31
     * Run the database seeds.
32
     *
33
     * @return void
34
     */
35
    public function run()
36
    {
37
        $managerUser = User::where('email', $this->managerEmail)->first();
38
        // Create the test manager if it does not exist yet
39
        if ($managerUser === null) {
40
            $managerUser = factory(User::class)->state('manager')->create(['email' => '[email protected]']);
41
        }
42
        if (!$managerUser->hasRole('manager')) {
43
            $managerUser->user_role_id = UserRole::where('name', 'manager')->first()->id;
44
            $managerUser->save();
45
        }
46
        if (!$managerUser->manager) {
47
            $managerUser->manager()->save(factory(Manager::class)->create([
48
                'user_id' => $managerUser->id
49
            ]));
50
        }
51
52
        //Always add new jobs to the test manager
53
        $managerUser->manager->job_posters()->save(factory(JobPoster::class)->state('published')->create([
54
            'manager_id' => $managerUser->manager->id
55
        ]));
56
        $managerUser->manager->job_posters()->save(factory(JobPoster::class)->state('unpublished')->create([
57
            'manager_id' => $managerUser->manager->id
58
        ]));
59
        $managerUser->manager->job_posters()->save(factory(JobPoster::class)->state('closed')->create([
60
            'manager_id' => $managerUser->manager->id
61
        ]));
62
63
        $applicantUser = User::where('email', $this->applicantEmail)->first();
64
        if ($applicantUser === null) {
65
            $applicantUser = factory(User::class)->state('applicant')->create([
66
                'email' => $this->applicantEmail
67
            ]);
68
            $applicantUser->applicant()->save(factory(Applicant::class)->create([
69
                'user_id' => $applicantUser->id
70
            ]));
71
        }
72
    }
73
}
74