Completed
Pull Request — master (#11)
by Laurens
01:46
created

IzettleClientFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 14

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 14
dl 0
loc 37
ccs 25
cts 25
cp 1
rs 10
c 0
b 0
f 0

2 Methods

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