Passed
Push — master ( 3b518a...cd2a02 )
by Adam
11:23
created

RoleController::update()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 9
nc 1
nop 2
dl 0
loc 16
rs 9.9666
c 1
b 0
f 0
1
<?php
2
3
namespace Coyote\Http\Controllers\Guide;
4
5
use Coyote\Guide;
6
use Coyote\Http\Controllers\Controller;
7
use Coyote\Services\Guide\RoleCalculator;
8
use Illuminate\Http\Request;
9
use Illuminate\Validation\Rule;
10
11
class RoleController extends Controller
12
{
13
    public function update(Guide $guide, Request $request): string
14
    {
15
        $this->validate(
16
            $request,
17
            ['role' => ['required', Rule::in([Guide\Role::JUNIOR, Guide\Role::MID, Guide\Role::SENIOR])]]
18
        );
19
20
        $reflectionClass = new \ReflectionClass(Guide\Role::class);
21
        $role = strtolower(
22
            array_flip($reflectionClass->getConstants(\ReflectionClassConstant::IS_PUBLIC))[$request->input('role')]
23
        );
24
25
        (new RoleCalculator($guide))->setRole($this->userId, $role);
26
        $guide->save();
27
28
        return $role;
29
    }
30
}
31