Passed
Push — task/refactor-application-data... ( 374eb4...2cf671 )
by Tristan
05:19 queued 11s
created

ExperiencePersonal   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 25
dl 0
loc 53
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 8 2
A experienceable() 0 3 1
A experienceTypeName() 0 3 1
A experience_skills() 0 3 1
1
<?php
2
3
namespace App\Models;
4
5
use App\Models\BaseModel;
6
7
/**
8
 * Class ExperiencePersonal
9
 *
10
 * @property int $id
11
 * @property string $title
12
 * @property string $description
13
 * @property boolean $is_shareable
14
 * @property boolean $is_active
15
 * @property \Jenssegers\Date\Date $start_date
16
 * @property \Jenssegers\Date\Date $end_date
17
 * @property int $experienceable_id
18
 * @property string $experienceable_type
19
 * @property boolean $is_education_requirement
20
 * @property \Jenssegers\Date\Date $created_at
21
 * @property \Jenssegers\Date\Date $updated_at
22
 *
23
 * @property \App\Models\Applicant|\App\Models\JobApplication $experienceable
24
 * @property \Illuminate\Database\Eloquent\Collection $skills
25
 * @property \Illuminate\Database\Eloquent\Collection $experience_skills
26
 *
27
 * @method string experienceTypeName
28
 */
29
class ExperiencePersonal extends BaseModel
30
{
31
    protected $casts = [
32
        'title' => 'string',
33
        'description' => 'string',
34
        'is_shareable' => 'boolean',
35
        'is_active' => 'boolean',
36
        'start_date' => 'date',
37
        'end_date' => 'date',
38
        'is_education_requirement' => 'boolean'
39
    ];
40
41
    protected $fillable = [
42
        'title',
43
        'description',
44
        'is_shareable',
45
        'is_active',
46
        'start_date',
47
        'end_date',
48
        'is_education_requirement'
49
    ];
50
51
    protected $table = 'experiences_personal';
52
53
    public static function boot()
54
    {
55
        parent::boot();
56
57
        // Delete associated ExperienceSkills when this is deleted.
58
        static::deleting(function ($personal): void {
59
            foreach ($personal->experience_skills as $es) {
60
                $es->delete();
61
            }
62
        });
63
    }
64
65
    public function experienceable() //phpcs:ignore
66
    {
67
        return $this->morphTo();
68
    }
69
70
    public function experience_skills() //phpcs:ignore
71
    {
72
        return $this->morphMany(\App\Models\ExperienceSkill::class, 'experience');
73
    }
74
75
    /**
76
     * Returns the name of this experience type. Used to distinguish from other Experience models.
77
     * @return string Returns the string 'experience_personal'.
78
     */
79
    public function experienceTypeName(): string
80
    {
81
        return 'experience_personal';
82
    }
83
}
84