Completed
Pull Request — master (#10)
by Laurens
02:06
created

IzettleClientFactory   B

Complexity

Total Complexity 4

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 18

Test Coverage

Coverage 88.57%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 18
dl 0
loc 55
ccs 31
cts 35
cp 0.8857
rs 7.3333
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getProductClient() 0 18 1
A getPurchaseClient() 0 15 1
A getFinanceClient() 0 9 1
A getInventoryClient() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LauLamanApps\IzettleApi;
6
7
use LauLamanApps\IzettleApi\Client\Finance\AccountTransactionBuilder;
8
use LauLamanApps\IzettleApi\Client\Finance\PayoutInfoBuilder;
9
use LauLamanApps\IzettleApi\Client\FinanceClient;
10
use LauLamanApps\IzettleApi\Client\InventoryClient;
11
use LauLamanApps\IzettleApi\Client\Product\CategoryBuilder;
12
use LauLamanApps\IzettleApi\Client\Product\DiscountBuilder;
13
use LauLamanApps\IzettleApi\Client\Product\LibraryBuilder;
14
use LauLamanApps\IzettleApi\Client\Product\ProductBuilder as ProductProductBuilder;
15
use LauLamanApps\IzettleApi\Client\Product\VariantBuilder;
16
use LauLamanApps\IzettleApi\Client\ProductClient;
17
use LauLamanApps\IzettleApi\Client\Purchase\CoordinatesBuilder;
18
use LauLamanApps\IzettleApi\Client\Purchase\PaymentBuilder;
19
use LauLamanApps\IzettleApi\Client\Purchase\ProductBuilder as PurchaseProductBuilder;
20
use LauLamanApps\IzettleApi\Client\Purchase\PurchaseBuilder;
21
use LauLamanApps\IzettleApi\Client\Purchase\PurchaseHistoryBuilder;
22
use LauLamanApps\IzettleApi\Client\Purchase\VatBuilder;
23
use LauLamanApps\IzettleApi\Client\PurchaseClient;
24
use LauLamanApps\IzettleApi\Client\Universal\ImageBuilder;
25
use Ramsey\Uuid\UuidInterface;
26
27
final class IzettleClientFactory
28
{
29 4
    public static function getProductClient(IzettleClientInterface $client, ?UuidInterface $organizationUuid = null): ProductClient
30
    {
31 4
        $categoryBuilder = new CategoryBuilder();
32 4
        $imageBuilder = new ImageBuilder();
33 4
        $variantBuilder = new VariantBuilder();
34 4
        $discountBuilder = new DiscountBuilder($imageBuilder);
35 4
        $productBuilder = new ProductProductBuilder($categoryBuilder, $imageBuilder, $variantBuilder);
36 4
        $libraryBuilder = new LibraryBuilder($productBuilder, $discountBuilder);
37
38 4
        return new ProductClient(
39 4
            $client,
40 4
            $organizationUuid,
41 4
            $categoryBuilder,
42 4
            $discountBuilder,
43 4
            $libraryBuilder,
44 4
            $productBuilder
45
        );
46
    }
47
48 3
    public static function getPurchaseClient(IzettleClientInterface $client): PurchaseClient
49
    {
50 3
        $coordinatesBuilder = new CoordinatesBuilder();
51 3
        $purchaseProductBuilder = new PurchaseProductBuilder();
52 3
        $paymentBuilder = new PaymentBuilder();
53 3
        $vatBuilder = new VatBuilder();
54 3
        $purchaseBuilder = new PurchaseBuilder($coordinatesBuilder, $purchaseProductBuilder, $paymentBuilder, $vatBuilder);
55 3
        $purchaseHistoryBuilder = new PurchaseHistoryBuilder($purchaseBuilder);
56
57 3
        return new PurchaseClient(
58 3
            $client,
59 3
            $purchaseHistoryBuilder,
60 3
            $purchaseBuilder
61
        );
62
    }
63
64 3
    public static function getFinanceClient(IzettleClientInterface $client, ?UuidInterface $organizationUuid = null): FinanceClient
65
    {
66 3
        return new FinanceClient(
67 3
            $client,
68 3
            $organizationUuid,
69 3
            new AccountTransactionBuilder(),
70 3
            new PayoutInfoBuilder()
71
        );
72
    }
73
74
    public static function getInventoryClient(IzettleClientInterface $client, ?UuidInterface $organizationUuid = null): InventoryClient
75
    {
76
        return new InventoryClient(
77
            $client,
78
            $organizationUuid
79
        );
80
    }
81
}
82