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

SchoolProposalController   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 16
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 16
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A store() 0 14 2
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