Passed
Push — feature/response-screening ( a2b92d...1c2a98 )
by Chris
03:27
created

ApplicationController::index()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 12
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace App\Http\Controllers\Api;
4
5
use App\Http\Controllers\Controller;
6
use App\Http\Resources\JobApplication as JobApplicationResource;
7
use App\Models\JobApplication;
8
use App\Models\JobPoster;
9
use Illuminate\Http\Request;
10
11
class ApplicationController extends Controller
12
{
13
    /**
14
     * Return a single Job Application.
15
     *
16
     * @param JobApplication $application Incoming Job Application object.
17
     *
18
     * @return mixed
19
     */
20
    public function show(JobApplication $application)
21
    {
22
        $application->loadMissing('applicant', 'application_review', 'citizenship_declaration', 'veteran_status');
23
        return new JobApplicationResource($application);
24
    }
25
26
    /**
27
     * Return all Job Applications for a given Job Poster.
28
     *
29
     * @param JobPoster $jobPoster Incoming Job Poster object.
30
     *
31
     * @return mixed
32
     */
33
    public function index(JobPoster $jobPoster)
34
    {
35
        $applications = $jobPoster->submitted_applications()
36
            ->with([
37
                'applicant.user',
38
                'application_review',
39
                'citizenship_declaration',
40
                'veteran_status'
41
            ])
42
            ->get();
43
44
        return JobApplicationResource::collection($applications);
45
    }
46
47
    /**
48
     * Update a single Job Application Review.
49
     *
50
     * @param Request        $request     Incoming request object.
51
     * @param JobApplication $application Incoming Job Application object.
52
     *
53
     * @return mixed
54
     */
55
    public function updateReview(Request $request, JobApplication $application)
56
    {
57
        $request->validate([
58
            'review_status_id' => [
59
                'nullable',
60
                Rule::in(ReviewStatus::all()->pluck('id')->toArray())
61
            ],
62
            'notes' => 'nullable|string'
63
        ]);
64
65
        $review = $application->application_review;
66
        if ($review === null) {
67
            $review = new ApplicationReview();
68
            $review->job_application()->associate($application);
69
        }
70
        $review->fill([
71
            'review_status_id' => $request->input('review_status_id'),
72
            'notes' => $request->input('notes'),
73
        ]);
74
        $review->save();
75
76
        $application->loadMissing('applicant', 'application_review', 'citizenship_declaration', 'veteran_status');
77
        $application->fresh();
78
79
        return new JobApplicationResource($application);
80
    }
81
}
82