Completed
Pull Request — dev (#330)
by Josh
06:54
created

JobPosterSeeder::run()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 82
Code Lines 59

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
eloc 59
dl 0
loc 82
rs 8.8945
c 3
b 0
f 1
cc 4
nc 8
nop 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
use Illuminate\Database\Seeder;
4
use App\Models\JobPoster;
5
use App\Models\Manager;
6
use App\Models\Criteria;
7
use App\Models\Lookup\CriteriaType;
8
use App\Models\JobPosterKeyTask;
9
use App\Models\Lookup\JobTerm;
10
use App\Models\Lookup\Department;
11
use App\Models\Lookup\SkillLevel;
12
use App\Models\Lookup\Province;
13
use App\Models\Lookup\SecurityClearance;
14
use App\Models\Lookup\LanguageRequirement;
15
use App\Models\JobPosterQuestion;
16
use App\Models\Skill;
17
18
class JobPosterSeeder extends Seeder
19
{
20
    protected $faker;
21
    protected $faker_fr;
22
23
    public function __construct(Faker\Generator $faker) {
24
        $this->faker = $faker;
25
        $this->faker_fr = Faker\Factory::create('fr');
26
    }
27
28
    /**
29
     * Run the Users table seeds.
30
     *
31
     * @return void
32
     */
33
    public function run()
34
    {
35
        $faker = $this->faker;
36
        $faker_fr = $this->faker_fr;
37
38
        $job = new JobPoster();
39
        $job->manager_id = Manager::inRandomOrder()->first()->id;
40
        $job->fill([
41
            'published' => true,
42
            'job_term_id' => JobTerm::inRandomOrder()->first()->id,
43
            'term_qty' => $faker->numberBetween(1, 4),
44
            'open_date_time' => $faker->dateTimeBetween('-1 months','now'),
45
            'close_date_time' => $faker->dateTimeBetween('now', '1 months'),
46
            'start_date_time' => $faker->dateTimeBetween('1 months','2 months'),
47
            'department_id' => Department::inRandomOrder()->first()->id,
48
            'province_id' => Province::inRandomOrder()->first()->id,
49
            'salary_min' => $faker->numberBetween(60000, 80000),
50
            'salary_max' => $faker->numberBetween(80000,100000),
51
            'noc' => $faker->numberBetween(1, 9999),
52
            'classification' => $faker->regexify('[A-Z]{2}-0[1-5]'),
53
            'security_clearance_id' => SecurityClearance::inRandomOrder()->first()->id,
54
            'language_requirement_id' => LanguageRequirement::inRandomOrder()->first()->id,
55
            'en' => [
56
                'city' => $faker->city(),
57
                'title' => $faker->word(),
58
                'impact' => $faker->paragraphs(2, true),
59
                'branch' => $faker->word(),
60
                'division' => $faker->word()
61
            ],
62
            'fr' => [
63
                'city' => $faker_fr->city(),
64
                'title' => $faker_fr->word(),
65
                'impact' => $faker_fr->paragraphs(2, true),
66
                'branch' => $faker_fr->word(),
67
                'division' => $faker_fr->word()
68
            ]
69
        ]);
70
71
        $job->save();
72
73
        //Create 3-6 criteria
74
        for($i=0; $i< $faker->numberBetween(3,6); $i++) {
75
            $criteria = new Criteria();
76
            $criteria->criteria_type_id = CriteriaType::inRandomOrder()->first()->id;
77
            $criteria->job_poster_id = $job->id;
78
            $criteria->skill_id = Skill::inRandomOrder()->first()->id;
79
            $criteria->skill_level_id = SkillLevel::inRandomOrder()->first()->id;
80
            $criteria->save();
81
        }
82
83
        //Create 2-4 key tasks
84
        for($i=0; $i< $faker->numberBetween(2,4); $i++) {
85
            $keyTask = new JobPosterKeyTask();
86
            $keyTask->job_poster_id = $job->id;
87
            $keyTask->fill([
88
                'en' => [
89
                    'description' => $faker->sentence()
90
                ],
91
                'fr' => [
92
                    'description' => $faker_fr->sentence()
93
                ]
94
95
            ]);
96
            $keyTask->save();
97
        }
98
99
        //Create 2-3 questions tasks
100
        for($i=0; $i< $faker->numberBetween(2,3); $i++) {
101
            $question = new JobPosterQuestion();
102
            $question->job_poster_id = $job->id;
103
            $question->fill([
104
                'en' => [
105
                    'question' => $faker->sentence(),
106
                    'description' => $faker->paragraph()
107
                ],
108
                'fr' => [
109
                    'question' => $faker->sentence(),
110
                    'description' => $faker->paragraph()
111
                ]
112
113
            ]);
114
            $question->save();
115
        }
116
    }
117
}
118