Completed
Push — feature/fixing_cost ( 2c76a0...f58af6 )
by Laurent
01:38
created

FlightDamageController   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
dl 0
loc 66
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getDamagesRepository() 0 4 1
A getFlightDamageRepository() 0 4 1
A getInvoiceDamageCommandHandler() 0 4 1
A view() 0 9 1
A bill() 0 13 1
A handleInvoice() 0 14 3
1
<?php
2
3
4
namespace FlightLog\Http\Web\Controller;
5
6
7
use FlightLog\Application\Damage\Command\InvoiceDamageCommand;
8
use FlightLog\Application\Damage\Command\InvoiceDamageCommandHandler;
9
use FlightLog\Application\Damage\Query\GetDamagesForFlightQueryRepositoryInterface;
10
use FlightLog\Infrastructure\Damage\Query\Repository\GetDamagesForFlightQueryRepository;
11
use FlightLog\Infrastructure\Damage\Repository\FlightDamageRepository;
12
use Form;
13
14
final class FlightDamageController extends WebController
15
{
16
17
    /**
18
     * @return GetDamagesForFlightQueryRepositoryInterface
19
     */
20
    private function getDamagesRepository()
21
    {
22
        return new GetDamagesForFlightQueryRepository($this->db);
23
    }
24
25
    /**
26
     * @return FlightDamageRepository
27
     */
28
    private function getFlightDamageRepository()
29
    {
30
        return new FlightDamageRepository($this->db);
31
    }
32
33
    /**
34
     * @return InvoiceDamageCommandHandler
35
     */
36
    private function getInvoiceDamageCommandHandler()
37
    {
38
        return new InvoiceDamageCommandHandler($this->getFlightDamageRepository());
39
    }
40
41
    public function view()
42
    {
43
        $flightId = $this->request->getParam('id');
44
45
        $this->render('flight_damage/view.php', [
46
            'damages' => $this->getDamagesRepository()->__invoke($flightId),
47
            'flightId' => $flightId,
48
        ]);
49
    }
50
51
    public function bill()
52
    {
53
        $flightId = $this->request->getParam('id');
54
        $currentDamageId = $this->request->getParam('damage');
55
56
        $form = new Form($this->db);
57
58
        $url = sprintf('%s/flightlog/card_tab_damage.php?id=%s&damage=%s', DOL_URL_ROOT, $flightId, $currentDamageId);
59
60
        $html = $form->formconfirm($url, 'êtes-vous sure de vouloir marquer ce dégât comme facturé?', '','confirm_bill_damage');
61
62
        $this->renderHtml($html);
63
    }
64
65
    public function handleInvoice()
66
    {
67
        $flightId = $this->request->getParam('id');
68
        $currentDamageId = $this->request->getParam('damage');
69
        $confirmation = $this->request->getParam('confirm');
70
71
        if(!$this->request->isPost() || $confirmation === 'no'){
72
            $this->redirect($_SERVER["PHP_SELF"].'?id='.$flightId);
73
            return;
74
        }
75
76
        $this->getInvoiceDamageCommandHandler()->__invoke(new InvoiceDamageCommand($currentDamageId));
77
        $this->redirect($_SERVER["PHP_SELF"].'?id='.$flightId);
78
    }
79
}