1 <?php
2
3 namespace Objednavky;
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 use PLus\Orders\Factory;
11
12 13 14 15 16
17 class EconomistPresenter extends BasePresenter {
18
19
20 public $orderRepository;
21
22
23 public $ordertypeRepository;
24
25
26 public $realizationRepository;
27
28
29 public $timelineRepository;
30
31
32 public $itemorderRepository;
33
34
35 public $unituserRepository;
36
37
38 public $unitRepository;
39
40
41 public $documentFactory;
42
43
44 public $documenttypeRepository;
45
46
47 public $documentRepository;
48
49
50 public $chiefRepository;
51
52
53 public $traderRepository;
54
55
56 public $managerRepository;
57
58
59 public $cfgRepository;
60
61
62 public $parameters;
63
64
65 public $mailerCfg;
66
67
68
69
70
71 public function createComponentEconomistApprovedGrid($name) {
72
73 $user = $this->getUser();
74
75 $grid = new \Grido\Grid($this, $name);
76 $grid->setmodel($this->orderRepository->getGridSelectionEconomistApproved());
77
78 $grid->translator->lang = 'cs';
79 $grid->setDefaultSort(array('id' => 'DESC'));
80 $grid->defaultPerPage = 15;
81 $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
82 $grid->setRememberState(FALSE);
83
84
85 $grid->addColumnText('id', 'ID')
86 ->setSortable()
87 ->setFilterText()
88 ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
89 $grid->getColumn('id')->cellPrototype->class[] = 'center';
90 $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
91
92 $grid->addColumnText('name', 'Předmět')
93 ->setSortable()
94 ->setColumn('name')
95 ->setFilterText()
96 ->setColumn('name')
97 ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");})
98 ->setSuggestion();
99 $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
100
101 $grid->addColumnDate('created', 'Vytvořeno')
102 ->setSortable()
103 ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
104 ->setFilterDate();
105 $grid->getColumn('created')->cellPrototype->class[] = 'center';
106
107 $grid->addColumnText('ns', 'NS')
108 ->setSortable()
109 ->setColumn('ns')
110 ->setFilterText()
111 ->setColumn('ns')
112 ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");})
113 ->setSuggestion();
114 $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
115
116 $grid->addColumnText('uname', 'Název')
117 ->setSortable()
118 ->setColumn('uname')
119 ->setFilterText()
120 ->setColumn('uname')
121 ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");})
122 ->setSuggestion();
123 $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
124
125 $grid->addColumnText('tname', 'Typ')
126 ->setSortable()
127 ->setColumn('tname');
128 $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
129 $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
130 ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
131
132
133
134
135
136 $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
137 ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
138
139
140
141 $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
142 $columnr->setSortable()->headerPrototype->style['width'] ='4%';
143 $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';
144 $grid->addFilterCheck('realized', 'Jen realizované objednávky')
145 ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag ?' , '2'): NULL;});
146
147 $grid->addActionHref('view', 'Zobrazit')
148 ->setIcon('fa fa-eye fa-fw');
149 }
150
151
152
153 public function renderView($id){
154
155 $item = $this->orderRepository->findById($id);
156
157 if ($item === false) {
158 $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
159 $this->redirect('Homepage:default');
160 }
161
162
163 $orderbyid = $this->orderRepository->findOrderForEconom($id);
164 if($orderbyid === false){
165 $this->flashMessage('Nemáte právo přístupu k objednávce č. '.$id, 'error');
166 $this->redirect('Economist:approved');
167 }
168 else {
169 $this->template->orderdetail = $orderbyid;
170 }
171
172
173 $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id);
174
175 $this->template->documentRepository = $this->documentRepository;
176 $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
177
178 $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
179
180
181 $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
182 $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
183 $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
184
185 $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
186
187
188 $this->template->icons = $this->cfgRepository->getTimelineIcons();
189 $this->template->colors = $this->cfgRepository->getTimelineColors();
190 $this->template->inverted = $this->cfgRepository->getTimelineInverted();
191
192
193 $mySection = $this->getSession()->getSection('history');
194 $mySection->beforePresenter = 'Economist';
195 $mySection->setExpiration(0);
196
197 }
198
199 200 201 202 203
204 public function createComponentAddDocument() {
205
206 try {
207 $iduser = $this->getUser()->getId();
208 $idorder = $this->getParameter('id');
209
210 $form = $this->documentFactory->createAddDocument($idorder,$iduser);
211 $this->flashMessage('Soubor byl uložen.', 'success');
212
213 return $form;
214
215 } catch (\PDOException $e) {
216 $this->flashMessage("Soubor se nepodařilo uložit!", "error");
217 }
218
219 }
220
221 222 223 224 225
226 public function createComponentUpdateNameDocument(){
227
228 try {
229 $form = $this->documentFactory->createUpdateNameDocument();
230 $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
231
232 return $form;
233
234 } catch (\PDOException $e) {
235 $this->flashMessage('Chyba při uložení do DB.', 'error');
236 }
237 }
238 }
239