Passed
Push — dev ( 67ecf7...546614 )
by Janko
07:31
created

TradeLibFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 32
dl 0
loc 68
ccs 0
cts 33
cp 0
rs 10
c 1
b 0
f 1
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 1
A createTradeAccountTal() 0 11 1
A createBasicTradeAccountTal() 0 16 1
A createTradePostStorageManager() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Trade\Lib;
6
7
use Stu\Orm\Entity\BasicTradeInterface;
8
use Stu\Orm\Entity\TradePostInterface;
9
use Stu\Orm\Entity\UserInterface;
10
use Stu\Orm\Repository\CommodityRepositoryInterface;
11
use Stu\Orm\Repository\StorageRepositoryInterface;
12
use Stu\Orm\Repository\TradeLicenseRepositoryInterface;
13
use Stu\Orm\Repository\TradeOfferRepositoryInterface;
14
use Stu\Orm\Repository\TradeTransferRepositoryInterface;
15
16
final class TradeLibFactory implements TradeLibFactoryInterface
17
{
18
    private TradeLicenseRepositoryInterface $tradeLicenseRepository;
19
20
    private TradeTransferRepositoryInterface $tradeTransferRepository;
21
22
    private TradeOfferRepositoryInterface $tradeOfferRepository;
23
24
    private StorageRepositoryInterface $storageRepository;
25
26
    private CommodityRepositoryInterface $commodityRepository;
27
28
    public function __construct(
29
        TradeLicenseRepositoryInterface $tradeLicenseRepository,
30
        TradeTransferRepositoryInterface $tradeTransferRepository,
31
        TradeOfferRepositoryInterface $tradeOfferRepository,
32
        StorageRepositoryInterface $storageRepository,
33
        CommodityRepositoryInterface $commodityRepository
34
    ) {
35
        $this->tradeLicenseRepository = $tradeLicenseRepository;
36
        $this->tradeTransferRepository = $tradeTransferRepository;
37
        $this->tradeOfferRepository = $tradeOfferRepository;
38
        $this->storageRepository = $storageRepository;
39
        $this->commodityRepository = $commodityRepository;
40
    }
41
42
    public function createTradeAccountTal(
43
        TradePostInterface $tradePost,
44
        int $userId
45
    ): TradeAccountTalInterface {
46
        return new TradeAccountTal(
47
            $this->tradeLicenseRepository,
48
            $this->tradeTransferRepository,
49
            $this->tradeOfferRepository,
50
            $this->storageRepository,
51
            $tradePost,
52
            $userId
53
        );
54
    }
55
56
    public function createBasicTradeAccountTal(
57
        TradePostInterface $tradePost,
58
        array $basicTrades,
59
        int $userId
60
    ): BasicTradeAccountTalInterface {
61
        $filteredBasicTrades = array_filter(
62
            $basicTrades,
63
            fn (BasicTradeInterface $basicTrade): bool => $basicTrade->getFaction()->getId() === $tradePost->getTradeNetwork()
64
        );
65
66
        return new BasicTradeAccountTal(
67
            $this->storageRepository,
68
            $tradePost,
69
            $filteredBasicTrades,
70
            $userId,
71
            $this->commodityRepository
72
        );
73
    }
74
75
    public function createTradePostStorageManager(
76
        TradePostInterface $tradePost,
77
        UserInterface $user
78
    ): TradePostStorageManagerInterface {
79
        return new TradePostStorageManager(
80
            $this->storageRepository,
81
            $this->commodityRepository,
82
            $tradePost,
83
            $user
84
        );
85
    }
86
}
87