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 ManagerPresenter
 15  *
 16  * @author Petr
 17  */
 18 class ManagerPresenter extends BasePresenter {
 19     
 20     /** @var Repositories\Lists\AreaRepository @inject */
 21     public $areaRepository;
 22     
 23     /** @var Repositories\Messages\ConsultationRepository @inject */
 24     public $consultationRepository;
 25     
 26     /** @var Repositories\Messages\PostRepository @inject */
 27     public $postRepository;
 28     
 29     /** @var Repositories\Order\OrderRepository @inject */
 30     public $orderRepository;
 31     
 32     /** @var Repositories\Lists\OrdertypeRepository @inject */
 33     public $ordertypeRepository;
 34     
 35     /** @var Repositories\Order\RealizationRepository @inject */
 36     public $realizationRepository;
 37     
 38     /** @var Repositories\Order\TimelineRepository @inject */
 39     public $timelineRepository;
 40     
 41     /** @var Repositories\Order\ItemorderRepository @inject */
 42     public $itemorderRepository;
 43     
 44     /** @var Repositories\Messages\CommentRepository @inject */
 45     public $commentRepository;
 46     
 47     /** @var Repositories\Entities\UnituserRepository @inject */
 48     public $unituserRepository;
 49 
 50     /** @var Repositories\Entities\UnitRepository @inject */
 51     public $unitRepository;
 52     
 53     /** @var Repositories\Entities\UserRepository @inject */
 54     public $userRepository;
 55     
 56     /** @var Factory\DocumentFactory @inject */
 57     public $documentFactory;
 58     
 59     /** @var Repositories\Lists\DocumenttypeRepository @inject */
 60     public $documenttypeRepository;
 61     
 62     /** @var Repositories\Documents\DocumentRepository @inject */
 63     public $documentRepository;
 64     
 65     /** @var Repositories\Entities\ChiefRepository @inject */
 66     public $chiefRepository;
 67     
 68     /** @var Repositories\Entities\TraderRepository @inject */
 69     public $traderRepository;
 70 
 71     /** @var Repositories\Entities\ManagerRepository @inject */
 72     public $managerRepository;
 73     
 74     /** @var Repositories\Entities\ExpertRepository @inject */
 75     public $expertRepository;
 76     
 77     /** @var Repositories\Config\CfgRepository @inject */
 78     public $cfgRepository;
 79     
 80     /** @var Repositories\Config\Parameters @inject */
 81     public $parameters;
 82         
 83     /** @var Repositories\Config\Mailer @inject */
 84     public $mailerCfg;
 85     
 86     
 87     
 88     /**
 89      * Datagrid doslych objednavek ke schvaleni 
 90      * @param type $name
 91      */
 92     public function createComponentManagerValidateGrid($name) {
 93     
 94     $user = $this->getUser();
 95     
 96     $grid = new \Grido\Grid($this, $name);
 97     $grid->setmodel($this->orderRepository->getGridSelectionManagerValidate());
 98     
 99     $grid->translator->lang = 'cs';
100     $grid->setDefaultSort(array('id' => 'ASC'));
101     $grid->defaultPerPage = 15;
102     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
103     $grid->setRememberState(FALSE);
104     
105     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
106         if($row->isinvestment == 1) {
107         $tr->class[] = 'investment';
108         }
109         return $tr;
110     });
111     
112     $grid->addColumnText('id', 'ID')
113         ->setSortable()
114         ->setFilterText()
115         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
116     $grid->getColumn('id')->cellPrototype->class[] = 'center';
117     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
118             
119     $grid->addColumnText('name', 'Předmět')
120         ->setSortable()
121         ->setColumn('name')
122         ->setFilterText()
123         ->setSuggestion(function ($item){ return $item->name; })
124         ->setColumn('name')
125         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
126     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
127     
128     $grid->addColumnDate('created', 'Vytvořeno')
129             ->setSortable()
130         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
131             ->setFilterDate();
132         $grid->getColumn('created')->cellPrototype->class[] = 'center';
133     
134     $grid->addColumnText('ns', 'NS')
135         ->setSortable()
136         ->setColumn('ns')
137         ->setFilterText()
138         ->setSuggestion(function ($item){ return $item->ns; })
139         ->setColumn('ns')
140         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
141     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
142     
143     $grid->addColumnText('uname', 'Název')
144         ->setSortable()
145         ->setColumn('uname')
146         ->setFilterText()
147         ->setSuggestion(function ($item){ return $item->uname; })
148         ->setColumn('uname')
149         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
150     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
151     
152     $grid->addColumnText('tname', 'Typ')
153         ->setSortable()
154         ->setColumn('tname');
155     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
156     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
157         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
158     
159     $grid->addColumnText('rname', 'Realizace')
160         ->setSortable()
161         ->setColumn('rname');
162     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
163     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
164         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
165     
166     $grid->addActionHref('view', 'Zobrazit')
167         ->setIcon('fa fa-eye fa-fw')
168         ->setCustomRender($this->gridBtnSuccess);
169     
170     
171     $grid->setExport();
172     }
173     
174     /**
175      * Datagrid uzavrenych objednavek
176      * @param type $name
177      * 
178      */
179     public function createComponentManagerClosedGrid($name) {
180     
181     $user = $this->getUser();
182     
183     $grid = new \Grido\Grid($this, $name);
184     $grid->setmodel($this->orderRepository->getGridSelectionManagerClosed());
185     
186     $grid->translator->lang = 'cs';
187     $grid->setDefaultSort(array('id' => 'DESC'));
188     $grid->defaultPerPage = 15;
189     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
190     $grid->setRememberState(FALSE);
191     
192     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
193         if($row->isinvestment == 1) {
194         $tr->class[] = 'investment';
195         }
196         return $tr;
197     });
198     
199     $grid->addColumnText('id', 'ID')
200         ->setSortable()
201         ->setFilterText()
202         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
203     $grid->getColumn('id')->cellPrototype->class[] = 'center';
204     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
205             
206     $grid->addColumnText('name', 'Předmět')
207         ->setSortable()
208         ->setColumn('name')
209         ->setFilterText()
210         ->setSuggestion(function ($item){ return $item->name; })
211         ->setColumn('name')
212         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
213     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
214     
215     $grid->addColumnDate('created', 'Vytvořeno')
216             ->setSortable()
217         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
218             ->setFilterDate();
219         $grid->getColumn('created')->cellPrototype->class[] = 'center';
220     
221     $grid->addColumnText('ns', 'NS')
222         ->setSortable()
223         ->setColumn('ns')
224         ->setFilterText()
225         ->setSuggestion(function ($item){ return $item->ns; })
226         ->setColumn('ns')
227         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
228     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
229     
230     $grid->addColumnText('uname', 'Název')
231         ->setSortable()
232         ->setColumn('uname')
233         ->setFilterText()
234         ->setSuggestion(function ($item){ return $item->uname; })
235         ->setColumn('uname')
236         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
237     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
238     
239     $grid->addColumnText('tname', 'Typ')
240         ->setSortable()
241         ->setColumn('tname');
242     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
243     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
244         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
245     
246 //  $grid->addColumnText('rname', 'Realizace')
247 //      ->setSortable()
248 //      ->setColumn('rname');
249 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
250     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
251         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
252         
253     $grid->addFilterText('myear', 'Ukončeno (Rok)')
254         ->setWhere(function ($value, $connection){ $connection->where("YEAR(CASE WHEN order.managerflag IS NULL THEN order.created ELSE :managerresult.lastmod END) = ?", "$value");});
255         
256     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
257         $column->setSortable()->headerPrototype->style['width'] ='4%';
258         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
259     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
260         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
261     
262         
263     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
264         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
265         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
266     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
267         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
268     
269     $grid->addActionHref('view', 'Zobrazit')
270         ->setIcon('fa fa-eye fa-fw')
271         ->setCustomRender($this->gridBtnSuccess);
272     
273     
274     $grid->setExport();
275     }
276     
277     /**
278      * Datagrid vsech objednavek
279      * @param type $name
280      * 
281      */
282     public function createComponentManagerAllGrid($name) {
283     
284     $user = $this->getUser();
285     
286     $grid = new \Grido\Grid($this, $name);
287     $grid->setmodel($this->orderRepository->getGridSelectionOrdersAll());
288     
289     $grid->translator->lang = 'cs';
290     $grid->setDefaultSort(array('id' => 'DESC'));
291     $grid->defaultPerPage = 15;
292     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
293     $grid->setRememberState(FALSE);
294     
295     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
296         if($row->isinvestment == 1) {
297         $tr->class[] = 'investment';
298         }
299         return $tr;
300     });
301     
302     $grid->addColumnText('id', 'ID')
303         ->setSortable()
304         ->setFilterText()
305         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
306     $grid->getColumn('id')->cellPrototype->class[] = 'center';
307     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
308             
309     $grid->addColumnText('name', 'Předmět')
310         ->setSortable()
311         ->setColumn('name')
312         ->setFilterText()
313         ->setSuggestion(function ($item){ return $item->name; })
314         ->setColumn('name')
315         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
316     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
317     
318     $grid->addColumnDate('created', 'Vytvořeno')
319             ->setSortable()
320         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
321             ->setFilterDate();
322         $grid->getColumn('created')->cellPrototype->class[] = 'center';
323     
324     $grid->addColumnText('ns', 'NS')
325         ->setSortable()
326         ->setColumn('ns')
327         ->setFilterText()
328         ->setSuggestion(function ($item){ return $item->ns; })
329         ->setColumn('ns')
330         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
331     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
332     
333     $grid->addColumnText('uname', 'Název')
334         ->setSortable()
335         ->setColumn('uname')
336         ->setFilterText()
337         ->setSuggestion(function ($item){ return $item->uname; })
338         ->setColumn('uname')
339         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
340     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
341     
342     $grid->addColumnText('tname', 'Typ')
343         ->setSortable()
344         ->setColumn('tname');
345     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
346     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
347         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
348     
349 //  $grid->addColumnText('rname', 'Realizace')
350 //      ->setSortable()
351 //      ->setColumn('rname');
352 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
353     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
354         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
355         
356     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
357         $column->setSortable()->headerPrototype->style['width'] ='4%';
358         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
359     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
360         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
361     
362         
363     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
364         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
365         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
366     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
367         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
368     
369     $grid->addActionHref('view', 'Zobrazit')
370         ->setIcon('fa fa-eye fa-fw')
371         ->setCustomRender($this->gridBtnSuccess);
372     
373     
374     $grid->setExport();
375     }
376     
377     /**
378      * 
379      * @param type $item
380      * @param Html $el
381      * @return Html
382      */
383     public function gridBtnSuccess($item, \Nette\Utils\Html $el)
384     {
385     if ($item['isinvestment'] == 1) {
386         $class = str_replace('btn-default ', '', implode(' ', $el->class));
387         $el->class = [$class . ' btn-success'];
388     }
389         return $el;
390     }
391     
392     public function renderView($id){
393     
394     $item = $this->orderRepository->findById($id);
395     $user = $this->getUser();
396     
397     if ($item === false) {
398         $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
399         $this->redirect('Homepage:default');
400     }   
401 
402     $this->template->orderdetail = $this->orderRepository->findOrderForTrader($id);
403     $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id); 
404     
405     $this->template->documentRepository = $this->documentRepository;
406     $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
407     
408     $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
409     
410     //vracene posudky
411     $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
412     $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
413     $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
414 
415     $iditems = $this->itemorderRepository->getIdItemsOrder($item->id);
416     $this->template->expertresults = $this->expertRepository->getExpertResults($iditems);
417     
418     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
419     
420     //konzultace
421     $consultations = $this->consultationRepository->getConsultationHeader($user->getId(), $item->id);
422     if ($consultations->fetch() != NULL) {
423         $this->template->consultations = $consultations;
424     }
425     else {
426         $this->template->consultations = NULL;
427     }
428     
429     //konfiguracni data timeline
430     $this->template->icons = $this->cfgRepository->getTimelineIcons();
431     $this->template->colors = $this->cfgRepository->getTimelineColors();
432     $this->template->inverted = $this->cfgRepository->getTimelineInverted();
433     
434     //ulozeni nazvu presenteru pro navrat z Itemorder/View
435     $mySection = $this->getSession()->getSection('history');
436     $mySection->beforePresenter = 'Manager';
437     $mySection->setExpiration(0);
438 
439     }
440     
441     
442     /**
443      * 
444      * @return \Nette\Application\UI\Form
445      * komponenta pro pridani dokumentu k objednavce
446      */
447     public function createComponentAddDocument() {
448     
449     try {
450         $iduser = $this->getUser()->getId();
451         $idorder = $this->getParameter('id');
452         
453         $form = $this->documentFactory->createAddDocument($idorder,$iduser);
454         $this->flashMessage('Soubor byl uložen.', 'success');
455         
456         return $form;
457         
458     } catch (\PDOException $e) {
459         $this->flashMessage("Soubor se nepodařilo uložit!", "error");
460     }
461 
462     }
463 
464     /**
465      * 
466      * @return \Nette\Application\UI\Form
467      * komponenta pro vykresleni formulare k pojmenovani ulozeneho dokumentu 
468      */
469     public function createComponentUpdateNameDocument(){
470     
471     try {
472         $form = $this->documentFactory->createUpdateNameDocument();
473         $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
474         
475         return $form; 
476     
477     } catch (\PDOException $e) {
478         $this->flashMessage('Chyba při uložení do DB.', 'error');
479     }
480     }
481     
482     /**
483      * komponenta pro vykresleni formuláře k potvrzení vymazání uloženého dokumentu
484      * @return type
485      */
486      public function createComponentDeleteDocument() {
487      try {
488          $form = $this->documentFactory->createDeleteDocument();
489          $this->flashMessage('Dokument byl odstraněn.', 'success');
490          
491          return $form;
492          
493      } catch (Exception $e) {
494         $this->flashMessage('Chyba. Dokument se nepodařilo odstranit.', 'error');
495      }
496      }
497     
498     
499     /**
500      * 
501      * @return \Nette\Application\UI\Form
502      * komponenta pro vykresleni formulare posudku
503      */
504     public function createComponentManagerResult() {
505         $user = $this->getUser();
506         $form = new UI\Form();
507     $form->setRenderer(new BootstrapRenderer());
508         
509         $form->getElementPrototype()->class = 'form-horizontal';
510         
511         $form->addTextArea('description', 'Odůvodnění:', NULL, 4)
512                 //->setRequired('Zadejte prosím odůvodnění')
513         ->setAttribute('class', 'form-control')
514         ->setAttribute('type', 'modal')
515         ->setAttribute('id', 'inputDescription');
516         
517         $form->addRadioList('result','Objednávku:', array('1'=>'Schvaluji','0'=>'Zamítám'))  
518                 ->setDefaultValue('1')
519                 ->getSeparatorPrototype()->setName(NULL);
520         
521         
522         $form->addSubmit('saving', 'Uložit a zpět')
523         ->setAttribute('class', 'btn btn-primary');
524 
525         
526         $form->onSuccess[] = $this->managerResultSubmitted;
527     
528     return $form;
529     }
530     
531     
532     public function managerResultSubmitted($form) {
533         
534         try {
535             //zaznam do tabulky TraderResult
536             $result = $form->getValues();
537             $idorder = $this->getParameter('id');
538             
539             $res = new \Nette\Utils\ArrayHash();
540             $res->description = $result->description;
541             if ($result->result == '1') {
542                 $res->approved = 1;
543                 $res->rejected = NULL;
544             }
545             else {
546                 $res->approved = NULL;
547                 $res->rejected = 1;
548             }
549             $res->lastmod = date('Y-m-d H:i:s');
550             $res->order_id = $idorder;
551             $res->user_id = $this->getUser()->getId();
552                 
553             $this->managerRepository->insertData($res);
554             
555             //update do tabulky order, ze objednavka byla posouzena a je zaslana manazerovi
556         //pokud je zamitnuta, je navic update o ukonceni
557             $o = new \Nette\Utils\ArrayHash();
558             $o->managerflag = 1;
559             $o->completeflag = 1;
560             $this->orderRepository->updateById($idorder, $o);
561             
562             //zaznam do timeline
563         //posudek namestka HTS
564         $t = new \Nette\Utils\ArrayHash;
565         $t->order_id = $idorder;
566         $t->user_id = $this->getUser()->getId();
567         $t->event_id = 8;
568         $t->created = date('Y-m-d H:i:s');
569         $this->timelineRepository->insertData($t);
570         //zapis o uzavreni objednavky
571         $t2 = new \Nette\Utils\ArrayHash;
572         $t2->order_id = $idorder;
573         $t2->user_id = $this->getUser()->getId();
574         $t2->event_id = 12;
575         $t2->created = date('Y-m-d H:i:s');
576         $this->timelineRepository->insertData($t2);
577         
578         
579          //mail pro obchodnika - posouzena objednavka
580         $uri = $this->getHttpRequest()->getUrl();
581         $from = $this->parameters->getFrom();
582         $to = $this->userRepository->getTraderEmail();
583         $subject = 'Objednávka posouzená náměstkem HTS';
584         $support = $this->parameters->getSupport();
585         $params = array(
586         'order_id' => $idorder,
587         'contact' => $support,
588         'url' => $uri->hostUrl.'/trader&execution=view&id='.$idorder
589         );
590         $template = ($result->result == '1')? __DIR__ . '/../templates/Mailer/emailToTraderApproved.latte' : __DIR__ . '/../templates/Mailer/emailToTraderRejected.latte';
591         $image = __DIR__ . '/../../www/img/logo32x32.gif';
592         $mailer = $this->mailerCfg->getMailConfig();
593         
594         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
595         
596         
597         //kdyz zamita, tak mail jeste pro oddeleni
598         if ($result->result ==  '0') {
599         $item = $this->orderRepository->findById($idorder);
600         $to = $this->userRepository->getUnitEmail($item->user_id);
601         $subject = 'Zamítnutá objednávka';
602         $params = array(
603             'order_id' => $idorder,
604             'contact' => $support,
605             'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
606         );
607         $template = __DIR__ . '/../templates/Mailer/emailToUnitRejected.latte';
608         
609         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
610         }
611         
612         
613         $this->flashMessage("Posudek k objednávce č. $idorder byl uložen.", 'success');
614         $this->redirect('Manager:validate');
615             
616         } catch (\PDOException $e) {
617             $this->flashMessage('Chyba při uložení do DB.', 'error');
618         }
619         
620     }
621     
622     
623     /**
624      * 
625      * @return \Nette\Application\UI\Form
626      * komponenta pro vykresleni formulare pro vraceni objednavky k obchodnnikovi
627      */
628     public function createComponentSendToTraderBack() {
629     $form = new UI\Form();
630     $form->setRenderer(new BootstrapRenderer());
631         
632         $form->getElementPrototype()->class = 'form-horizontal';
633     
634     $form->addTextArea('message', 'Komentář:', NULL, 4)
635         ->setRequired('Upřesněte požadavek na doplnění.')
636         ->setAttribute('class', 'form-control');
637     
638     $form->addSubmit('back', 'Odeslat')
639         ->setAttribute('class', 'btn btn-primary');
640 
641     $form->onSuccess[] = $this->sendToTraderBackSubmitted;
642 
643     return $form;
644     }
645     
646     public function sendToTraderBackSubmitted($form) {
647     try {
648         $idorder = $this->getParameter('id');
649         $result = $form->getValues();
650         
651         $this->orderRepository->updateById($idorder, array('traderupflag' => NULL,'returnflag' => 1));
652         
653         //zapis do comment
654         if (mb_strlen(trim($result->message)) > 0) {
655         $iditemorder = $this->itemorderRepository->getIdItemsOrder($idorder)->fetch();
656         $c = new \Nette\Utils\ArrayHash;
657         $c->itemorder_id = $iditemorder;
658         $c->user_id = $this->getUser()->getId();
659         $c->description = $result->message;
660         $c->created = date('Y-m-d H:i:s');
661         $this->commentRepository->insertData($c);
662         }
663         
664         //zaznam do timeline o zaslani obchodnikovi
665         $o = new \Nette\Utils\ArrayHash;
666         $o->order_id = $idorder;
667         $o->user_id = $this->getUser()->getId();
668         $o->event_id = 9;
669         $o->created = date('Y-m-d H:i:s');
670         $this->timelineRepository->insertData($o);
671         
672         $o1 = new \Nette\Utils\ArrayHash;
673         $o1->order_id = $idorder;
674         $o1->user_id = $this->getUser()->getId();
675         $o1->event_id = 3;
676         $o1->created = date('Y-m-d H:i:s');
677         $this->timelineRepository->insertData($o1);
678         
679         //mail pro obchodnika - vracena objednavka
680         $uri = $this->getHttpRequest()->getUrl();
681         $from = $this->parameters->getFrom();
682         $to = $this->userRepository->getTraderEmail();
683         $support = $this->parameters->getSupport();
684         $subject = 'Objednávka vrácená náměstkem HTS';
685         $params = array(
686         'order_id' => $idorder,
687         'contact' => $support,
688         'url' => $uri->hostUrl.'/trader&execution=view&id='.$idorder
689         );
690         $template = __DIR__ . '/../templates/Mailer/emailToTraderBack.latte';
691         $image = __DIR__ . '/../../www/img/logo32x32.gif';
692         $mailer = $this->mailerCfg->getMailConfig();
693         
694         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
695         
696         
697         $this->flashMessage("Objednávka č. $idorder byla zaslána zpět obchodníkovi k doplnění.", 'success');
698         $this->redirect('Manager:validate');
699         
700     } catch (\PDOException $e) {
701         $this->flashMessage('Chyba při uložení do DB.', 'error');
702     }
703     }
704     
705     
706     /**
707      * 
708      * @return \Nette\Application\UI\Form
709      * komponenta pro vykresleni formulare k zalozeni nove konzultace
710      */
711     public function createComponentAddConsultation() {
712     
713     $form = new UI\Form();
714     $form->setRenderer(new BootstrapRenderer());
715     
716     $user = $this->getUser();
717     $roles = array('director','manager','trader');
718     
719     $form->getElementPrototype()->class = 'form-horizontal';
720     
721     //oblasti objednavky
722     $area_ids = $this->areaRepository->getAreasFromOrder($this->getParameter('id'));
723     $form->addSelect('to_id', 'Komu:', $this->userRepository->findUserByRole($roles, $user->getId()) + $this->userRepository->getUserByAreaOrderLastname($area_ids, $user->getId()))
724         ->setPrompt('Vyberte adresáta ...')
725         ->setRequired()
726         ->setAttribute('class', 'form-control');
727     
728     $form->addTextArea('post', 'Zpráva:', NULL, 10)
729         ->setAttribute('class', 'form-control')
730         ->setAttribute('type', 'modal')
731         ->setRequired('Vložte odpověď');
732     
733     $form->addSubmit('send', 'Odeslat')
734         ->setAttribute('class', 'btn btn-primary');
735     
736     $form->onSuccess[] = array($this, 'addConsultation');
737     
738     return $form;
739     }
740     
741     public function addConsultation($form, $values) {
742     try {
743         $user = $this->getUser();
744         $order_id = $this->getParameter('id');
745         
746         if(mb_strlen(trim($values->post)) > 0) {
747         
748         //ulozeni konzultace
749         $newconsultation = $this->consultationRepository->insertData(array(
750                     'created' => date('Y-m-d H:i:s'),
751                     'order_id' => $order_id,
752                     'from' => $user->getId(),
753                     'to' => $values->to_id,
754                     'lastmod' => NULL,
755                     'lastpostman' => $user->getId(),
756                     'visit' => 1
757                     ));
758         
759         //ulozeni postu
760         $this->postRepository->insertData(array(
761             'consultation_id' => $newconsultation->id,
762             'user_id' => $user->getId(),
763             'created' => date('Y-m-d H:i:s'),
764             'message' => $values->post
765         ));
766         
767         //zaslani zpravy
768         $uri = $this->getHttpRequest()->getUrl();
769         $from = $this->parameters->getFrom();
770         $support = $this->parameters->getSupport();
771         //prijemce
772         $to = $this->userRepository->getUserEmail($values->to_id);
773         $roles = $this->roleRepository->findRoleById($values->to_id);
774         //je adresat v roli consultant?
775         $is_consultant = FALSE;
776         foreach ($roles as $role) {
777             if($role == 'consultant') {
778             $is_consultant = TRUE;
779             }
780         }
781         $subject = 'Konzultace k objednávce';
782         $params = array(
783             'order_id' => $order_id,
784             'contact' => $support,
785             'url' => $uri->hostUrl.'/consultant&execution=view&id='.$order_id,
786             'consultation_id' => $newconsultation->id,
787             'path' => ($is_consultant)? 'Konzultant' : 'Konzultace'
788             //'logo' => $uri->hostUrl.'/img/logo32x32.gif'
789         );
790         $template = __DIR__ . '/../templates/Mailer/emailToConsultantFirst.latte';
791         $image = __DIR__ . '/../../www/img/logo32x32.gif';
792         $mailer = $this->mailerCfg->getMailConfig();
793         
794         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
795 
796         
797         $this->flashMessage('Požadavek na konzultaci byl uložen.', 'success');
798         $this->redirect('this');
799         
800         }
801         else {
802         $this->flashMessage('Nelze uložit prázdnou konzultaci.', 'error');
803         }
804             
805     } 
806     catch (\PDOException $ex) {
807         $this->flashMessage('Chyba při uložení konzultace.', 'error');
808     }
809     }
810     
811 }
812 
IS objednávky API documentation generated by ApiGen