Passed
Pull Request — master (#1699)
by Nico
43:19 queued 18:45
created

TradeProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 39
dl 0
loc 64
ccs 0
cts 35
cp 0
rs 10
c 0
b 0
f 0
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setTemplateVariables() 0 42 5
A __construct() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Game\Lib\View\Provider;
6
7
use Stu\Component\Game\GameEnum;
8
use Stu\Component\Trade\TradeEnum;
9
use Stu\Lib\SessionInterface;
10
use Stu\Module\Control\GameControllerInterface;
11
use Stu\Module\Game\Lib\View\Provider\ViewComponentProviderInterface;
12
use Stu\Module\Trade\Lib\TradeOfferItem;
13
use Stu\Module\Trade\Lib\TradeOfferItemInterface;
14
use Stu\Orm\Entity\TradeOfferInterface;
15
use Stu\Orm\Repository\CommodityRepositoryInterface;
16
use Stu\Orm\Repository\TradeLicenseRepositoryInterface;
17
use Stu\Orm\Repository\TradeOfferRepositoryInterface;
18
19
final class TradeProvider implements ViewComponentProviderInterface
20
{
21
    private TradeLicenseRepositoryInterface $tradeLicenseRepository;
22
23
    private TradeOfferRepositoryInterface $tradeOfferRepository;
24
25
    private CommodityRepositoryInterface $commodityRepository;
26
27
    private SessionInterface $session;
28
29
    public function __construct(
30
        TradeLicenseRepositoryInterface $tradeLicenseRepository,
31
        TradeOfferRepositoryInterface $tradeOfferRepository,
32
        CommodityRepositoryInterface $commodityRepository,
33
        SessionInterface $session
34
    ) {
35
        $this->tradeLicenseRepository = $tradeLicenseRepository;
36
        $this->tradeOfferRepository = $tradeOfferRepository;
37
        $this->commodityRepository = $commodityRepository;
38
        $this->session = $session;
39
    }
40
41
    public function setTemplateVariables(GameControllerInterface $game): void
42
    {
43
        $user = $game->getUser();
44
        $userId = $user->getId();
45
46
        $isFilterActive = $game->getViewContext()['FILTER_ACTIVE'] ?? false;
47
48
        $commodityId = null;
49
        $postId = null;
50
        $dir = TradeEnum::FILTER_COMMODITY_IN_BOTH;
51
        if ($isFilterActive) {
52
            if ($this->session->getSessionValue('trade_filter_cid')) {
53
                $commodityId = $this->session->getSessionValue('trade_filter_cid');
54
            }
55
            if ($this->session->getSessionValue('trade_filter_pid')) {
56
                $postId = $this->session->getSessionValue('trade_filter_pid');
57
            }
58
            if ($this->session->getSessionValue('trade_filter_dir')) {
59
                $dir = $this->session->getSessionValue('trade_filter_dir');
60
            }
61
        } else {
62
            $this->session->deleteSessionData('trade_filter_cid');
63
            $this->session->deleteSessionData('trade_filter_pid');
64
            $this->session->deleteSessionData('trade_filter_dir');
65
        }
66
67
        $game->setTemplateVar('COMMODITY_ID', $commodityId ?? 0);
68
        $game->setTemplateVar('POST_ID', $postId ?? 0);
69
70
        $tradeLicenses = $this->tradeLicenseRepository->getLicensesCountbyUser($userId);
71
        $game->setTemplateVar('TRADE_LICENSES', $tradeLicenses);
72
        $game->setTemplateVar('TRADE_LICENSE_COUNT', count($tradeLicenses));
73
74
        $commodityList = $this->commodityRepository->getTradeable();
75
        $game->setTemplateVar('SELECTABLE_COMMODITIES', $commodityList);
76
77
        $game->setTemplateVar('MAX_TRADE_LICENSE_COUNT', GameEnum::MAX_TRADELICENSE_COUNT);
78
        $game->setTemplateVar(
79
            'OFFER_LIST',
80
            array_map(
81
                fn (TradeOfferInterface $tradeOffer): TradeOfferItemInterface => new TradeOfferItem($tradeOffer, $user),
82
                $this->tradeOfferRepository->getByUserLicenses($userId, $commodityId, $postId, $dir)
83
            )
84
        );
85
    }
86
}
87