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

IzettleClientFactory   C

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 23

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 23
dl 0
loc 64
c 0
b 0
f 0
rs 5.5
ccs 31
cts 31
cp 1

5 Methods

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