Passed
Push — master ( 205e49...b436ce )
by Philippe
05:25
created

DetachAsset::detach()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 3
eloc 3
c 1
b 0
f 1
nc 4
nop 2
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 3
rs 10
1
<?php
2
3
namespace Thinktomorrow\AssetLibrary\Application;
4
5
use Thinktomorrow\AssetLibrary\HasAsset;
6
7
class DetachAsset
8
{
9
    /**
10
     * Removes an asset completely.
11
     *
12
     * @param $ids
13
     */
14 4
    public function detach(HasAsset $model, $ids): void
15
    {
16 4
        if (! is_array($ids)) $ids = (array) $ids;
17
        
18 4
        foreach ($ids as $id) {
19 4
            $model->assetRelation()->detach($id);
20
        }
21 4
    }
22
23
    /**
24
     * Removes all assets completely.
25
     *
26
     * @param $ids
27
     */
28 2
    public function detachAll(HasAsset $model, ?string $type = null): void
29
    {
30 2
        $builder = $model->assetRelation();
31
32 2
        if($type) {
33 1
            $ids = $builder->where('asset_pivots.type', $type)->get()->pluck('id');
34 1
            $builder->detach($ids);
35
        }else{
36 1
            $builder->detach();
37
        }
38
        
39 2
    }
40
}
41