IS objednávky
  • Namespace
  • Class

Namespaces

  • Grido
    • Components
      • Columns
  • Objednavky
  • PLus
    • Orders
      • Factory
      • Repositories
        • Config
        • Documents
        • Entities
        • Lists
        • Messages
        • Order
        • Security
      • Routers

Classes

  • Grido\Components\Columns\Boolean
  • Grido\Components\Columns\BooleanExtension
  • Objednavky\AreaPresenter
  • Objednavky\BasePresenter
  • Objednavky\BranchPresenter
  • Objednavky\ConsultantPresenter
  • Objednavky\ConsultationPresenter
  • Objednavky\DepartmentPresenter
  • Objednavky\DimenzionPresenter
  • Objednavky\DirectorPresenter
  • Objednavky\DocumenttypePresenter
  • Objednavky\DownloadPresenter
  • Objednavky\EconomistPresenter
  • Objednavky\ErrorPresenter
  • Objednavky\ExpertPresenter
  • Objednavky\HomepagePresenter
  • Objednavky\InvestmentPresenter
  • Objednavky\ItemorderPresenter
  • Objednavky\JustifyPresenter
  • Objednavky\MailerPresenter
  • Objednavky\ManagerPresenter
  • Objednavky\NewsPresenter
  • Objednavky\OrderPresenter
  • Objednavky\RolePresenter
  • Objednavky\SignPresenter
  • Objednavky\TraderPresenter
  • Objednavky\UnitPresenter
  • Objednavky\UserPresenter
  • PLus\Orders\Factory\ConsultationFactory
  • PLus\Orders\Factory\DocumentFactory
  • PLus\Orders\Repositories\Config\CfgRepository
  • PLus\Orders\Repositories\Config\Mailer
  • PLus\Orders\Repositories\Config\Parameters
  • PLus\Orders\Repositories\Documents\DocumentRepository
  • PLus\Orders\Repositories\Entities\BranchRepository
  • PLus\Orders\Repositories\Entities\ChiefRepository
  • PLus\Orders\Repositories\Entities\DepartmentRepository
  • PLus\Orders\Repositories\Entities\ExpertRepository
  • PLus\Orders\Repositories\Entities\ManagerRepository
  • PLus\Orders\Repositories\Entities\TraderRepository
  • PLus\Orders\Repositories\Entities\UnitRepository
  • PLus\Orders\Repositories\Entities\UnituserRepository
  • PLus\Orders\Repositories\Entities\UserRepository
  • PLus\Orders\Repositories\Lists\AreaRepository
  • PLus\Orders\Repositories\Lists\DimenzionRepository
  • PLus\Orders\Repositories\Lists\DocumenttypeRepository
  • PLus\Orders\Repositories\Lists\EventRepository
  • PLus\Orders\Repositories\Lists\JustifyRepository
  • PLus\Orders\Repositories\Lists\OrdertypeRepository
  • PLus\Orders\Repositories\Messages\CommentRepository
  • PLus\Orders\Repositories\Messages\ConsultationRepository
  • PLus\Orders\Repositories\Messages\NewsRepository
  • PLus\Orders\Repositories\Messages\PostRepository
  • PLus\Orders\Repositories\Order\InvestmentchatRepository
  • PLus\Orders\Repositories\Order\InvestmentRepository
  • PLus\Orders\Repositories\Order\ItemareastateRepository
  • PLus\Orders\Repositories\Order\ItemorderRealizationRepository
  • PLus\Orders\Repositories\Order\ItemorderRepository
  • PLus\Orders\Repositories\Order\OrderRepository
  • PLus\Orders\Repositories\Order\RealizationRepository
  • PLus\Orders\Repositories\Order\TimelineRepository
  • PLus\Orders\Repositories\Repository
  • PLus\Orders\Repositories\Security\RoleRepository
  • PLus\Orders\Repositories\Security\UserManager
  • PLus\Orders\Routers\RouterFactory
  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  * Description of ExpertPresenter
 15  *
 16  * @author Petr
 17  */
 18 class ExpertPresenter extends BasePresenter {
 19     
 20     /** @var Repositories\Order\OrderRepository @inject */
 21     public $orderRepository;
 22     
 23     /** @var Repositories\Lists\OrdertypeRepository @inject */
 24     public $ordertypeRepository;
 25     
 26     /** @var Repositories\Order\RealizationRepository @inject */
 27     public $realizationRepository;
 28     
 29     /** @var Repositories\Order\TimelineRepository @inject */
 30     public $timelineRepository;
 31     
 32     /** @var Repositories\Order\ItemorderRepository @inject */
 33     public $itemorderRepository;
 34     
 35     /** @var Repositories\Order\ItemareastateRepository @inject */
 36     public $itemareastateRepository;
 37     
 38     /** @var Repositories\Entities\UnituserRepository @inject */
 39     public $unituserRepository;
 40     
 41     /** @var Repositories\Entities\UserRepository @inject */
 42     public $userRepository;
 43     
 44     /** @var Repositories\Entities\UnitRepository @inject */
 45     public $unitRepository;
 46     
 47     /** @var Factory\DocumentFactory @inject */
 48     public $documentFactory;
 49     
 50     /** @var Repositories\Lists\DocumenttypeRepository @inject */
 51     public $documenttypeRepository;
 52     
 53     /** @var Repositories\Documents\DocumentRepository @inject */
 54     public $documentRepository;
 55     
 56     /** @var Repositories\Entities\ChiefRepository @inject */
 57     public $chiefRepository;
 58     
 59     /** @var Repositories\Entities\TraderRepository @inject */
 60     public $traderRepository;
 61 
 62     /** @var Repositories\Entities\ManagerRepository @inject */
 63     public $managerRepository;
 64     
 65     /** @var Repositories\Lists\AreaRepository @inject */
 66     public $areaRepository;
 67     
 68     /** @var Repositories\Messages\ConsultationRepository @inject */
 69     public $consultationRepository;
 70     
 71     /** @var Repositories\Messages\PostRepository @inject */
 72     public $postRepository;
 73     
 74     /** @var Repositories\Config\CfgRepository @inject */
 75     public $cfgRepository;
 76     
 77     /** @var Repositories\Config\Parameters @inject */
 78     public $parameters;
 79     
 80     /** @var Repositories\Config\Mailer @inject */
 81     public $mailerCfg;
 82     
 83     
 84     /* Datagrid doslych novych objednavek */  
 85     public function createComponentExpertValidateGrid($name) {
 86     
 87     $user = $this->getUser();
 88     
 89     $grid = new \Grido\Grid($this, $name);
 90     $areas = $this->areaRepository->findAreaById($user->getId());
 91     //tento model je prebudovan v getGridSelectionExpertValidateNew. viz poznamky v OrderRepository
 92     $grid->setmodel($this->orderRepository->getGridSelectionExpertValidate($areas));
 93     
 94     $grid->translator->lang = 'cs';
 95     $grid->setDefaultSort(array('id' => 'ASC'));
 96     $grid->defaultPerPage = 15;
 97     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 98     $grid->setRememberState(FALSE);
 99     
100     
101     $grid->addColumnText('id', 'ID')
102         ->setSortable()
103         ->setFilterText()
104         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
105     $grid->getColumn('id')->cellPrototype->class[] = 'center';
106     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
107             
108     $grid->addColumnText('name', 'Předmět')
109         ->setSortable()
110         ->setColumn('name')
111         ->setFilterText()
112         ->setSuggestion(function ($item){ return $item->name; })
113         ->setColumn('name')
114         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
115     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
116     
117     $grid->addColumnDate('created', 'Vytvořeno')
118             ->setSortable()
119         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
120             ->setFilterDate();
121         $grid->getColumn('created')->cellPrototype->class[] = 'center';
122     
123     $grid->addColumnText('ns', 'NS')
124         ->setSortable()
125         ->setColumn('ns')
126         ->setFilterText()
127         ->setSuggestion(function ($item){ return $item->ns; })
128         ->setColumn('ns')
129         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
130     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
131     
132     $grid->addColumnText('uname', 'Název')
133         ->setSortable()
134         ->setColumn('uname')
135         ->setFilterText()
136         ->setSuggestion(function ($item){ return $item->uname; })
137         ->setColumn('uname')
138         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
139     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
140     
141     
142     $grid->addColumnText('tname', 'Typ')
143         ->setSortable()
144         ->setColumn('tname');
145     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
146     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
147         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
148     
149     $grid->addColumnText('rname', 'Realizace')
150         ->setSortable()
151         ->setColumn('rname');
152     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
153     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
154         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
155     
156     $grid->addActionHref('view', 'Zobrazit')
157         ->setIcon('fa fa-eye fa-fw');
158     
159     
160     $grid->setExport();
161     }
162     
163     /* Datagrid jiz posouzenych objednavek */  
164     public function createComponentExpertClosedGrid($name) {
165     
166     $user = $this->getUser();
167     
168     $grid = new \Grido\Grid($this, $name);
169     $areas = $this->areaRepository->findAreaById($user->getId());
170     $grid->setmodel($this->orderRepository->getGridSelectionExpertClosed($areas));
171     
172     $grid->translator->lang = 'cs';
173     $grid->setDefaultSort(array('id' => 'DESC'));
174     $grid->defaultPerPage = 15;
175     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
176     $grid->setRememberState(FALSE);
177     
178     
179     $grid->addColumnText('id', 'ID')
180         ->setSortable()
181         ->setFilterText()
182         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
183     $grid->getColumn('id')->cellPrototype->class[] = 'center';
184     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
185             
186     $grid->addColumnText('name', 'Předmět')
187         ->setSortable()
188         ->setColumn('name')
189         ->setFilterText()
190         ->setSuggestion(function ($item){ return $item->name; })
191         ->setColumn('name')
192         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
193     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
194     
195     $grid->addColumnDate('created', 'Vytvořeno')
196             ->setSortable()
197         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
198             ->setFilterDate();
199         $grid->getColumn('created')->cellPrototype->class[] = 'center';
200     
201     $grid->addColumnText('ns', 'NS')
202         ->setSortable()
203         ->setColumn('ns')
204         ->setFilterText()
205         ->setSuggestion(function ($item){ return $item->ns; })
206         ->setColumn('ns')
207         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
208     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
209     
210     $grid->addColumnText('uname', 'Název')
211         ->setSortable()
212         ->setColumn('uname')
213         ->setFilterText()
214         ->setSuggestion(function ($item){ return $item->uname; })
215         ->setColumn('uname')
216         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
217     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
218 
219     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
220         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
221 
222     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
223         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
224     
225     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
226         $column->setSortable()->headerPrototype->style['width'] ='4%';
227         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
228     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
229         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
230     
231     $columna = new \Grido\Components\Columns\BooleanExtension($grid, 'impacceptflag', 'Přijato');
232         $columna->setSortable()->headerPrototype->style['width'] ='4%';
233         $grid->getColumn('impacceptflag')->headerPrototype->class[] = 'center'; 
234     $grid->addFilterCheck('impacceptflag', 'Jen objednávky přijaté řešiteli k realizaci')
235         ->setWhere(function($value, $connection) {$value ? $connection->where('order.impacceptflag ?' , '2'): NULL;});
236         
237     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
238         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
239         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
240     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
241         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
242 
243     
244     $grid->addActionHref('view', 'Zobrazit')
245         ->setIcon('fa fa-eye fa-fw');
246     
247     
248     $grid->setExport();
249     }
250     
251     
252     /* Datagrid objednavek k realizaci*/
253     public function createComponentExpertToRealizeGrid($name) {
254     
255     //$user = $this->getUser();
256     $user_id = $this->getUser()->getId();
257     
258     $grid = new \Grido\Grid($this, $name);
259     $orders = $this->itemorderRepository->findOrderByImplementerId($user_id);
260     $grid->setmodel($this->orderRepository->getGridSelectionExpertToRealize($orders));
261     
262     $grid->translator->lang = 'cs';
263     $grid->defaultPerPage = 15;
264     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
265     $grid->setRememberState(FALSE);
266     
267     
268     $grid->addColumnText('id', 'ID')
269         ->setSortable()
270         ->setFilterText()
271         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
272     $grid->getColumn('id')->cellPrototype->class[] = 'center';
273     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
274             
275     $grid->addColumnText('name', 'Předmět')
276         ->setSortable()
277         ->setColumn('name')
278         ->setFilterText()
279         ->setSuggestion(function ($item){ return $item->name; })
280         ->setColumn('name')
281         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
282     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
283     
284     $grid->addColumnDate('created', 'Vytvořeno')
285             ->setSortable()
286         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
287             ->setFilterDate();
288         $grid->getColumn('created')->cellPrototype->class[] = 'center';
289     
290     $grid->addColumnText('ns', 'NS')
291         ->setSortable()
292         ->setColumn('ns')
293         ->setFilterText()
294         ->setSuggestion(function ($item){ return $item->ns; })
295         ->setColumn('ns')
296         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
297     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
298     
299     $grid->addColumnText('uname', 'Název')
300         ->setSortable()
301         ->setColumn('uname')
302         ->setFilterText()
303         ->setSuggestion(function ($item){ return $item->uname; })
304         ->setColumn('uname')
305         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
306     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
307     
308     $grid->addColumnText('tname', 'Typ')
309         ->setSortable()
310         ->setColumn('tname');
311     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
312     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
313         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
314     
315 //  $grid->addColumnText('rname', 'Realizace')
316 //      ->setSortable()
317 //      ->setColumn('rname');
318 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
319     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
320         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
321         
322     $columna = new \Grido\Components\Columns\BooleanExtension($grid, 'impacceptflag', 'Přijato');
323         $columna->setSortable()->headerPrototype->style['width'] ='4%';
324         $grid->getColumn('impacceptflag')->headerPrototype->class[] = 'center'; 
325     $grid->addFilterCheck('impacceptflag', 'Jen objednávky přijaté řešiteli k realizaci')
326         ->setWhere(function($value, $connection) {$value ? $connection->where('order.impacceptflag ?' , '2'): NULL;});
327         
328     
329     $grid->addActionHref('view', 'Zobrazit')
330         ->setIcon('fa fa-eye fa-fw');
331     
332     
333     $grid->setExport();
334     }
335     
336     /**
337      * Datagrid vsech objednavek
338      * @param type $name
339      * dostupne pouze roli admin (osetreno v sidebar)
340      */
341     public function createComponentExpertAllGrid($name) {
342     
343     $user = $this->getUser();
344     
345     $grid = new \Grido\Grid($this, $name);
346     $grid->setmodel($this->orderRepository->getGridSelectionOrdersAll());
347     
348     $grid->translator->lang = 'cs';
349     $grid->setDefaultSort(array('id' => 'DESC'));
350     $grid->defaultPerPage = 15;
351     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
352     $grid->setRememberState(FALSE);
353     
354     
355     $grid->addColumnText('id', 'ID')
356         ->setSortable()
357         ->setFilterText()
358         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
359     $grid->getColumn('id')->cellPrototype->class[] = 'center';
360     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
361             
362     $grid->addColumnText('name', 'Předmět')
363         ->setSortable()
364         ->setColumn('name')
365         ->setFilterText()
366         ->setSuggestion(function ($item){ return $item->name; })
367         ->setColumn('name')
368         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
369     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
370     
371     $grid->addColumnDate('created', 'Vytvořeno')
372             ->setSortable()
373         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
374             ->setFilterDate();
375         $grid->getColumn('created')->cellPrototype->class[] = 'center';
376     
377     $grid->addColumnText('ns', 'NS')
378         ->setSortable()
379         ->setColumn('ns')
380         ->setFilterText()
381         ->setSuggestion(function ($item){ return $item->ns; })
382         ->setColumn('ns')
383         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
384     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
385     
386     $grid->addColumnText('uname', 'Název')
387         ->setSortable()
388         ->setColumn('uname')
389         ->setFilterText()
390         ->setSuggestion(function ($item){ return $item->uname; })
391         ->setColumn('uname')
392         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
393     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
394     
395     $grid->addColumnText('tname', 'Typ')
396         ->setSortable()
397         ->setColumn('tname');
398     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
399     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
400         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
401     
402 //  $grid->addColumnText('rname', 'Realizace')
403 //      ->setSortable()
404 //      ->setColumn('rname');
405 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
406     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
407         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
408         
409     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
410         $column->setSortable()->headerPrototype->style['width'] ='4%';
411         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
412     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
413         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
414     
415         
416     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
417         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
418         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
419     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
420         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
421     
422     $grid->addActionHref('view', 'Zobrazit')
423         ->setIcon('fa fa-eye fa-fw');
424     
425     
426     $grid->setExport();
427     }
428     
429     
430     
431     
432     public function renderView($id){
433     
434     $item = $this->orderRepository->findById($id);
435     $user = $this->getUser();
436     
437     if ($item === false) {
438         $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
439         $this->redirect('Homepage:default');
440     }
441 
442     //potrebuji u odbornika vratit jen ty objednavky, ktere jsou zarazeny do shodne oblasti jakou ma prideleno k posuzovani
443     $areaUser = $this->areaRepository->findAreaById($user->getId());
444     $orderbyid = $this->orderRepository->findOrderForExpert($areaUser, $id);
445     
446     if($orderbyid === false && !$user->isInRole('admin')){
447         $this->flashMessage('Nemáte právo přístupu k objednávce č. '.$id, 'error');
448         $this->redirect('Homepage:default');
449     } 
450     else if ($user->isInRole('admin'))
451         $this->template->orderdetail = $this->orderRepository->findOrderForTrader($id);
452     else {
453         $this->template->orderdetail = $orderbyid;
454     }
455     
456     $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id); 
457     
458     $this->template->documentRepository = $this->documentRepository;
459     $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
460     
461     $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
462     
463     //vracene posudky
464     $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
465     $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
466     $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
467 
468     //konzultace
469     $consultations = $this->consultationRepository->getConsultationHeader($user->getId(), $item->id);
470     if ($consultations->fetch() != NULL) {
471         $this->template->consultations = $consultations;
472     }
473     else {
474         $this->template->consultations = NULL;
475     }
476     
477     
478     
479     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
480     
481     //konfiguracni data timeline
482     $this->template->icons = $this->cfgRepository->getTimelineIcons();
483     $this->template->colors = $this->cfgRepository->getTimelineColors();
484     $this->template->inverted = $this->cfgRepository->getTimelineInverted();
485     
486     //ulozeni nazvu presenteru pro navrat z Itemorder/View
487     $mySection = $this->getSession()->getSection('history');
488     $mySection->beforePresenter = 'Expert';
489     $mySection->beforeId = $id;
490     $mySection->setExpiration(0);
491     }
492     
493     
494     /**
495      * 
496      * @return \Nette\Application\UI\Form
497      * komponenta pro pridani dokumentu k objednavce
498      */
499     public function createComponentAddDocument() {
500     
501     try {
502         $iduser = $this->getUser()->getId();
503         $idorder = $this->getParameter('id');
504         
505         $form = $this->documentFactory->createAddDocument($idorder,$iduser);
506         $this->flashMessage('Soubor byl uložen.', 'success');
507         
508         return $form;
509         
510     } catch (\PDOException $e) {
511         $this->flashMessage("Soubor se nepodařilo uložit!", "error");
512     }
513     }
514 
515     /**
516      * 
517      * @return \Nette\Application\UI\Form
518      * komponenta pro vykresleni formulare k pojmenovani ulozeneho dokumentu 
519      */
520     public function createComponentUpdateNameDocument(){
521     
522     try {
523         $form = $this->documentFactory->createUpdateNameDocument();
524         $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
525         
526         return $form; 
527     
528     } catch (\PDOException $e) {
529         $this->flashMessage('Chyba při uložení do DB.', 'error');
530     }
531     }
532     
533     /**
534      * komponenta pro vykresleni formuláře k potvrzení vymazání uloženého dokumentu
535      * @return type
536      */
537      public function createComponentDeleteDocument() {
538      try {
539          $form = $this->documentFactory->createDeleteDocument();
540          $this->flashMessage('Dokument byl odstraněn.', 'success');
541          
542          return $form;
543          
544      } catch (Exception $e) {
545         $this->flashMessage('Chyba. Dokument se nepodařilo odstranit.', 'error');
546      }
547      }
548      
549     
550     /**
551      * 
552      * @return \Nette\Application\UI\Form
553      * komponenta pro vykresleni formulare k zalozeni nove konzultace
554      */
555     public function createComponentAddConsultation() {
556     
557     $form = new UI\Form();
558     $form->setRenderer(new BootstrapRenderer());
559     
560     $user = $this->getUser();
561     $roles = array('director','manager','trader');
562     
563     $form->getElementPrototype()->class = 'form-horizontal';
564     
565     //oblasti objednavky
566     $area_ids = $this->areaRepository->getAreasFromOrder($this->getParameter('id'));
567     $form->addSelect('to_id', 'Komu:', $this->userRepository->findUserByRole($roles, $user->getId()) + $this->userRepository->getUserByAreaOrderLastname($area_ids, $user->getId()))
568         ->setPrompt('Vyberte adresáta ...')
569         ->setRequired()
570         ->setAttribute('class', 'form-control');
571     
572     $form->addTextArea('post', 'Zpráva:', NULL, 10)
573         ->setAttribute('class', 'form-control')
574         ->setAttribute('type', 'modal')
575         ->setRequired('Vložte odpověď');
576     
577     $form->addSubmit('send', 'Odeslat')
578         ->setAttribute('class', 'btn btn-primary');
579     
580     $form->onSuccess[] = array($this, 'addConsultation');
581     
582     return $form;
583     }
584     
585     public function addConsultation($form, $values) {
586     try {
587         $user = $this->getUser();
588         $order_id = $this->getParameter('id');
589         
590         if(mb_strlen(trim($values->post)) > 0) {
591         
592         //ulozeni konzultace
593         $newconsultation = $this->consultationRepository->insertData(array(
594                     'created' => date('Y-m-d H:i:s'),
595                     'order_id' => $order_id,
596                     'from' => $user->getId(),
597                     'to' => $values->to_id,
598                     'lastmod' => NULL,
599                     'lastpostman' => $user->getId(),
600                     'visit' => 1
601                     ));
602         
603         //ulozeni postu
604         $this->postRepository->insertData(array(
605             'consultation_id' => $newconsultation->id,
606             'user_id' => $user->getId(),
607             'created' => date('Y-m-d H:i:s'),
608             'message' => $values->post
609         ));
610         
611         //zaslani zpravy
612         $uri = $this->getHttpRequest()->getUrl();
613         $from = $this->parameters->getFrom();
614         $support = $this->parameters->getSupport();
615         //prijemce
616         $to = $this->userRepository->getUserEmail($values->to_id);
617         $roles = $this->roleRepository->findRoleById($values->to_id);
618         //je adresat v roli consultant?
619         $is_consultant = FALSE;
620         foreach ($roles as $role) {
621             if($role == 'consultant') {
622             $is_consultant = TRUE;
623             }
624         }
625         $subject = 'Konzultace k objednávce';
626         $params = array(
627             'order_id' => $order_id,
628             'contact' => $support,
629             'url' => $uri->hostUrl.'/consultant&execution=view&id='.$order_id,
630             'consultation_id' => $newconsultation->id,
631             'path' => ($is_consultant)? 'Konzultant' : 'Konzultace'
632             //'logo' => $uri->hostUrl.'/img/logo32x32.gif'
633         );
634         $template = __DIR__ . '/../templates/Mailer/emailToConsultantFirst.latte';
635         $image = __DIR__ . '/../../www/img/logo32x32.gif';
636         $mailer = $this->mailerCfg->getMailConfig();
637         
638         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
639 
640         
641         $this->flashMessage('Požadavek na konzultaci byl uložen.', 'success');
642         $this->redirect('this');
643         
644         }
645         else {
646         $this->flashMessage('Nelze uložit prázdnou konzultaci.', 'error');
647         }
648             
649     } 
650     catch (\PDOException $ex) {
651         $this->flashMessage('Chyba při uložení konzultace.', 'error');
652     }
653     }
654     
655 }
656 
IS objednávky API documentation generated by ApiGen