Destroy::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 3
eloc 6
nc 4
nop 2
dl 0
loc 12
rs 10
c 1
b 1
f 0
1
<?php
2
3
namespace App\Http\Controllers\Company\Person;
4
5
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
6
use Illuminate\Routing\Controller;
7
use LaravelEnso\Companies\Exceptions\Company as Exception;
8
use LaravelEnso\Companies\Models\Company;
9
use LaravelEnso\People\Models\Person;
10
11
class Destroy extends Controller
12
{
13
    use AuthorizesRequests;
14
15
    public function __invoke(Company $company, Person $person)
16
    {
17
        $this->authorize('manage-people', $company);
18
19
        $isMandatary = $company->mandatary()?->id === $person->id
20
            && $company->people()->exists();
21
22
        if ($isMandatary) {
23
            throw Exception::dissociateMandatary();
24
        }
25
26
        $person->companies()->detach($company->id);
27
    }
28
}
29