Passed
Push — feature/experience-api ( 68d96e...ec2f47 )
by Tristan
06:02 queued 02:13
created

ExperienceController::indexForApplicant()   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\Resources\Experience as ExperienceResource;
6
use App\Models\Applicant;
7
use App\Models\ExperienceWork;
8
use App\Models\JobApplication;
9
use Illuminate\Http\Request;
10
11
class ExperienceController extends Controller
12
{
13
14
    /**
15
     * Return the list of Experience objects (of all types) associated with an application.
16
     *
17
     * @param JobApplication $application
18
     * @return void
19
     */
20
    public function indexForApplication(JobApplication $application)
21
    {
22
        $application->load([
23
            'experiences_work.experience_skills',
24
            'experiences_personal.experience_skills',
25
            'experiences_education.experience_skills',
26
            'experiences_award.experience_skills',
27
            'experiences_community.experience_skills',
28
        ]);
29
        $experiences = array_merge(
30
            ExperienceResource::collection($application->experiences_work)->all(),
31
            ExperienceResource::collection($application->experiences_personal)->all(),
32
            ExperienceResource::collection($application->experiences_education)->all(),
33
            ExperienceResource::collection($application->experiences_award)->all(),
34
            ExperienceResource::collection($application->experiences_community)->all()
35
        );
36
37
        return $experiences;
38
    }
39
40
    /**
41
     * Return the list of Experience objects (of all types) associated with an applicant.
42
     *
43
     * @param Applicant $applicant
44
     * @return void
45
     */
46
    public function indexForApplicant(Applicant $applicant)
47
    {
48
        $applicant->load([
49
            'experiences_work.experience_skills',
50
            'experiences_personal.experience_skills',
51
            'experiences_education.experience_skills',
52
            'experiences_award.experience_skills',
53
            'experiences_community.experience_skills',
54
        ]);
55
        $experiences = array_merge(
56
            ExperienceResource::collection($applicant->experiences_work)->all(),
57
            ExperienceResource::collection($applicant->experiences_personal)->all(),
58
            ExperienceResource::collection($applicant->experiences_education)->all(),
59
            ExperienceResource::collection($applicant->experiences_award)->all(),
60
            ExperienceResource::collection($applicant->experiences_community)->all()
61
        );
62
63
        return $experiences;
64
    }
65
66
    public function storeWork(Request $request, Applicant $applicant)
67
    {
68
        $data = $request->input();
69
        $work = new ExperienceWork($data);
70
        $applicant->experiences_work()->save($work);
71
        return new ExperienceResource($work->fresh());
72
    }
73
74
}
75