1 <?php
2
3 namespace PLus\Orders\Factory;
4
5 use Nette\Application\UI;
6 use Nette\Utils\Html;
7 use Nette\Database\Table\Selection;
8 use Kdyby\BootstrapFormRenderer\BootstrapRenderer;
9 use PLus\Orders\Repositories;
10
11 12 13 14 15
16 class DocumentFactory extends \Nette\Object {
17
18
19 public $documenttypeRepository;
20
21
22 public $documentRepository;
23
24
25 public $timelineRepository;
26
27
28 public $parameters;
29
30
31 function __construct(Repositories\Lists\DocumenttypeRepository $documenttypeRepository, Repositories\Documents\DocumentRepository $documentRepository, Repositories\Order\TimelineRepository $timelineRepository, Repositories\Config\Parameters $parameters) {
32 $this->documenttypeRepository = $documenttypeRepository;
33 $this->documentRepository = $documentRepository;
34 $this->timelineRepository = $timelineRepository;
35 $this->parameters = $parameters;
36 }
37
38
39 40 41 42 43
44 public function createAddDocument($idorder,$iduser) {
45
46 $maxsize = $this->parameters->getMaxSizeUpload();
47 $maxsizeToHuman = $this->parameters->formatBytes($maxsize);
48 $form = new UI\Form();
49 $form->setRenderer(new BootstrapRenderer());
50
51 $form->getElementPrototype()->class = 'form-horizontal';
52 $form->addText('namedoc', 'Jméno dokumentu:')
53 ->setAttribute('class', 'form-control');
54 $form->addSelect('documenttype_id', 'Typ dokumentu:', array(0 => '') + $this->documenttypeRepository->getPairData())
55 ->setAttribute('class', 'form-control2');
56 $form->addUpload('file', 'Soubor:', FALSE)
57 ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální povolená velikost souboru je '.$maxsizeToHuman.'.', $maxsize );
58
59 $form->addSubmit('saving', 'Nahrát')
60 ->setAttribute('class', 'btn btn-primary');
61
62
63 $form->addHidden('idorder', $idorder);
64 $form->addHidden('iduser', $iduser);
65
66
67 $form->onSuccess[] = function (UI\Form $form, $values) {
68
69 $data = new \Nette\Utils\ArrayHash;
70 $data->documenttype_id = ($values->documenttype_id == 0? NULL : $values->documenttype_id);
71
72 if ($values->file->isOk()) {
73 if(mb_strlen($values->namedoc,'UTF-8') == 0) {
74 $data->name = $values->file->getName();
75 } else {
76 $data->name = $values->namedoc;
77 }
78 $data->filename = $values->file->getName();
79 $data->mime = $values->file->getContentType();
80 $data->data = $values->file->getContents();
81 $data->lastmod = date('Y-m-d H:i:s');
82 $data->user_id = $values->iduser;
83 $data->order_id = $values->idorder;
84 }
85 $this->documentRepository->insertData($data);
86
87
88 $this->timelineRepository->insertData(array(
89 'order_id' => $values->idorder,
90 'user_id' => $values->iduser,
91 'event_id' => 10,
92 'created' => date('Y-m-d H:i:s')
93 ));
94
95 };
96
97 return $form;
98 }
99
100
101
102 103 104 105 106
107 public function createUpdateNameDocument(){
108
109 $form = new UI\Form();
110 $form->setRenderer(new BootstrapRenderer());
111
112 $form->getElementPrototype()->class = 'form-horizontal';
113 $form->addText('namedoc', 'Jméno dokumentu:')
114 ->setRequired('Zadejte název souboru')
115 ->setAttribute('class', 'form-control')
116 ->setAttribute('id', 'inputName');
117
118 $form->addText('iddoc')
119 ->setAttribute('id', 'inputId')
120 ->setAttribute('type', 'hidden');
121
122 $form->addSubmit('saving', 'Uložit')
123 ->setAttribute('class', 'btn btn-primary');
124
125 $form->onSuccess[] = function (UI\Form $form, $values) {
126
127 $documentid = $values->iddoc;
128 $name = $values->namedoc;
129 $this->documentRepository->updateById($documentid, array('name' => $name));
130
131 };
132
133 return $form;
134 }
135
136 137 138 139
140 public function createDeleteDocument() {
141
142 $form = new UI\Form();
143 $form->setRenderer(new BootstrapRenderer());
144
145 $form->getElementPrototype()->class = 'form-horizontal';
146
147 $form->addText('iddoc')
148 ->setAttribute('id', 'inputId')
149 ->setAttribute('type', 'hidden');
150
151 $form->addSubmit('remove', 'Odstranit')
152 ->setAttribute('class', 'btn btn-primary');
153
154 $form->onSuccess[] = function (UI\Form $form, $values) {
155
156 $documentid = $values->iddoc;
157 $this->documentRepository->deleteById($documentid);
158 };
159
160 return $form;
161 }
162 }
163