Passed
Pull Request — master (#4)
by Ostap
03:13
created

SchoolProposalController::store()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 9
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 14
rs 9.9666
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Http\Requests\StoreProposalRequest;
6
use App\Http\Resources\ProposalResource;
7
use App\Models\{Proposal, School};
8
use Illuminate\Routing\Middleware\SubstituteBindings;
9
use Spatie\RouteAttributes\Attributes\Post;
10
use Symfony\Component\HttpFoundation\Response;
11
12
final class SchoolProposalController
13
{
14
    #[Post('/schools/{school}/proposals', middleware: ['auth:sanctum', SubstituteBindings::class])]
15
    public function store(School $school, StoreProposalRequest $request)
16
    {
17
        if (!$request->user()->school()->is($school)) {
18
            abort(Response::HTTP_FORBIDDEN);
19
        }
20
21
        $proposal = new Proposal;
22
        $proposal->fill($request->validated());
23
        $proposal->user()->associate($request->user());
24
        $proposal->school()->associate($school);
25
        $proposal->save();
26
27
        return ProposalResource::make($proposal);
28
    }
29
}
30