Projekt

Obecné

Profil

Stáhnout (3.25 KB) Statistiky
| Větev: | Tag: | Revize:
1
<?php
2

    
3
namespace App\AdminModule\Presenters;
4

    
5
use App\AdminModule\Components\IExportFormFactory;
6
use App\AdminModule\Components\IImportFormFactory;
7
use App\Enum\EFlashMessage;
8
use App\Model\Facade\TransportFacade;
9
use App\Model\Repository\ObjectTypeRepository;
10
use App\Model\Repository\SurfaceTypeRepository;
11
use App\Model\TransportModel;
12
use App\Utils\TextParser;
13

    
14
class TransportPresenter extends BaseUserPresenter
15
{
16
    /** @var IImportFormFactory */
17
    private $importFormFactory;
18

    
19
    /** @var IExportFormFactory */
20
    private $exportFormFactory;
21

    
22
    /** @var SurfaceTypeRepository */
23
    private $surfaceTypeRepository;
24

    
25
    /** @var ObjectTypeRepository */
26
    private $objectTypeRepository;
27

    
28
    /** @var TransportFacade */
29
    private $transportFacade;
30

    
31
    /** @var TransportModel */
32
    private $transportModel;
33

    
34
    public function __construct(
35
        IImportFormFactory $importFormFactory,
36
        IExportFormFactory $exportFormFactory,
37
        SurfaceTypeRepository $surfaceTypeRepository,
38
        ObjectTypeRepository $objectTypeRepository,
39
        TransportFacade $transportFacade,
40
        TransportModel $transportModel
41
    )
42
    {
43
        parent::__construct();
44
        $this->importFormFactory = $importFormFactory;
45
        $this->exportFormFactory = $exportFormFactory;
46
        $this->surfaceTypeRepository = $surfaceTypeRepository;
47
        $this->objectTypeRepository = $objectTypeRepository;
48
        $this->transportFacade = $transportFacade;
49
        $this->transportModel = $transportModel;
50
    }
51

    
52
    /**
53
     * View pro zobrazení importovaných dat před uložením do databáze
54
     * @param TextParser $parser
55
     */
56
    public function renderPreviewImport(TextParser $parser)
57
    {
58
        $objectTypes = $this->objectTypeRepository->fetchObjectTypes();
59
        $surfaceTypes = $this->surfaceTypeRepository->fetchSurfaceTypes();
60
        $parser->setTypes($objectTypes, $surfaceTypes);
61

    
62
        $this->transportModel->setParsedText($parser->parseText());
63

    
64
        $this->template->fileName = $parser->getTextFile()->getName();
65
        $this->template->parsedFile = $this->transportModel->getParsedText();
66
        $this->template->transliterationNum = $this->countTransliterations();
67
        $this->template->surfaces = $surfaceTypes;
68
    }
69

    
70
    /** Uloží data z textového souboru do databáze
71
     * @throws \Nette\Application\AbortException
72
     */
73
    public function actionConfirmPreview()
74
    {
75
        $result = $this->transportFacade->saveImportedData($this->transportModel->getParsedText());
76

    
77
        if ($result) {
78
            $this->presenter->flashMessage('All data were imported successfully.', EFlashMessage::SUCCESS);
79
        } else {
80
            $this->presenter->flashMessage('There was an error when importing data.', EFlashMessage::ERROR);
81
        }
82

    
83
        $this->redirect("Transport:");
84
    }
85

    
86
    /** Počítá počet importovaných transliterací */
87
    public function countTransliterations()
88
    {
89
        $num = 0;
90
        foreach ($this->template->parsedFile as $book) {
91
            $num += count($book);
92
        }
93
        return $num;
94
    }
95

    
96
    public function createComponentImportForm()
97
    {
98
        return $this->importFormFactory->create();
99
    }
100

    
101
    public function createComponentExportForm()
102
    {
103
        return $this->exportFormFactory->create();
104
    }
105
}
(11-11/12)