Passed
Push — feature/application-review-ui ( afbf92...be3688 )
by Chris
04:21
created

ExperienceController::indexForApplication()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 13
c 0
b 0
f 0
dl 0
loc 18
rs 9.8333
cc 1
nc 1
nop 1
1
<?php
2
namespace App\Http\Controllers\Api;
3
4
use App\Http\Controllers\Controller;
5
use App\Http\Requests\UpdateExperienceAward;
6
use App\Http\Requests\UpdateExperienceCommunity;
7
use App\Http\Requests\UpdateExperienceEducation;
8
use App\Http\Requests\UpdateExperiencePersonal;
9
use App\Http\Requests\UpdateExperienceWork;
10
use App\Http\Resources\Experience as ExperienceResource;
11
use App\Models\Applicant;
12
use App\Models\ExperienceAward;
13
use App\Models\ExperienceCommunity;
14
use App\Models\ExperienceEducation;
15
use App\Models\ExperiencePersonal;
16
use App\Models\ExperienceWork;
17
use App\Models\JobApplication;
18
use Illuminate\Http\Request;
19
20
class ExperienceController extends Controller
21
{
22
23
    /**
24
     * Return the list of Experience objects (of all types) associated with an application.
25
     *
26
     * @param JobApplication $application
27
     * @return void
28
     */
29
    public function indexForApplication(JobApplication $application)
30
    {
31
        $application->load([
32
            'experiences_work.experience_skills',
33
            'experiences_personal.experience_skills',
34
            'experiences_education.experience_skills',
35
            'experiences_award.experience_skills',
36
            'experiences_community.experience_skills',
37
        ]);
38
        $experiences = array_merge(
39
            ExperienceResource::collection($application->experiences_work)->all(),
40
            ExperienceResource::collection($application->experiences_personal)->all(),
41
            ExperienceResource::collection($application->experiences_education)->all(),
42
            ExperienceResource::collection($application->experiences_award)->all(),
43
            ExperienceResource::collection($application->experiences_community)->all()
44
        );
45
46
        return $experiences;
47
    }
48
49
    /**
50
     * Return the list of Experience objects (of all types) associated with an applicant.
51
     *
52
     * @param Applicant $applicant
53
     * @return void
54
     */
55
    public function indexForApplicant(Applicant $applicant)
56
    {
57
        $applicant->load([
58
            'experiences_work.experience_skills',
59
            'experiences_personal.experience_skills',
60
            'experiences_education.experience_skills',
61
            'experiences_award.experience_skills',
62
            'experiences_community.experience_skills',
63
        ]);
64
        $experiences = array_merge(
65
            ExperienceResource::collection($applicant->experiences_work)->all(),
66
            ExperienceResource::collection($applicant->experiences_personal)->all(),
67
            ExperienceResource::collection($applicant->experiences_education)->all(),
68
            ExperienceResource::collection($applicant->experiences_award)->all(),
69
            ExperienceResource::collection($applicant->experiences_community)->all()
70
        );
71
72
        return $experiences;
73
    }
74
75
    public function storeWork(UpdateExperienceWork $request, Applicant $applicant)
76
    {
77
        $data = $request->validated();
78
        $work = new ExperienceWork($data);
79
        $applicant->experiences_work()->save($work);
80
        return new ExperienceResource($work->fresh());
81
    }
82
83
    public function storePersonal(UpdateExperiencePersonal $request, Applicant $applicant)
84
    {
85
        $data = $request->validated();
86
        $personal = new ExperiencePersonal($data);
87
        $applicant->experiences_personal()->save($personal);
88
        return new ExperienceResource($personal->fresh());
89
    }
90
91
    public function storeEducation(UpdateExperienceEducation $request, Applicant $applicant)
92
    {
93
        $data = $request->validated();
94
        $education = new ExperienceEducation($data);
95
        $applicant->experiences_education()->save($education);
96
        return new ExperienceResource($education->fresh());
97
    }
98
99
    public function storeAward(UpdateExperienceAward $request, Applicant $applicant)
100
    {
101
        $data = $request->validated();
102
        $award = new ExperienceAward($data);
103
        $applicant->experiences_award()->save($award);
104
        return new ExperienceResource($award->fresh());
105
    }
106
107
    public function storeCommunity(UpdateExperienceCommunity $request, Applicant $applicant)
108
    {
109
        $data = $request->validated();
110
        $community = new ExperienceCommunity($data);
111
        $applicant->experiences_community()->save($community);
112
        return new ExperienceResource($community->fresh());
113
    }
114
115
    public function updateWork(UpdateExperienceWork $request, ExperienceWork $work)
116
    {
117
        $data = $request->validated();
118
        $work->fill($data);
119
        $work->save();
120
        return new ExperienceResource($work->fresh());
121
    }
122
123
    public function updatePersonal(UpdateExperiencePersonal $request, ExperiencePersonal $personal)
124
    {
125
        $data = $request->validated();
126
        $personal->fill($data);
127
        $personal->save();
128
        return new ExperienceResource($personal->fresh());
129
    }
130
131
    public function updateEducation(UpdateExperienceEducation $request, ExperienceEducation $education)
132
    {
133
        $data = $request->validated();
134
        $education->fill($data);
135
        $education->save();
136
        return new ExperienceResource($education->fresh());
137
    }
138
139
    public function updateAward(UpdateExperienceAward $request, ExperienceAward $award)
140
    {
141
        $data = $request->validated();
142
        $award->fill($data);
143
        $award->save();
144
        return new ExperienceResource($award->fresh());
145
    }
146
147
    public function updateCommunity(UpdateExperienceCommunity $request, ExperienceCommunity $community)
148
    {
149
        $data = $request->validated();
150
        $community->fill($data);
151
        $community->save();
152
        return new ExperienceResource($community->fresh());
153
    }
154
155
    public function destroyWork(ExperienceWork $work)
156
    {
157
        $work->delete();
158
    }
159
    public function destroyPersonal(ExperiencePersonal $personal)
160
    {
161
        $personal->delete();
162
    }
163
    public function destroyEducation(ExperienceEducation $education)
164
    {
165
        $education->delete();
166
    }
167
    public function destroyAward(ExperienceAward $award)
168
    {
169
        $award->delete();
170
    }
171
    public function destroyCommunity(ExperienceCommunity $community)
172
    {
173
        $community->delete();
174
    }
175
}
176