Passed
Push — master ( 593336...bc2cf1 )
by Hannes
02:43
created

TransactionsConsole::execute()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 9
c 0
b 0
f 0
nc 6
nop 2
dl 0
loc 13
rs 9.9666
1
<?php
2
/**
3
 * This file is part of byrokrat\giroapp.
4
 *
5
 * byrokrat\giroapp is free software: you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License as published
7
 * by the Free Software Foundation, either version 3 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * byrokrat\giroapp is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with byrokrat\giroapp. If not, see <http://www.gnu.org/licenses/>.
17
 *
18
 * Copyright 2016-19 Hannes Forsgård
19
 */
20
21
declare(strict_types = 1);
22
23
namespace byrokrat\giroapp\Console;
24
25
use byrokrat\giroapp\DependencyInjection\DonorEventStoreProperty;
26
use Symfony\Component\Console\Command\Command;
27
use Symfony\Component\Console\Input\InputOption;
28
use Symfony\Component\Console\Input\InputInterface;
29
use Symfony\Component\Console\Output\OutputInterface;
30
31
final class TransactionsConsole implements ConsoleInterface
32
{
33
    use Helper\DonorArgument, DonorEventStoreProperty;
34
35
    public function configure(Command $command): void
36
    {
37
        $command->setName('transactions');
38
        $command->setAliases(['trans']);
39
        $command->setDescription('List transactions from donor');
40
        $command->setHelp('Display transactions information from a donor');
41
        $this->configureDonorArgument($command);
42
        $command->addOption('failed', null, InputOption::VALUE_NONE, 'Show failed transactions');
43
    }
44
45
    public function execute(InputInterface $input, OutputInterface $output): void
46
    {
47
        $donor = $this->readDonor($input);
48
49
        $type = $input->getOption('failed') ? 'TRANSACTION_FAILED' : 'TRANSACTION_PERFORMED';
50
51
        foreach ($this->donorEventStore->readEntriesForMandateKey($donor->getMandateKey()) as $entry) {
52
            if ($entry->getType() == $type) {
53
                $data = $entry->getData();
54
                $output->writeln(sprintf(
55
                    'SEK %s on %s',
56
                    $data['transaction_amount'] ?? '',
57
                    $data['transaction_date'] ?? ''
58
                ));
59
            }
60
        }
61
    }
62
}
63