LocalCustomerEloquentRepository   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 88.24%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 17
c 1
b 0
f 0
dl 0
loc 38
ccs 15
cts 17
cp 0.8824
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A findLocalCustomer() 0 12 4
A findLocalCustomerBySyncKey() 0 12 4
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