Projekt

Obecné

Profil

Stáhnout (3.15 KB) Statistiky
| Větev: | Tag: | Revize:
1 1a669408 Petr Lukašík
<?php
2
3
namespace App\AdminModule\Presenters;
4
5
use App\AdminModule\Components\IExportFormFactory;
6
use App\AdminModule\Components\IImportFormFactory;
7 ce045025 Petr Lukašík
use App\Enum\EFlashMessage;
8
use App\Model\Facade\TransportFacade;
9 2d082bc2 Petr Lukašík
use App\Model\Repository\ObjectTypeRepository;
10
use App\Model\Repository\SurfaceTypeRepository;
11
use App\Utils\TextParser;
12 1a669408 Petr Lukašík
13
class TransportPresenter extends BaseUserPresenter
14
{
15 ce045025 Petr Lukašík
    /** @var IImportFormFactory */
16 1a669408 Petr Lukašík
    private $importFormFactory;
17
18 ce045025 Petr Lukašík
    /** @var IExportFormFactory */
19 1a669408 Petr Lukašík
    private $exportFormFactory;
20
21 2d082bc2 Petr Lukašík
    /** @var SurfaceTypeRepository */
22
    private $surfaceTypeRepository;
23
24
    /** @var ObjectTypeRepository */
25
    private $objectTypeRepository;
26
27 ce045025 Petr Lukašík
    /** @var TransportFacade */
28
    private $transportFacade;
29
30 1a669408 Petr Lukašík
    public function __construct(
31
        IImportFormFactory $importFormFactory,
32 2d082bc2 Petr Lukašík
        IExportFormFactory $exportFormFactory,
33
        SurfaceTypeRepository $surfaceTypeRepository,
34 ce045025 Petr Lukašík
        ObjectTypeRepository $objectTypeRepository,
35
        TransportFacade $transportFacade
36 1a669408 Petr Lukašík
    )
37
    {
38
        parent::__construct();
39
        $this->importFormFactory = $importFormFactory;
40
        $this->exportFormFactory = $exportFormFactory;
41 2d082bc2 Petr Lukašík
        $this->surfaceTypeRepository = $surfaceTypeRepository;
42
        $this->objectTypeRepository = $objectTypeRepository;
43 ce045025 Petr Lukašík
        $this->transportFacade = $transportFacade;
44 2d082bc2 Petr Lukašík
    }
45
46 ce045025 Petr Lukašík
    /**
47
     * View pro zobrazení importovaných dat před uložením do databáze
48
     * @param TextParser $parser
49
     */
50
    public function renderPreviewImport(TextParser $parser)
51
    {
52 2d082bc2 Petr Lukašík
        $objectTypes = $this->objectTypeRepository->fetchObjectTypes();
53
        $surfaceTypes = $this->surfaceTypeRepository->fetchSurfaceTypes();
54
        $parser->setTypes($objectTypes, $surfaceTypes);
55
56 ce045025 Petr Lukašík
        // Potřebuju to jako persistentní data do další akce presenteru
57
        $_SESSION['parsedText'] = $parser->parseText();
58
59
        $this->template->fileName = $parser->getTextFile()->getName();
60
        $this->template->parsedFile = $_SESSION['parsedText'];
61 2d082bc2 Petr Lukašík
        $this->template->transliterationNum = $this->countTransliterations();
62
        $this->template->surfaces = $surfaceTypes;
63
    }
64
65 ce045025 Petr Lukašík
    /** Uloží data z textového souboru do databáze
66
     * @throws \Nette\Application\AbortException
67
     */
68
    public function actionConfirmPreview()
69
    {
70
        $result = $this->transportFacade->saveImportedData($_SESSION['parsedText']);
71
        $_SESSION['parsedText'] = null;
72
73
        if ($result) {
74
            $this->presenter->flashMessage('All data were imported successfully.', EFlashMessage::SUCCESS);
75
        } else {
76
            $this->presenter->flashMessage('There was an error when importing data.', EFlashMessage::ERROR);
77
        }
78
79
        $this->redirect("Transport:");
80
    }
81
82
    /** Počítá počet importovaných transliterací */
83
    public function countTransliterations()
84
    {
85
        $num = 0;
86
        foreach ($this->template->parsedFile as $book) {
87 2d082bc2 Petr Lukašík
            $num += count($book);
88
        }
89
        return $num;
90 1a669408 Petr Lukašík
    }
91
92
    public function createComponentImportForm()
93
    {
94
        return $this->importFormFactory->create();
95
    }
96
97
    public function createComponentExportForm()
98
    {
99
        return $this->exportFormFactory->create();
100
    }
101
}