findLocalCustomerBySyncKey()   A
last analyzed

Complexity

Conditions 4
Paths 8

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 4.0466

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 12
ccs 6
cts 7
cp 0.8571
rs 10
cc 4
nc 8
nop 1
crap 4.0466
1
<?php
2
3
namespace GoCardlessPayment\Repositories;
4
5
use GoCardlessPayment\Contracts\GoCardlessCustomer;
6
use GoCardlessPayment\Contracts\LocalCustomerRepository;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Database\Eloquent\SoftDeletes;
9
10
class LocalCustomerEloquentRepository implements LocalCustomerRepository
11
{
12
    public readonly string $localCustomerModel;
13
14
    public readonly string $syncLocalKeyName;
15
16 8
    public function __construct(string $localCustomerModel, string $syncLocalKeyName)
17
    {
18 8
        $this->localCustomerModel = $localCustomerModel;
0 ignored issues
show
Bug introduced by
The property localCustomerModel is declared read-only in GoCardlessPayment\Reposi...tomerEloquentRepository.
Loading history...
19 8
        $this->syncLocalKeyName = $syncLocalKeyName;
0 ignored issues
show
Bug introduced by
The property syncLocalKeyName is declared read-only in GoCardlessPayment\Reposi...tomerEloquentRepository.
Loading history...
20
    }
21
22 6
    public function findLocalCustomer(string|GoCardlessCustomer $gocardlessId): ?GoCardlessCustomer
23
    {
24 6
        $gocardlessId = $gocardlessId instanceof GoCardlessCustomer ? $gocardlessId->gocardlessKey() : $gocardlessId;
25
26
        /** @var class-string<Model> $model */
27 6
        $model = $this->localCustomerModel;
28
29 6
        $builder = in_array(SoftDeletes::class, class_uses_recursive($model))
30
            ? $model::withTrashed()
31 6
            : new $model;
32
33 6
        return $gocardlessId ? $builder->where($this->syncLocalKeyName, $gocardlessId)->first() : null;
34
    }
35
36 2
    public function findLocalCustomerBySyncKey(string|GoCardlessCustomer $id): ?GoCardlessCustomer
37
    {
38 2
        $id = $id instanceof GoCardlessCustomer ? $id->getSyncKey() : $id;
39
40
        /** @var class-string<Model> $model */
41 2
        $model = $this->localCustomerModel;
42
43 2
        $builder = in_array(SoftDeletes::class, class_uses_recursive($model))
44
            ? $model::withTrashed()
45 2
            : new $model;
46
47 2
        return $id ? $builder->whereKey($id)->first() : null;
48
    }
49
}
50