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 OrderPresenter
  15  *
  16  * @author Petr
  17  */
  18 class OrderPresenter 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\Entities\UnituserRepository @inject */
  36     public $unituserRepository;
  37 
  38     /** @var Repositories\Entities\UnitRepository @inject */
  39     public $unitRepository;
  40         
  41     /** @var Repositories\Entities\UserRepository @inject */
  42     public $userRepository;
  43     
  44     /** @var Factory\DocumentFactory @inject */
  45     public $documentFactory;
  46     
  47     /** @var Repositories\Lists\DocumenttypeRepository @inject */
  48     public $documenttypeRepository;
  49     
  50     /** @var Repositories\Documents\DocumentRepository @inject */
  51     public $documentRepository;
  52     
  53     /** @var Repositories\Entities\DepartmentRepository @inject */
  54     public $departmentRepository;
  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\JustifyRepository @inject */
  66     public $justifyRepository;
  67     
  68     /** @var Repositories\Config\CfgRepository @inject */
  69     public $cfgRepository;
  70     
  71     /** @var Repositories\Config\Parameters @inject */
  72     public $parameters;    
  73         
  74     /** @var Repositories\Config\Mailer @inject */
  75     public $mailerCfg;
  76 
  77 
  78     /* Datagrid odeslaných objednavek */  
  79     public function createComponentOrderSentGrid($name) {
  80     
  81     $user = $this->getUser();
  82     
  83     //potrebuji u vedoucich vratit v objednavkach i to, co vytvorili jejich podrizene oddeleni
  84     //proto hledam pole $ids
  85     $unit = $this->unitRepository->getUnits($user->getId());
  86     $ids = $this->unituserRepository->getIds($unit);
  87     
  88     $grid = new \Grido\Grid($this, $name);
  89     $grid->setmodel($this->orderRepository->getGridSelectionSentByUnit($user->getId(),$ids));
  90     
  91     $grid->translator->lang = 'cs';
  92     $grid->defaultPerPage = 15;
  93     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
  94     $grid->setRememberState(FALSE);
  95     
  96     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
  97         if ($row->isinvestment == 1) {
  98         $tr->class[] = 'investment';
  99         }
 100         return $tr;
 101     });
 102     
 103     $grid->addColumnText('id', 'ID')
 104         ->setSortable()
 105         ->setFilterText()
 106         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 107     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 108     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 109             
 110     $grid->addColumnText('name', 'Předmět')
 111         ->setSortable()
 112         ->setColumn('name')
 113         ->setFilterText()
 114         ->setSuggestion(function ($item){ return $item->name; })
 115         ->setColumn('name')
 116         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 117     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 118     
 119     $grid->addColumnDate('created', 'Vytvořeno')
 120             ->setSortable()
 121         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 122             ->setFilterDate();
 123         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 124     
 125     $grid->addColumnText('ns', 'NS')
 126         ->setSortable()
 127         ->setColumn('ns')
 128         ->setFilterText()
 129         ->setSuggestion(function ($item){ return $item->ns; })
 130         ->setColumn('ns')
 131         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 132     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 133     
 134     $grid->addColumnText('uname', 'Název')
 135         ->setSortable()
 136         ->setColumn('uname')
 137         ->setFilterText()
 138         ->setSuggestion(function ($item){ return $item->uname; })
 139         ->setColumn('uname')
 140         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 141     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%'; 
 142     
 143     $grid->addColumnText('tname', 'Typ')
 144         ->setSortable()
 145         ->setColumn('tname');
 146     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 147     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 148         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 149     
 150     $grid->addColumnText('rname', 'Realizace')
 151         ->setSortable()
 152         ->setColumn('rname');
 153     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 154     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 155         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 156     
 157     $grid->addActionHref('view', 'Zobrazit')
 158         ->setIcon('fa fa-eye fa-fw')
 159         ->setCustomRender($this->gridBtnSuccess);
 160     
 161     
 162     $grid->setExport();
 163     }
 164     
 165     /* Datagrid vracenych objednavek*/  
 166     public function createComponentOrderReturnedGrid($name) {
 167     
 168     $user = $this->getUser();
 169     
 170     //potrebuji u vedoucich vratit v objednavkach i to, co vytvorili jejich podrizene oddeleni
 171     //proto hledam pole $ids
 172     $unit = $this->unitRepository->getUnits($user->getId());
 173     $ids = $this->unituserRepository->getIds($unit);
 174     
 175     $grid = new \Grido\Grid($this, $name);
 176     $grid->setmodel($this->orderRepository->getGridSelectionReturnedByUnit($user->getId(),$ids));
 177     
 178     $grid->translator->lang = 'cs';
 179     $grid->defaultPerPage = 15;
 180     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 181     $grid->setRememberState(FALSE);
 182     
 183     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 184         if ($row->isinvestment == 1) {
 185         $tr->class[] = 'investment';
 186         }
 187         return $tr;
 188     });
 189     
 190     $grid->addColumnText('id', 'ID')
 191         ->setSortable()
 192         ->setFilterText()
 193         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 194     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 195     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 196             
 197     $grid->addColumnText('name', 'Předmět')
 198         ->setSortable()
 199         ->setColumn('name')
 200         ->setFilterText()
 201         ->setSuggestion(function ($item){ return $item->name; })
 202         ->setColumn('name')
 203         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 204     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 205     
 206     $grid->addColumnDate('created', 'Vytvořeno')
 207             ->setSortable()
 208         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 209             ->setFilterDate();
 210         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 211     
 212     $grid->addColumnText('ns', 'NS')
 213         ->setSortable()
 214         ->setColumn('ns')
 215         ->setFilterText()
 216         ->setSuggestion(function ($item){ return $item->ns; })
 217         ->setColumn('ns')
 218         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 219     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 220     
 221     $grid->addColumnText('uname', 'Název')
 222         ->setSortable()
 223         ->setColumn('uname')
 224         ->setFilterText()
 225         ->setSuggestion(function ($item){ return $item->uname; })
 226         ->setColumn('uname')
 227         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 228     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%'; 
 229     
 230     $grid->addColumnText('tname', 'Typ')
 231         ->setSortable()
 232         ->setColumn('tname');
 233     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 234     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 235         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 236     
 237     $grid->addColumnText('rname', 'Realizace')
 238         ->setSortable()
 239         ->setColumn('rname');
 240     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 241     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 242         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 243     
 244     
 245     $grid->addActionHref('view', 'Zobrazit')
 246         ->setIcon('fa fa-eye fa-fw')
 247         ->setCustomRender($this->gridBtnSuccess);
 248     
 249     
 250     $grid->setExport();
 251     }
 252     
 253     /* Datagrid objednavek ke schvaleni vedoucim*/  
 254     public function createComponentOrderValidateGrid($name) {
 255     
 256     $user = $this->getUser();
 257     
 258     //potrebuji u vedoucich vratit v objednavkach i to, co vytvorili jejich podrizene oddeleni
 259     //proto hledam pole $ids
 260     $unit = $this->unitRepository->getUnits($user->getId());
 261     $ids = $this->unituserRepository->getIds($unit);
 262     
 263     $grid = new \Grido\Grid($this, $name);
 264     $grid->setmodel($this->orderRepository->getGridSelectionValidateByUnit($user->getId(),$ids));
 265     
 266     $grid->translator->lang = 'cs';
 267     $grid->defaultPerPage = 15;
 268     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 269     $grid->setRememberState(FALSE);
 270     
 271     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 272         if ($row->isinvestment == 1) {
 273         $tr->class[] = 'investment';
 274         }
 275         return $tr;
 276     });
 277     
 278     $grid->addColumnText('id', 'ID')
 279         ->setSortable()
 280         ->setFilterText()
 281         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 282     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 283     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 284             
 285     $grid->addColumnText('name', 'Předmět')
 286         ->setSortable()
 287         ->setColumn('name')
 288         ->setFilterText()
 289         ->setSuggestion(function ($item){ return $item->name; })
 290         ->setColumn('name')
 291         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 292     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 293     
 294     $grid->addColumnDate('created', 'Vytvořeno')
 295             ->setSortable()
 296         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 297             ->setFilterDate();
 298         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 299     
 300     $grid->addColumnText('ns', 'NS')
 301         ->setSortable()
 302         ->setColumn('ns')
 303         ->setFilterText()
 304         ->setSuggestion(function ($item){ return $item->ns; })
 305         ->setColumn('ns')
 306         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 307     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 308     
 309     $grid->addColumnText('uname', 'Název')
 310         ->setSortable()
 311         ->setColumn('uname')
 312         ->setFilterText()
 313         ->setSuggestion(function ($item){ return $item->uname; })
 314         ->setColumn('uname')
 315         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 316     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%'; 
 317     
 318     $grid->addColumnText('tname', 'Typ')
 319         ->setSortable()
 320         ->setColumn('tname');
 321     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 322     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 323         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 324     
 325     $grid->addColumnText('rname', 'Realizace')
 326         ->setSortable()
 327         ->setColumn('rname');
 328     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 329     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 330         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 331     
 332     
 333     $grid->addActionHref('view', 'Zobrazit')
 334         ->setIcon('fa fa-eye fa-fw')
 335         ->setCustomRender($this->gridBtnSuccess);
 336     
 337     $grid->setExport();
 338     }
 339     
 340     /* Datagrid uzavrenych objednavek*/  
 341     public function createComponentOrderClosedGrid($name) {
 342     
 343     $user = $this->getUser();
 344     
 345     //potrebuji u vedoucich vratit v objednavkach i to, co vytvorili jejich podrizene oddeleni
 346     //proto hledam pole $ids
 347     $unit = $this->unitRepository->getUnits($user->getId());
 348     $ids = $this->unituserRepository->getIds($unit);
 349     
 350     $grid = new \Grido\Grid($this, $name);
 351     $grid->setmodel($this->orderRepository->getGridSelectionClosedByUnit($user->getId(),$ids));
 352     
 353     $grid->translator->lang = 'cs';
 354     $grid->defaultPerPage = 15;
 355     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 356     $grid->setRememberState(FALSE);
 357     
 358     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 359         if ($row->isinvestment == 1) {
 360         $tr->class[] = 'investment';
 361         }
 362         return $tr;
 363     });
 364     
 365     $grid->addColumnText('id', 'ID')
 366         ->setSortable()
 367         ->setFilterText()
 368         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 369     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 370     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 371             
 372     $grid->addColumnText('name', 'Předmět')
 373         ->setSortable()
 374         ->setColumn('name')
 375         ->setFilterText()
 376         ->setSuggestion(function ($item){ return $item->name;})
 377         ->setColumn('name')
 378         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 379     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 380     
 381     $grid->addColumnDate('created', 'Vytvořeno')
 382             ->setSortable()
 383         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 384             ->setFilterDate();
 385         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 386     
 387     $grid->addColumnText('ns', 'NS')
 388         ->setSortable()
 389         ->setColumn('ns')
 390         ->setFilterText()
 391         ->setSuggestion(function ($item){ return $item->ns; })
 392         ->setColumn('ns')
 393         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 394     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 395     
 396     $grid->addColumnText('uname', 'Název')
 397         ->setSortable()
 398         ->setColumn('uname')
 399         ->setFilterText()
 400         ->setSuggestion(function ($item){ return $item->uname; })
 401         ->setColumn('uname')
 402         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 403     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%'; 
 404     
 405     $grid->addColumnText('tname', 'Typ')
 406         ->setSortable()
 407         ->setColumn('tname');
 408     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 409 //  $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 410 //      ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 411     
 412 
 413 //  $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 414 //      ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 415         
 416     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
 417         $column->setSortable()->headerPrototype->style['width'] ='4%';
 418         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
 419     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
 420         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
 421     
 422         
 423     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
 424         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
 425         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
 426     $grid->addFilterCheck('realized', 'Jen realizované objednávky')
 427         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag ?' , '2'): NULL;});
 428     
 429     
 430     $grid->addActionHref('view', 'Zobrazit')
 431         ->setIcon('fa fa-eye fa-fw')
 432         ->setCustomRender($this->gridBtnSuccess);
 433     
 434     
 435     $grid->setExport();
 436     }
 437     
 438     /**
 439      * 
 440      * @param type $item
 441      * @param Html $el
 442      * @return Html
 443      */
 444     public function gridBtnSuccess($item, \Nette\Utils\Html $el)
 445     {
 446     if ($item['isinvestment'] == 1) {
 447         $class = str_replace('btn-default ', '', implode(' ', $el->class));
 448         $el->class = [$class . ' btn-success'];
 449     }
 450         return $el;
 451     }
 452     
 453     
 454     function createNewForm($backlink) {
 455         
 456     $user = $this->getUser();
 457     $maxsize = $this->parameters->getMaxSizeUpload();
 458     $maxsizeToHuman = $this->parameters->formatBytes($maxsize);
 459     $form = new UI\Form();
 460     $form->setRenderer(new BootstrapRenderer());
 461     
 462 
 463     $form->getElementPrototype()->class = 'form-horizontal';
 464 
 465     $order = $form->addContainer('order');
 466     
 467     $order->addText('name', 'Předmět objednávky:')
 468         ->setRequired('Zadejte prosím předmět objednávky')
 469         ->addRule(UI\Form::MAX_LENGTH, 'Maximální délka je %d znaků.', 255)
 470         ->setAttribute('class', 'form-control');
 471     
 472     
 473     $order->addSelect('ordertype_id', 'Typ objednávky:', $this->ordertypeRepository->getPairData())
 474         ->setAttribute('class', 'form-control2');
 475     $order->addSelect('realization_id', 'Způsob realizace:', $this->realizationRepository->getPairData())
 476         ->setAttribute('class', 'form-control2');
 477     
 478     
 479     $order->addText('price', 'Očekávaná cena:')
 480         ->addRule(UI\Form::FLOAT, 'Očekávaná cena musí být číslo')
 481         ->setAttribute('class', 'form-control')
 482         ->setAttribute('type', 'addon');
 483     
 484     
 485     $order->addTbDatePicker('deadline','Datum realizace do:',NULL,10)
 486         ->setRequired()
 487         ->setAttribute('data-date-format', 'DD.MM.YYYY')
 488         ->setAttribute('class', 'form-control')
 489         ->setAttribute('type', 'addon')
 490         ->setAttribute('readonly');
 491     
 492     $order->addSelect('justify_id', 'Odůvodnění:',  $this->justifyRepository->getPairDataNotOne() + $this->justifyRepository->getPairDataOne())
 493         ->setPrompt('Vyberte odůvodnění ...')
 494         ->setRequired()
 495         ->setAttribute('class', 'form-control2');
 496     
 497     
 498     $order->addText('creator', 'Zadavatel:')
 499         ->addRule(UI\Form::MAX_LENGTH, 'Maximální délka je %d znaků.', 50)
 500         ->setRequired('Zadejte prosím kontaktní osobu')
 501         ->setAttribute('class', 'form-control');
 502     
 503     $item = $form->addContainer('item');
 504     
 505     $item->addText('iname', 'Název položky:')
 506         ->setRequired('Zadejte prosím název položky')
 507         ->addRule(UI\Form::MAX_LENGTH, 'Maximální délka je %d znaků.', 255)
 508         ->setAttribute('class', 'form-control');
 509     
 510     $item->addText('number', 'Počet:')
 511         ->addRule(UI\Form::INTEGER, 'Očekávaný počet musí být celé číslo')
 512         ->setAttribute('class', 'form-control');
 513     
 514     $item->addTextArea('description', 'Upřesnění položky:', NULL, 4)
 515         ->setAttribute('class', 'form-control');
 516     
 517     $document = $form->addContainer('document');
 518     
 519     $document->addSelect('documenttype_id', 'Typ dokumentu:', array(0 => '') + $this->documenttypeRepository->getPairData())
 520         ->setAttribute('class', 'form-control2');
 521     $document->addUpload('files', 'Soubor:', TRUE)
 522         ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální povolená velikost souboru je '.$maxsizeToHuman.'.', $maxsize /* v bytech */);
 523     
 524     
 525     $form->addSubmit('saving', 'Odeslat objednávku')
 526         ->setAttribute('class', 'btn btn-primary');
 527 
 528     $form->addSubmit('back')
 529         ->setAttribute('class', 'btn btn-default')
 530         ->getControlPrototype()
 531         ->setName('a')
 532         ->href($this->link('Order:sent'))
 533         //->add(Html::el('i')->class('fa fa-reply'))
 534         ->add(Html::el('span', ' Storno'));
 535     
 536     
 537     
 538     return $form;
 539     }
 540     
 541     
 542     /**
 543      * nastaveni vstupnich hodnot pro akci  order:create
 544      */
 545     public function actionCreate() {
 546     
 547     $deadline = new \Nette\Utils\DateTime();
 548     $deadline->add(new \DateInterval('P30D'));
 549     $this['newForm']['order']->setDefaults(array('price' => 0, 'deadline' => $deadline, 'ordertype_id' => 1, 'realization_id' => 2));
 550     
 551     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
 552     }
 553     
 554 
 555     /**
 556      * 
 557      * @return type
 558      * vytvoreni komponenty formulare nove objednavky
 559      */
 560     protected function createComponentNewForm(){
 561     
 562     $session = $this->getSession()->getSection('history');
 563 
 564     if (isset($session->secneworder)) {
 565         $backlink = $session->secneworder;
 566     } else {
 567         $backlink = $this->link('sent');
 568     }
 569 
 570 
 571     $form = $this->createNewForm($backlink);
 572     $form->onSuccess[] = $this->newFormSubmitted;
 573 
 574     return $form;
 575     }
 576     
 577     
 578     public function newFormSubmitted($form) {
 579     
 580     try {  
 581         // zaznam do tabulky order
 582         $fdata = $form['order']->getValues();
 583 
 584         $data = new \Nette\Utils\ArrayHash;
 585         $data->name = $fdata->name;
 586         $data->ordertype_id = $fdata->ordertype_id;
 587         $data->realization_id = $fdata->realization_id;
 588         $data->price = $fdata->price;
 589         $data->deadline = $fdata->deadline;
 590         $data->justify_id = $fdata->justify_id;
 591         $data->creator = $fdata->creator? $fdata->creator : NULL;
 592         $data->user_id = $this->getUser()->getId();
 593         $data->created = date('Y-m-d H:i:s');
 594         $data->departmentflag = 1;
 595 
 596 
 597         $neworder = $this->orderRepository->insertData($data);
 598         $idorder = $neworder->id;
 599 
 600         //zaznam do timeline o vzniku objednavky
 601         $edata = new \Nette\Utils\ArrayHash;
 602         $edata->order_id = $idorder;
 603         $edata->user_id = $this->getUser()->getId();
 604         $edata->event_id = 1;
 605         $edata->created = date('Y-m-d H:i:s');
 606         $this->timelineRepository->insertData($edata);
 607 
 608 
 609         // zaznam do tabulky itemorder
 610         $idata = $form['item']->getValues();
 611 
 612         $dataitem = new \Nette\Utils\ArrayHash;
 613         $dataitem->name = $idata->iname;
 614         $dataitem->number = $idata->number;
 615         $dataitem->order_id = $idorder;
 616         $dataitem->description = $idata->description? $idata->description : NULL;
 617         $dataitem->dimenzion_id = 1;
 618 
 619         $this->itemorderRepository->insertData($dataitem);
 620 
 621 
 622 
 623         /*
 624         * Zpracovani dokumentu
 625         * ! v PHP.ini je poreba povolit   extension=php_fileinfo.dll 
 626         */
 627         $sumfiles = 0;
 628         $filedatas = $form['document']->getValues();
 629 
 630         try {
 631         foreach ($filedatas->files as $file) {
 632             if ($file->isOk()) {
 633                 $doc = new \Nette\Utils\ArrayHash;
 634                 $doc->name = $file->getName();
 635                 $doc->filename = $file->getName();
 636                 $doc->documenttype_id = ($filedatas->documenttype_id == 0? NULL: $filedatas->documenttype_id);
 637                 $doc->mime = $file->getContentType();
 638                 $doc->data = $file->getContents();
 639                 $doc->lastmod = date('Y-m-d H:i:s');
 640                 $doc->user_id = $this->getUser()->getId();
 641                 $doc->order_id = $idorder;
 642 
 643                 $this->documentRepository->insertData($doc);
 644 
 645                 $sumfiles = $sumfiles + 1; 
 646                }
 647         }
 648 
 649         if ($sumfiles > 0) {
 650             //zaznam do timeline o prirazeni dokumentu
 651             $d = new \Nette\Utils\ArrayHash;
 652             $d->order_id = $idorder;
 653             $d->user_id = $this->getUser()->getId();
 654             $d->event_id = 10;
 655             $d->created = date('Y-m-d H:i:s');
 656             $this->timelineRepository->insertData($d);
 657         }
 658         } catch ( \PDOException $e) {
 659             $this->flashMessage("Soubor se nepodařilo uložit! ".$e->getMessage(), "error");
 660         }
 661 
 662 
 663         //zaznam do timeline o zaslani vedoucimu oddeleni
 664         $o = new \Nette\Utils\ArrayHash;
 665         $o->order_id = $idorder;
 666         $o->user_id = $this->getUser()->getId();
 667         $o->event_id = 11;
 668         $o->created = date('Y-m-d H:i:s');
 669         $this->timelineRepository->insertData($o);
 670 
 671 
 672         //mail vedoucimu o postoupeni objednavky
 673         $uri = $this->getHttpRequest()->getUrl();
 674         $from = $this->parameters->getFrom();
 675         $support = $this->parameters->getSupport();
 676         //hledam, kdo je vedouci
 677         $userid = $this->getUser()->getId();
 678         $departmentid = $this->departmentRepository->findByUnitId($userid);
 679         $to = $this->userRepository->getChiefEmail($departmentid);
 680         $subject = 'Objednávka k posouzení';
 681         $params = array(
 682         'order_id' => $idorder,
 683         'contact' => $support,
 684         'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
 685         );
 686 
 687         $template = __DIR__ . '/../templates/Mailer/emailToChief.latte';
 688         $image = __DIR__ . '/../../www/img/logo32x32.gif';
 689         $mailer = $this->mailerCfg->getMailConfig();
 690 
 691         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
 692 
 693 
 694         $this->flashMessage('Objednávka byla uložena a zaslána ke schválení vedoucímu oddělení.', 'success');
 695         $this->redirect('Order:sent');
 696     
 697     } catch (\PDOException $ex) {
 698         $this->flashMessage("Chyba při uložení do DB. ".$ex->getMessage(), "error");
 699         $this->redirectUrl($backlink);
 700     }
 701     }
 702     
 703 
 704         
 705     /**
 706      * nastaveni hodnot pro akci order:bcreate
 707      * formular objednavky pro vedouci pracovniky
 708      */
 709     public function actionBcreate() {
 710     // ..Bcreate proto, ze se vola z templates Order/bcreate.latte
 711     $deadline = new \Nette\Utils\DateTime();
 712     $deadline->add(new \DateInterval('P30D'));
 713     $this['newBForm']['order']->setDefaults(array('price' => 0, 'deadline' => $deadline, 'ordertype_id' => 1, 'realization_id' => 2));
 714     
 715     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
 716     }
 717     
 718     /**
 719      * 
 720      * @return type
 721      * vytvoreni komponenty formulare nove objednavky pro vedouci pracovniky
 722      * dedim od NewForm a pridavam dalsi pole (urceni NS ...)
 723      */
 724     protected function createComponentNewBForm() {
 725     
 726     $session = $this->getSession()->getSection('history');
 727 
 728     if (isset($session->secnewborder)) {
 729         $backlink = $session->secnewborder;
 730     } else {
 731         $backlink = $this->link('sent');
 732     }
 733 
 734 
 735     $form = $this->createNewForm($backlink);
 736     $form['order']->addSelect('ns', 'Nákladové středisko:', $this->unitRepository->getPairUserUnit($this->getUser()->getId()))
 737         ->setAttribute('class', 'form-control2');
 738     $form->onSuccess[] = $this->newBFormSubmitted;
 739 
 740     return $form;
 741     }
 742     
 743     
 744     public function newBFormSubmitted($form) {
 745     
 746     try{
 747         // zaznam do tabulky order
 748         $fdata = $form['order']->getValues();
 749         $user_id = $fdata->ns;
 750 
 751         $data = new \Nette\Utils\ArrayHash;
 752         $data->name = $fdata->name;
 753         $data->ordertype_id = $fdata->ordertype_id;
 754         $data->realization_id = $fdata->realization_id;
 755         $data->price = $fdata->price;
 756         $data->deadline = $fdata->deadline;
 757         $data->justify_id = $fdata->justify_id;
 758         $data->creator = $fdata->creator? $fdata->creator : NULL;
 759         $data->user_id = $user_id;
 760         $data->created = date('Y-m-d H:i:s');
 761         $data->departmentflag = 1;
 762 
 763 
 764         $neworder = $this->orderRepository->insertData($data);
 765         $idorder = $neworder->id;
 766 
 767         //zaznam do timeline o vzniku objednavky
 768         $edata = new \Nette\Utils\ArrayHash;
 769         $edata->order_id = $idorder;
 770         $edata->user_id = $user_id;
 771         $edata->event_id = 1;
 772         $edata->created = date('Y-m-d H:i:s');
 773         $this->timelineRepository->insertData($edata);
 774 
 775 
 776         // zaznam do tabulky itemorder
 777         $idata = $form['item']->getValues();
 778 
 779         $dataitem = new \Nette\Utils\ArrayHash;
 780         $dataitem->name = $idata->iname;
 781         $dataitem->number = $idata->number;
 782         $dataitem->order_id = $idorder;
 783         $dataitem->description = $idata->description? $idata->description : NULL;
 784         $dataitem->dimenzion_id = 1;
 785 
 786         $this->itemorderRepository->insertData($dataitem);
 787 
 788 
 789 
 790         // zpracovani dokumentu
 791         $sumfiles = 0;
 792         $filedatas = $form['document']->getValues();
 793 
 794         try {
 795         foreach ($filedatas->files as $file) {
 796             if ($file->isOk()) {
 797                 $doc = new \Nette\Utils\ArrayHash;
 798                 $doc->name = $file->getName();
 799                 $doc->filename = $file->getName();
 800                 $doc->documenttype_id = ($filedatas->documenttype_id == 0? NULL: $filedatas->documenttype_id);
 801                 $doc->mime = $file->getContentType();
 802                 $doc->data = $file->getContents();
 803                 $doc->lastmod = date('Y-m-d H:i:s');
 804                 $doc->user_id = $user_id;
 805                 $doc->order_id = $idorder;
 806 
 807                 $this->documentRepository->insertData($doc);
 808 
 809                 $sumfiles = $sumfiles + 1; 
 810                }
 811         }
 812 
 813         if ($sumfiles > 0) {
 814             //zaznam do timeline o prirazeni dokumentu
 815             $d = new \Nette\Utils\ArrayHash;
 816             $d->order_id = $idorder;
 817             $d->user_id = $user_id;
 818             $d->event_id = 10;
 819             $d->created = date('Y-m-d H:i:s');
 820             $this->timelineRepository->insertData($d);
 821         }
 822         } catch ( \PDOException $e) {
 823             $this->flashMessage("Soubor se nepodařilo uložit! ".$e->getMessage(), "error");
 824         }
 825 
 826 
 827         //zaznam do timeline o zaslani vedoucimu oddeleni
 828         $o = new \Nette\Utils\ArrayHash;
 829         $o->order_id = $idorder;
 830         $o->user_id = $user_id;
 831         $o->event_id = 11;
 832         $o->created = date('Y-m-d H:i:s');
 833         $this->timelineRepository->insertData($o);
 834 
 835 
 836         //mail vedoucimu o postoupeni objednavky
 837         $uri = $this->getHttpRequest()->getUrl();
 838         $from = $this->parameters->getFrom();
 839         $support = $this->parameters->getSupport();
 840         //hledam, kdo je vedouci
 841         $departmentid = $this->departmentRepository->findByUnitId($user_id);
 842         $to = $this->userRepository->getChiefEmail($departmentid);
 843         $subject = 'Objednávka k posouzení';
 844         $params = array(
 845         'order_id' => $idorder,
 846         'contact' => $support,
 847         'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
 848         );
 849 
 850         $template = __DIR__ . '/../templates/Mailer/emailToChief.latte';
 851         $image = __DIR__ . '/../../www/img/logo32x32.gif';
 852         $mailer = $this->mailerCfg->getMailConfig();
 853 
 854         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
 855 
 856         $this->flashMessage('Objednávka byla uložena a zaslána ke schválení vedoucímu oddělení.', 'success');
 857         $this->redirect('Order:sent');
 858             
 859     } catch (\PDOException $ex) {
 860         $this->flashMessage("Chyba při uložení do DB. ".$ex->getMessage(), "error");
 861         $this->redirectUrl($backlink);
 862     }
 863     }
 864     
 865     
 866     
 867     public function renderView($id){
 868     
 869     $item = $this->orderRepository->findById($id);
 870 
 871     if ($item === false) {
 872         $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
 873         $this->redirect('Order:sent');
 874     }
 875 
 876     //potrebuji u vedoucich vratit v objednavkach i to, co vytvorili jejich podrizene oddeleni
 877     //proto hledam pole $ids
 878     $unit = $this->unitRepository->getUnits($this->getUser()->getId());
 879     $ids = $this->unituserRepository->getIds($unit);    
 880     
 881     $orderbyid = $this->orderRepository->findOrderUnitById($id,$this->getUser()->getId(),$ids);
 882     if ($orderbyid === false) {
 883         $this->flashMessage('Nemáte právo přístupu k objednávce č. '.$id, 'error');
 884         $this->redirect('Order:sent');
 885     }
 886     else {
 887         $this->template->orderdetail = $orderbyid;
 888     }
 889     
 890     $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id); 
 891     
 892     $this->template->documentRepository = $this->documentRepository;
 893     $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
 894     
 895     $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
 896     
 897     //vracene posudky
 898     $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
 899     $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
 900     $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
 901     
 902     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
 903     
 904     //konfiguracni data timeline
 905     $this->template->icons = $this->cfgRepository->getTimelineIcons();
 906     $this->template->colors = $this->cfgRepository->getTimelineColors();
 907     $this->template->inverted = $this->cfgRepository->getTimelineInverted();
 908     
 909     //ulozeni nazvu presenteru pro navrat z Itemorder/View
 910     $mySection = $this->getSession()->getSection('history');
 911     $mySection->beforePresenter = 'Order';
 912     $mySection->setExpiration(0);
 913     
 914     }
 915     
 916     /**
 917      * 
 918      * @return \Nette\Application\UI\Form
 919      * komponenta pro pridani dokumentu k objednavce
 920      */
 921     public function createComponentAddDocument() {
 922     
 923     try {
 924         $iduser = $this->getUser()->getId();
 925         $idorder = $this->getParameter('id');
 926         
 927         $form = $this->documentFactory->createAddDocument($idorder,$iduser);
 928         $this->flashMessage('Soubor byl uložen.', 'success');
 929         
 930         return $form;
 931         
 932     } catch (\PDOException $e) {
 933         $this->flashMessage("Soubor se nepodařilo uložit! ".$e->getMessage(), "error");
 934     }
 935 
 936     }
 937 
 938     /**
 939      * 
 940      * @return \Nette\Application\UI\Form
 941      * komponenta pro vykresleni formulare k pojmenovani ulozeneho dokumentu 
 942      */
 943     public function createComponentUpdateNameDocument(){
 944     
 945     try {
 946         $form = $this->documentFactory->createUpdateNameDocument();
 947         $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
 948         
 949         return $form; 
 950     
 951     } catch (\PDOException $e) {
 952         $this->flashMessage("Chyba při uložení do DB. ".$e->getMessage(), 'error');
 953     }
 954     }
 955     
 956     /**
 957      * komponenta pro vykresleni formuláře k potvrzení vymazání uloženého dokumentu
 958      * @return type
 959      */
 960      public function createComponentDeleteDocument() {
 961      try {
 962          $form = $this->documentFactory->createDeleteDocument();
 963          $this->flashMessage('Dokument byl odstraněn.', 'success');
 964          
 965          return $form;
 966          
 967      } catch (Exception $e) {
 968         $this->flashMessage('Chyba. Dokument se nepodařilo odstranit.', 'error');
 969      }
 970      }
 971     
 972     
 973     /**
 974      * 
 975      * @return \Nette\Application\UI\Form
 976      * komponenta formulare posudku vedouciho oddeleni
 977      */
 978     public function createComponentChiefResult() {
 979 
 980         $form = new UI\Form();
 981     $form->setRenderer(new BootstrapRenderer());
 982         
 983         $form->getElementPrototype()->class = 'form-horizontal';
 984         
 985         $form->addTextArea('description', 'Odůvodnění:', NULL, 4)
 986                 ->setRequired('Zadejte prosím odůvodnění')
 987         ->setAttribute('class', 'form-control');
 988         
 989         $form->addRadioList('result','Objednávku:', array('1'=>'Schvaluji','0'=>'Zamítám'))  
 990                 ->setDefaultValue('1')
 991                 ->getSeparatorPrototype()->setName(NULL);
 992         
 993         $form->addSubmit('saving', 'Uložit a zpět')
 994         ->setAttribute('class', 'btn btn-primary');
 995 
 996         $form->onSuccess[] = $this->chiefResultSubmitted;
 997     
 998     return $form;
 999     }
1000     
1001     
1002     public function chiefResultSubmitted($form) {
1003         
1004         try {
1005             //zaznam do tabulky ChiefResult
1006             $result = $form->getValues();
1007             $idorder = $this->getParameter('id');
1008             
1009             $res = new \Nette\Utils\ArrayHash();
1010             $res->description = $result->description;
1011             if ($result->result == '1') {
1012                 $res->approved = 1;
1013                 $res->rejected = NULL;
1014             }
1015             else {
1016                 $res->approved = NULL;
1017                 $res->rejected = 1;
1018             }
1019             $res->lastmod = date('Y-m-d H:i:s');
1020             $res->order_id = $idorder;
1021             $res->user_id = $this->getUser()->getId();
1022                 
1023             $this->chiefRepository->insertData($res);
1024             
1025             //update do tabulky order
1026             $o = new \Nette\Utils\ArrayHash();
1027             $o->chiefflag = 1;
1028         //pokud vracenou objednavku posoudi vedouci pred doplnenim oddeleni,
1029         //je potreba take vytvorit flag za oddeleni
1030         $o->departmentflag = 1;
1031             if ($result->result == '0')
1032                 $o->completeflag = 1;
1033             $this->orderRepository->updateById($idorder, $o);
1034             
1035             //zaznam do timeline
1036         //posudek vedouciho
1037         $t = new \Nette\Utils\ArrayHash;
1038         $t->order_id = $idorder;
1039         $t->user_id = $this->getUser()->getId();
1040         $t->event_id = 2;
1041         $t->created = date('Y-m-d H:i:s');
1042         $this->timelineRepository->insertData($t);
1043         //v pripade zamitnuti, zapis o uzavreni objednavky
1044         if ($result->result == '0') {
1045         $t2 = new \Nette\Utils\ArrayHash;
1046         $t2->order_id = $idorder;
1047         $t2->user_id = $this->getUser()->getId();
1048         $t2->event_id = 12;
1049         $t2->created = date('Y-m-d H:i:s');
1050         $this->timelineRepository->insertData($t2);
1051         }
1052         else {
1053         //kdyz neni zamitnuto, zapis o zaslani vedoucimu centr.nakupu
1054         $t2 = new \Nette\Utils\ArrayHash;
1055         $t2->order_id = $idorder;
1056         $t2->user_id = $this->getUser()->getId();
1057         $t2->event_id = 3;
1058         $t2->created = date('Y-m-d H:i:s');
1059         $this->timelineRepository->insertData($t2);
1060         }
1061         
1062         //mail o zamitnuni (smer oddeleni) nebo schvaleni (smer obchodnik) 
1063         $uri = $this->getHttpRequest()->getUrl();
1064         $from = $this->parameters->getFrom();
1065         $support = $this->parameters->getSupport();
1066         if ($result->result == '1') {
1067         $to = $this->userRepository->getTraderEmail();
1068         $subject = 'Objednávka - přiřadit odbornou oblast';
1069         $params = array(
1070             'order_id' => $idorder,
1071             'contact' => $support,
1072             'url' => $uri->hostUrl.'/trader&execution=view&id='.$idorder,
1073             'investment' => 0
1074         );
1075         $template = __DIR__ . '/../templates/Mailer/emailToTrader.latte';
1076         }
1077         else {
1078         //zjistuji komu pripadne vratit email zpravu        
1079         $item = $this->orderRepository->findById($idorder);
1080         $to = $this->userRepository->getUnitEmail($item->user_id);
1081         $subject = 'Zamítnutá objednávka';
1082         $params = array(
1083             'order_id' => $idorder,
1084             'contact' => $support,
1085             'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
1086         );
1087         $template = __DIR__ . '/../templates/Mailer/emailToUnitRejected.latte';
1088         }
1089 
1090         $image = __DIR__ . '/../../www/img/logo32x32.gif';
1091         $mailer = $this->mailerCfg->getMailConfig();
1092         
1093         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
1094         
1095         $this->flashMessage("Posudek k objednávce č. $idorder byl uložen.", 'success');
1096         $this->redirect('Order:validate');
1097             
1098         } catch (\PDOException $e) {
1099             $this->flashMessage("Chyba při uložení do DB. ".$e->getMessage(), 'error');
1100         }
1101     }
1102     
1103     /**
1104      * 
1105      * @return \Nette\Application\UI\Form
1106      * komponenta pro vykresleni formulare vracene objednavky, ktera byla doplnena (okomentovana)
1107      * a je zaslana k opetovnemu schvaleni vedoucim
1108      */
1109     public function createComponentSendToChief() {
1110     $form = new UI\Form();
1111     $form->setRenderer(new BootstrapRenderer());
1112         
1113         $form->getElementPrototype()->class = 'form-horizontal';
1114         
1115         $form->addSubmit('send')
1116         ->setAttribute('class', 'btn btn-primary btn-lg btn-block')
1117         ->setAttribute('id', 'tooltipToChief')
1118         ->setAttribute('data-placement', 'top')
1119         ->setAttribute('data-original-title', 'V případě vrácené objednávky k doplnění prostudujte v Komentáři příslušné položky pokyny vedoucího centrálního nákupu a následně tímto tlačítkem pošlete objednávku ke schválení vedoucímu oddělení.')
1120         ->getControlPrototype()
1121         ->setName('button')
1122         ->add(Html::el('i')->class('fa fa-mail-forward fa-fw'))
1123         ->add(Html::el('span','Odeslat objednávku vedoucímu oddělení'))
1124         ;
1125 
1126         $form->onSuccess[] = $this->sendToChiefSubmitted;
1127     
1128     return $form;
1129     }
1130     
1131     public function sendToChiefSubmitted($form) {
1132     try {
1133         $idorder = $this->getParameter('id');
1134         $this->orderRepository->updateById($idorder, array('departmentflag' => 1));
1135         
1136         //zaznam do timeline o uprave objednavky
1137         $this->timelineRepository->insertData(array(
1138         'order_id' => $idorder,
1139         'user_id' => $this->getUser()->getId(),
1140         'event_id' => 15,
1141         'created' => date('Y-m-d H:i:s')
1142         ));
1143         //zaznam do timeline o zaslani vedoucimu oddeleni
1144         $this->timelineRepository->insertData(array(
1145         'order_id' => $idorder,
1146         'user_id' => $this->getUser()->getId(),
1147         'event_id' => 11,
1148         'created' => date('Y-m-d H:i:s')
1149         ));
1150         
1151         //mail vedoucimu o postoupeni objednavky
1152         $uri = $this->getHttpRequest()->getUrl();
1153         $from = $this->parameters->getFrom();
1154         $support = $this->parameters->getSupport();
1155         //hledam, kdo je vedouci
1156         $userid = $this->getUser()->getId();
1157         $departmentid = $this->departmentRepository->findByUnitId($userid);
1158         $to = $this->userRepository->getChiefEmail($departmentid);
1159         $subject = 'Objednávka k posouzení';
1160         $params = array(
1161         'order_id' => $idorder,
1162         'contact' => $support,
1163         'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
1164         );
1165         $template = __DIR__ . '/../templates/Mailer/emailToChief.latte';
1166         $image = __DIR__ . '/../../www/img/logo32x32.gif';
1167         $mailer = $this->mailerCfg->getMailConfig();
1168         
1169         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
1170         
1171         $this->flashMessage('Objednávka byla zaslána ke schválení vedoucímu oddělení.', 'success');
1172         $this->redirect('this');
1173         
1174     } catch (\PDOException $e) {
1175         $this->flashMessage("Chyba při uložení do DB. ".$e->getMessage(), 'error');
1176     }
1177     }
1178 }
1179 
IS objednávky API documentation generated by ApiGen