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

TradeLibFactory::createTradeAccountTal()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 2
dl 0
loc 11
ccs 0
cts 8
cp 0
crap 2
rs 10
c 0
b 0
f 0
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