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 TraderPresenter
  15  *
  16  * @author Petr
  17  */
  18 class TraderPresenter extends BasePresenter {
  19     
  20         
  21     /** @var Factory\DocumentFactory @inject */
  22     public $documentFactory;
  23         
  24     /** @var Factory\ConsultationFactory @inject */
  25     public $consultationFactory;
  26     
  27     /** @var Repositories\Lists\AreaRepository @inject */
  28     public $areaRepository;
  29     
  30     /** @var Repositories\Messages\ConsultationRepository @inject */
  31     public $consultationRepository;
  32     
  33     /** @var Repositories\Messages\PostRepository @inject */
  34     public $postRepository;
  35     
  36     /** @var Repositories\Order\OrderRepository @inject */
  37     public $orderRepository;
  38     
  39     /** @var Repositories\Lists\OrdertypeRepository @inject */
  40     public $ordertypeRepository;
  41     
  42     /** @var Repositories\Order\RealizationRepository @inject */
  43     public $realizationRepository;
  44     
  45     /** @var Repositories\Order\TimelineRepository @inject */
  46     public $timelineRepository;
  47     
  48     /** @var Repositories\Order\ItemorderRepository @inject */
  49     public $itemorderRepository;
  50     
  51     /** @var Repositories\Order\ItemareastateRepository @inject */
  52     public $itemareastateRepository;
  53     
  54     /** @var Repositories\Order\InvestmentRepository @inject */
  55     public $investmentRepository;
  56     
  57     /** @var Repositories\Entities\UnituserRepository @inject */
  58     public $unituserRepository;
  59 
  60     /** @var Repositories\Entities\UnitRepository @inject */
  61     public $unitRepository;
  62     
  63     /** @var Repositories\Messages\CommentRepository @inject */
  64     public $commentRepository;
  65     
  66     /** @var Repositories\Entities\UserRepository @inject */
  67     public $userRepository;
  68     
  69     /** @var Repositories\Lists\DocumenttypeRepository @inject */
  70     public $documenttypeRepository;
  71     
  72     /** @var Repositories\Documents\DocumentRepository @inject */
  73     public $documentRepository;
  74     
  75     /** @var Repositories\Entities\ChiefRepository @inject */
  76     public $chiefRepository;
  77     
  78     /** @var Repositories\Entities\TraderRepository @inject */
  79     public $traderRepository;
  80 
  81     /** @var Repositories\Entities\ManagerRepository @inject */
  82     public $managerRepository;
  83     
  84     /** @var Repositories\Entities\ExpertRepository @inject */
  85     public $expertRepository;
  86     
  87     /** @var Repositories\Config\CfgRepository @inject */
  88     public $cfgRepository;    
  89     
  90     /** @var Repositories\Config\Parameters @inject */
  91     public $parameters;
  92     
  93     /** @var Repositories\Config\Mailer @inject */
  94     public $mailerCfg;
  95      
  96 
  97     
  98     
  99     /* Datagrid doslych novych objednavek */  
 100     public function createComponentTraderInGrid($name) {
 101     
 102     $user = $this->getUser();
 103     
 104     $grid = new \Grido\Grid($this, $name);
 105     $grid->setmodel($this->orderRepository->getGridSelectionTraderIn());
 106     
 107     $grid->translator->lang = 'cs';
 108     $grid->defaultPerPage = 15;
 109     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 110     $grid->setRememberState(FALSE);
 111     
 112     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 113         if($row->isinvestment == 1) {
 114         $tr->class[] = 'investment';
 115         }
 116         return $tr;
 117     });
 118     
 119     
 120     $grid->addColumnText('id', 'ID')
 121         ->setSortable()
 122         ->setFilterText()
 123         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 124     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 125     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 126             
 127     $grid->addColumnText('name', 'Předmět')
 128         ->setSortable()
 129         ->setColumn('name')
 130         ->setFilterText()
 131         ->setSuggestion(function ($item){ return $item->name; })
 132         ->setColumn('name')
 133         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 134     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 135     
 136     $grid->addColumnDate('created', 'Vytvořeno')
 137             ->setSortable()
 138         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 139             ->setFilterDate();
 140         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 141     
 142     $grid->addColumnText('ns', 'NS')
 143         ->setSortable()
 144         ->setColumn('ns')
 145         ->setFilterText()
 146         ->setSuggestion(function ($item){ return $item->ns; })
 147         ->setColumn('ns')
 148         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 149     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 150     
 151     $grid->addColumnText('uname', 'Název')
 152         ->setSortable()
 153         ->setColumn('uname')
 154         ->setFilterText()
 155         ->setSuggestion(function ($item){ return $item->uname; })
 156         ->setColumn('uname')
 157         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 158     $grid->getColumn('uname')->headerPrototype->style['width'] = '10%';
 159     
 160     $grid->addColumnText('tname', 'Typ')
 161         ->setSortable()
 162         ->setColumn('tname');
 163     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 164     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 165         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 166     
 167     $grid->addColumnText('rname', 'Realizace')
 168         ->setSortable()
 169         ->setColumn('rname');
 170     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 171     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 172         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 173     
 174     $grid->addActionHref('view', 'Zobrazit')
 175         ->setIcon('fa fa-eye fa-fw')
 176         ->setCustomRender($this->gridBtnSuccess);
 177     
 178     
 179     $grid->setExport();
 180     }
 181     
 182         
 183     /* Datagrid rozpracovanych objednavek zaslanych zpet oddeleni k dopracovani */  
 184     public function createComponentTraderToUnitGrid($name) {
 185     
 186     $user = $this->getUser();
 187     
 188     $grid = new \Grido\Grid($this, $name);
 189     $grid->setmodel($this->orderRepository->getGridSelectionTraderToUnit());
 190     
 191     $grid->translator->lang = 'cs';
 192     $grid->defaultPerPage = 15;
 193     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 194     $grid->setRememberState(FALSE);
 195     
 196     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 197         if($row->isinvestment == 1) {
 198         $tr->class[] = 'investment';
 199         }
 200         return $tr;
 201     });
 202     
 203     
 204     $grid->addColumnText('id', 'ID')
 205         ->setSortable()
 206         ->setFilterText()
 207         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 208     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 209     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 210             
 211     $grid->addColumnText('name', 'Předmět')
 212         ->setSortable()
 213         ->setColumn('name')
 214         ->setFilterText()
 215         ->setSuggestion(function ($item){ return $item->name; })
 216         ->setColumn('name')
 217         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 218     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 219     
 220     $grid->addColumnDate('created', 'Vytvořeno')
 221             ->setSortable()
 222         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 223             ->setFilterDate();
 224         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 225     
 226     $grid->addColumnText('ns', 'NS')
 227         ->setSortable()
 228         ->setColumn('ns')
 229         ->setFilterText()
 230         ->setSuggestion(function ($item){ return $item->ns; })
 231         ->setColumn('ns')
 232         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 233     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 234     
 235     $grid->addColumnText('uname', 'Název')
 236         ->setSortable()
 237         ->setColumn('uname')
 238         ->setFilterText()
 239         ->setSuggestion(function ($item){ return $item->uname; })
 240         ->setColumn('uname')
 241         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 242     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 243     
 244     
 245     $grid->addColumnText('tname', 'Typ')
 246         ->setSortable()
 247         ->setColumn('tname');
 248     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 249     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 250         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 251     
 252     $grid->addColumnText('rname', 'Realizace')
 253         ->setSortable()
 254         ->setColumn('rname');
 255     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 256     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 257         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 258     
 259     $grid->addActionHref('view', 'Zobrazit')
 260         ->setIcon('fa fa-eye fa-fw')
 261         ->setCustomRender($this->gridBtnSuccess);
 262     
 263     
 264     $grid->setExport();
 265     }
 266     
 267     
 268     /* Datagrid rozpracovanych objednavek zaslanych k odbornemu posouzeni */  
 269     public function createComponentTraderToExpertGrid($name) {
 270     
 271     $user = $this->getUser();
 272     
 273     $grid = new \Grido\Grid($this, $name);
 274     $grid->setmodel($this->orderRepository->getGridSelectionTraderToExpert());
 275     
 276     $grid->translator->lang = 'cs';
 277     $grid->setDefaultSort(array('id' => 'ASC'));
 278     $grid->defaultPerPage = 15;
 279     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 280     $grid->setRememberState(FALSE);
 281     
 282     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 283         if($row->isinvestment == 1) {
 284         $tr->class[] = 'investment';
 285         }
 286         return $tr;
 287     });
 288     
 289     
 290     $grid->addColumnText('id', 'ID')
 291         ->setSortable()
 292         ->setFilterText()
 293         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 294     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 295     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 296             
 297     $grid->addColumnText('name', 'Předmět')
 298         ->setSortable()
 299         ->setColumn('name')
 300         ->setFilterText()
 301         ->setSuggestion(function ($item){ return $item->name; })
 302         ->setColumn('name')
 303         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 304     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 305     
 306     $grid->addColumnDate('created', 'Vytvořeno')
 307             ->setSortable()
 308         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 309             ->setFilterDate();
 310         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 311     
 312     $grid->addColumnText('ns', 'NS')
 313         ->setSortable()
 314         ->setColumn('ns')
 315         ->setFilterText()
 316         ->setSuggestion(function ($item){ return $item->ns; })
 317         ->setColumn('ns')
 318         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 319     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 320     
 321     $grid->addColumnText('uname', 'Název')
 322         ->setSortable()
 323         ->setColumn('uname')
 324         ->setFilterText()
 325         ->setSuggestion(function ($item){ return $item->uname; })
 326         ->setColumn('uname')
 327         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 328     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 329     
 330     
 331     $grid->addColumnText('tname', 'Typ')
 332         ->setSortable()
 333         ->setColumn('tname');
 334     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 335     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 336         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 337     
 338     $grid->addColumnText('rname', 'Realizace')
 339         ->setSortable()
 340         ->setColumn('rname');
 341     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 342     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 343         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 344     
 345     $grid->addActionHref('view', 'Zobrazit')
 346         ->setIcon('fa fa-eye fa-fw')
 347         ->setCustomRender($this->gridBtnSuccess);
 348     
 349     
 350     $grid->setExport();
 351     }
 352     
 353     
 354     /* Datagrid rozpracovanych objednavek zaslanych k manazerovi */  
 355     public function createComponentTraderToManagerGrid($name) {
 356     
 357     $user = $this->getUser();
 358     
 359     $grid = new \Grido\Grid($this, $name);
 360     $grid->setmodel($this->orderRepository->getGridSelectionTraderToManager());
 361     
 362     $grid->translator->lang = 'cs';
 363     $grid->setDefaultSort(array('id' => 'ASC'));
 364     $grid->defaultPerPage = 15;
 365     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 366     $grid->setRememberState(FALSE);
 367     
 368     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 369         if($row->isinvestment == 1) {
 370         $tr->class[] = 'investment';
 371         }
 372         return $tr;
 373     });
 374         
 375     $grid->addColumnText('id', 'ID')
 376         ->setSortable()
 377         ->setFilterText()
 378         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 379     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 380     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 381             
 382     $grid->addColumnText('name', 'Předmět')
 383         ->setSortable()
 384         ->setColumn('name')
 385         ->setFilterText()
 386         ->setSuggestion(function ($item){ return $item->name; })
 387         ->setColumn('name')
 388         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 389     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 390     
 391     $grid->addColumnDate('created', 'Vytvořeno')
 392             ->setSortable()
 393         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 394             ->setFilterDate();
 395         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 396     
 397     $grid->addColumnText('ns', 'NS')
 398         ->setSortable()
 399         ->setColumn('ns')
 400         ->setFilterText()
 401         ->setSuggestion(function ($item){ return $item->ns; })
 402         ->setColumn('ns')
 403         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 404     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 405     
 406     $grid->addColumnText('uname', 'Název')
 407         ->setSortable()
 408         ->setColumn('uname')
 409         ->setFilterText()
 410         ->setSuggestion(function ($item){ return $item->uname; })
 411         ->setColumn('uname')
 412         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 413     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 414     
 415     
 416     $grid->addColumnText('tname', 'Typ')
 417         ->setSortable()
 418         ->setColumn('tname');
 419     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 420     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 421         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 422     
 423     $grid->addColumnText('rname', 'Realizace')
 424         ->setSortable()
 425         ->setColumn('rname');
 426     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 427     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 428         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 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     /* Datagrid doslych objednavek ke schvaleni */  
 440     public function createComponentTraderValidateGrid($name) {
 441     
 442     $user = $this->getUser();
 443     
 444     $grid = new \Grido\Grid($this, $name);
 445     $grid->setmodel($this->orderRepository->getGridSelectionTraderValidate());
 446     
 447     $grid->translator->lang = 'cs';
 448     $grid->setDefaultSort(array('id' => 'ASC'));
 449     $grid->defaultPerPage = 15;
 450     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 451     $grid->setRememberState(FALSE);
 452     
 453     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 454         if($row->isinvestment == 1 && $row->returnflag != 1) {
 455         $tr->class[] = 'investment';
 456         }
 457         elseif ($row->returnflag == 1) {
 458         $tr->class[] = 'returned';
 459         }
 460         return $tr;
 461     });
 462     
 463     $grid->addColumnText('id', 'ID')
 464         ->setSortable()
 465         ->setFilterText()
 466         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 467     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 468     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 469             
 470     $grid->addColumnText('name', 'Předmět')
 471         ->setSortable()
 472         ->setColumn('name')
 473         ->setFilterText()
 474         ->setSuggestion(function ($item){ return $item->name; })
 475         ->setColumn('name')
 476         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 477     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 478     
 479     $grid->addColumnDate('created', 'Vytvořeno')
 480             ->setSortable()
 481         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 482             ->setFilterDate();
 483         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 484     
 485     $grid->addColumnText('ns', 'NS')
 486         ->setSortable()
 487         ->setColumn('ns')
 488         ->setFilterText()
 489         ->setSuggestion(function ($item){ return $item->ns; })
 490         ->setColumn('ns')
 491         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 492     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 493     
 494     $grid->addColumnText('uname', 'Název')
 495         ->setSortable()
 496         ->setColumn('uname')
 497         ->setFilterText()
 498         ->setSuggestion(function ($item){ return $item->uname; })
 499         ->setColumn('uname')
 500         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 501     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 502     
 503     $grid->addColumnText('tname', 'Typ')
 504         ->setSortable()
 505         ->setColumn('tname');
 506     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 507     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 508         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 509     
 510     $grid->addColumnText('rname', 'Realizace')
 511         ->setSortable()
 512         ->setColumn('rname');
 513     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 514     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 515         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 516     
 517     $grid->addActionHref('view', 'Zobrazit')
 518         ->setIcon('fa fa-eye fa-fw')
 519         ->setCustomRender($this->gridBtnCustom);
 520 
 521     $grid->setExport();
 522     }
 523     
 524     
 525     /**
 526      * 
 527      * @param type $item
 528      * @param Html $el
 529      * @return Html
 530      * výstražný button
 531      */
 532     public function gridBtnDanger($item, \Nette\Utils\Html $el)
 533     {
 534     if ($item['returnflag'] == 1) {
 535         $class = str_replace('btn-default ', '', implode(' ', $el->class));
 536         $el->class = [$class . ' btn-danger'];
 537     }
 538         return $el;
 539     }
 540     
 541     /**
 542      * 
 543      * @param type $item
 544      * @param Html $el
 545      * @return Html
 546      */
 547     public function gridBtnSuccess($item, \Nette\Utils\Html $el)
 548     {
 549     if ($item['isinvestment'] == 1) {
 550         $class = str_replace('btn-default ', '', implode(' ', $el->class));
 551         $el->class = [$class . ' btn-success'];
 552     }
 553         return $el;
 554     }
 555     
 556     
 557     public function gridBtnCustom($item, \Nette\Utils\Html $el)
 558     {
 559     if ($item['isinvestment'] == 1 && $item['returnflag'] != 1) {
 560         $class = str_replace('btn-default ', '', implode(' ', $el->class));
 561         $el->class = [$class . ' btn-success'];
 562     }
 563     elseif ($item['returnflag'] == 1) {
 564         $class = str_replace('btn-default ', '', implode(' ', $el->class));
 565         $el->class = [$class . ' btn-danger'];
 566     }
 567         return $el;
 568     }
 569     
 570     
 571     /* Datagrid objednavek schvalenych a pripravenych k realizace -> ceka na prideleni realizatora */  
 572     public function createComponentTraderToRealizeGrid($name) {
 573     
 574     $user = $this->getUser();
 575     
 576     $grid = new \Grido\Grid($this, $name);
 577     $order_ids = $this->itemorderRepository->findOrderWithoutImplementer();
 578     $grid->setModel($this->orderRepository->getGridSelectionTraderToRealize($order_ids));
 579     
 580     $grid->translator->lang = 'cs';
 581     $grid->setDefaultSort(array('id' => 'ASC'));
 582     $grid->defaultPerPage = 15;
 583     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 584     $grid->setRememberState(FALSE);
 585     
 586     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 587         if($row->isinvestment == 1) {
 588         $tr->class[] = 'investment';
 589         }
 590         return $tr;
 591     });
 592     
 593     $grid->addColumnText('id', 'ID')
 594         ->setSortable()
 595         ->setFilterText()
 596         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 597     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 598     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 599             
 600     $grid->addColumnText('name', 'Předmět')
 601         ->setSortable()
 602         ->setColumn('name')
 603         ->setFilterText()
 604         ->setSuggestion(function ($item){ return $item->name; })
 605         ->setColumn('name')
 606         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 607     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 608     
 609     $grid->addColumnDate('created', 'Vytvořeno')
 610             ->setSortable()
 611         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 612             ->setFilterDate();
 613         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 614     
 615     $grid->addColumnText('ns', 'NS')
 616         ->setSortable()
 617         ->setColumn('ns')
 618         ->setFilterText()
 619         ->setSuggestion(function ($item){ return $item->ns; })
 620         ->setColumn('ns')
 621         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 622     $grid->getColumn('ns')->headerPrototype->style['width'] = '5%';
 623     
 624     $grid->addColumnText('uname', 'Název')
 625         ->setSortable()
 626         ->setColumn('uname')
 627         ->setFilterText()
 628         ->setSuggestion(function ($item){ return $item->uname; })
 629         ->setColumn('uname')
 630         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 631     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 632     
 633     $grid->addColumnText('tname', 'Typ')
 634         ->setSortable()
 635         ->setColumn('tname');
 636     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 637     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 638         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 639     
 640     $grid->addColumnText('rname', 'Realizace')
 641         ->setSortable()
 642         ->setColumn('rname');
 643     $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 644     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 645         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 646     
 647     $grid->addActionHref('view', 'Zobrazit')
 648         ->setIcon('fa fa-eye fa-fw')
 649         ->setCustomRender($this->gridBtnSuccess);
 650     
 651     
 652     $grid->setExport();
 653     }
 654     
 655     /* Datagrid uzavrenych objednavek */  
 656     public function createComponentTraderClosedGrid($name) {
 657     
 658     $user = $this->getUser();
 659     
 660     $grid = new \Grido\Grid($this, $name);
 661     $grid->setmodel($this->orderRepository->getGridSelectionTraderClosed());
 662     
 663     $grid->translator->lang = 'cs';
 664     $grid->setDefaultSort(array('id' => 'DESC'));
 665     $grid->defaultPerPage = 15;
 666     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 667     $grid->setRememberState(FALSE);
 668     
 669     $grid->setRowCallback(function($row, \Nette\Utils\Html $tr) {
 670         if($row->isinvestment == 1) {
 671         $tr->class[] = 'investment';
 672         }
 673         return $tr;
 674     });
 675     
 676     $grid->addColumnText('id', 'ID')
 677         ->setSortable()
 678         ->setFilterText()
 679         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
 680     $grid->getColumn('id')->cellPrototype->class[] = 'center';
 681     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
 682             
 683     $grid->addColumnText('name', 'Předmět')
 684         ->setSortable()
 685         ->setColumn('name')
 686         ->setFilterText()
 687         ->setSuggestion(function ($item){ return $item->name; })
 688         ->setColumn('name')
 689         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
 690     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
 691     
 692     $grid->addColumnDate('created', 'Vytvořeno')
 693             ->setSortable()
 694         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
 695             ->setFilterDate();
 696         $grid->getColumn('created')->cellPrototype->class[] = 'center';
 697     
 698     $grid->addColumnText('ns', 'NS')
 699         ->setSortable()
 700         ->setColumn('ns')
 701         ->setFilterText()
 702         ->setSuggestion(function ($item){ return $item->ns; })
 703         ->setColumn('ns')
 704         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
 705     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
 706     
 707     $grid->addColumnText('uname', 'Název')
 708         ->setSortable()
 709         ->setColumn('uname')
 710         ->setFilterText()
 711         ->setSuggestion(function ($item){ return $item->uname; })
 712         ->setColumn('uname')
 713         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
 714     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
 715     
 716 //  $grid->addColumnText('tname', 'Typ')
 717 //      ->setSortable()
 718 //      ->setColumn('tname');
 719 //  $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
 720     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
 721         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
 722     
 723 //  patrne nepotrebuju videt, z jakych penez to slo, protoze to uz je uzavreno ?
 724 //  $grid->addColumnText('rname', 'Realizace')
 725 //      ->setSortable()
 726 //      ->setColumn('rname');
 727 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
 728     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
 729         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
 730         
 731 //  $grid->addFilterSelect('myear', 'Ukončeno (Rok)', array('' => '', date('Y') => date('Y'), date('Y',  strtotime('-1 year')) => date('Y', strtotime('-1 year'))))
 732 //      ->setWhere(function ($value, $connection){ $connection->where("YEAR(CASE WHEN order.managerflag IS NULL THEN order.created ELSE :managerresult.lastmod END) = ?", "$value");});
 733         
 734     $grid->addFilterText('myear', 'Ukončeno (Rok)')
 735         ->setWhere(function ($value, $connection){ $connection->where("(CASE WHEN order.managerflag IS NULL THEN YEAR(order.created) ELSE YEAR(:managerresult.lastmod) END) = ?", "$value");});
 736         
 737     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
 738         $column->setSortable()->headerPrototype->style['width'] ='4%';
 739         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
 740     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
 741         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
 742     
 743     $columna = new \Grido\Components\Columns\BooleanExtension($grid, 'impacceptflag', 'Přijato');
 744         $columna->setSortable()->headerPrototype->style['width'] ='4%';
 745         $grid->getColumn('impacceptflag')->headerPrototype->class[] = 'center'; 
 746     $grid->addFilterCheck('impacceptflag', 'Jen objednávky přijaté řešiteli k realizaci')
 747         ->setWhere(function($value, $connection) {$value ? $connection->where('order.impacceptflag ?' , '2'): NULL;});
 748         
 749     $columnr = new \Grido\Components\Columns\BooleanExtension($grid, 'realizedflag', 'Realizováno');
 750         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
 751         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
 752     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
 753         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
 754         
 755         
 756     $grid->addActionHref('view', 'Zobrazit')
 757         ->setIcon('fa fa-eye fa-fw')
 758         ->setCustomRender($this->gridBtnSuccess);
 759     
 760     
 761     $grid->setExport();
 762     }
 763     
 764     
 765     
 766     public function renderView($id){
 767     
 768     $item = $this->orderRepository->findById($id);
 769     $user = $this->getUser();
 770     
 771     if ($item === false) {
 772         $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
 773         $this->redirect('Homepage:default');
 774     }   
 775 
 776     $this->template->orderdetail = $this->orderRepository->findOrderForTrader($id);
 777     $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id); 
 778     
 779     $this->template->documentRepository = $this->documentRepository;
 780     $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
 781     
 782     $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
 783     
 784     //vracene posudky
 785     $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
 786     $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
 787     $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
 788     
 789     $iditems = $this->itemorderRepository->getIdItemsOrder($item->id);
 790     $this->template->expertresults = $this->expertRepository->getExpertResults($iditems);
 791 
 792     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
 793     
 794     //konzultace
 795     $consultations = $this->consultationRepository->getConsultationHeader($user->getId(), $item->id);
 796     if ($consultations->fetch() != NULL) {
 797         $this->template->consultations = $consultations;
 798     }
 799     else {
 800         $this->template->consultations = NULL;
 801     }
 802     
 803     //konfiguracni data timeline
 804     $this->template->icons = $this->cfgRepository->getTimelineIcons();
 805     $this->template->colors = $this->cfgRepository->getTimelineColors();
 806     $this->template->inverted = $this->cfgRepository->getTimelineInverted();
 807     
 808     
 809     //ulozeni nazvu presenteru pro navrat z Itemorder/View
 810     $mySection = $this->getSession()->getSection('history');
 811     $mySection->beforePresenter = 'Trader';
 812     $mySection->setExpiration(0);
 813     
 814     
 815     }
 816     
 817     /**
 818      * 
 819      * @return \Nette\Application\UI\Form
 820      * komponenta pro pridani dokumentu k objednavce
 821      */
 822     public function createComponentAddDocument() {
 823     
 824     try {
 825         $iduser = $this->getUser()->getId();
 826         $idorder = $this->getParameter('id');
 827         
 828         $form = $this->documentFactory->createAddDocument($idorder,$iduser);
 829         $this->flashMessage('Soubor byl uložen.', 'success');
 830         
 831         return $form;
 832         
 833     } catch (\PDOException $e) {
 834         $this->flashMessage("Soubor se nepodařilo uložit!", "error");
 835     }
 836 
 837     }
 838 
 839     /**
 840      * 
 841      * @return \Nette\Application\UI\Form
 842      * komponenta pro vykresleni formulare k pojmenovani ulozeneho dokumentu 
 843      */
 844     public function createComponentUpdateNameDocument(){
 845     
 846     try {
 847         $form = $this->documentFactory->createUpdateNameDocument();
 848         $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
 849         
 850         return $form; 
 851     
 852     } catch (\PDOException $e) {
 853         $this->flashMessage('Chyba při uložení do DB.', 'error');
 854     }
 855     }  
 856     
 857     /**
 858      * komponenta pro vykresleni formuláře k potvrzení vymazání uloženého dokumentu
 859      * @return type
 860      */
 861      public function createComponentDeleteDocument() {
 862      try {
 863          $form = $this->documentFactory->createDeleteDocument();
 864          $this->flashMessage('Dokument byl odstraněn.', 'success');
 865          
 866          return $form;
 867          
 868      } catch (Exception $e) {
 869         $this->flashMessage('Chyba. Dokument se nepodařilo odstranit.', 'error');
 870      }
 871      }
 872     
 873     /**
 874      * 
 875      * @return \Nette\Application\UI\Form
 876      * komponenta pro vykresleni formulare posudku
 877      */
 878     public function createComponentTraderResult() {
 879         $user = $this->getUser();
 880         $form = new UI\Form();
 881     $form->setRenderer(new BootstrapRenderer());
 882         
 883         $form->getElementPrototype()->class = 'form-horizontal';
 884         
 885         $form->addTextArea('description', 'Odůvodnění:', NULL, 4)
 886         ->setAttribute('placeholder', 'Lze vložit odůvodnění objednávky. Společně se Souhrnem obchodníka k jednotlivým položkám bude tvořit celkový posudek.')
 887         ->setAttribute('class', 'form-control')
 888         ->setAttribute('type', 'modal')
 889         ->setAttribute('id', 'inputDescription');
 890         
 891         $form->addRadioList('result','Objednávku:', array('1'=>'Schvaluji','0'=>'Zamítám'))  
 892                 ->setDefaultValue('1')
 893                 ->getSeparatorPrototype()->setName(NULL);
 894         
 895         
 896         $form->addSubmit('saving', 'Uložit a zpět')
 897         ->setAttribute('class', 'btn btn-primary');
 898 
 899         
 900         $form->onSuccess[] = $this->traderResultSubmitted;
 901     
 902     return $form;
 903     }
 904     
 905     
 906     public function traderResultSubmitted($form) {
 907         
 908         try {
 909             //zaznam do tabulky TraderResult
 910             $result = $form->getValues();
 911             $idorder = $this->getParameter('id');
 912         
 913             
 914             $res = new \Nette\Utils\ArrayHash();
 915         //zjistím shrnuti obchodnnika k jednotlivym polozkam
 916         $items = $this->itemorderRepository->getItemsOrderWithDimenzion($idorder);
 917         $description= "";
 918         foreach ($items as $item) {
 919         $description .= "Položka: $item->name <br>";
 920         $description .= "Množství k realizaci: $item->sum_number <br>";
 921         $description .= "Jednotka množství: $item->dimname <br>";
 922         $description .= "Celková cena: " . number_format($item->sum_priceitem, 0, '.', ' ') . " Kč s DPH <br>";
 923         $description .= $item->isplan? "Je v OP pro rok $item->yearplan.<br>" : "Není v OP. <br>";
 924         $description .= mb_strlen(trim($item->note)) > 0? "$item->note <br><br>" : "<br>";
 925         }
 926         
 927             
 928             if ($result->result == '1') {
 929                 $res->approved = 1;
 930                 $res->rejected = NULL;
 931         $res->description = $description . $result->description;
 932             }
 933             else {
 934                 $res->approved = NULL;
 935                 $res->rejected = 1;
 936         $res->description = $result->description;
 937             }
 938             $res->lastmod = date('Y-m-d H:i:s');
 939             $res->order_id = $idorder;
 940             $res->user_id = $this->getUser()->getId();
 941                 
 942             $this->traderRepository->insertData($res);
 943             
 944             //update do tabulky order, ze objednavka byla posouzena a je zaslana manazerovi
 945         //pokud je zamitnuta, je navic update o ukonceni
 946             $o = new \Nette\Utils\ArrayHash();
 947             $o->traderupflag = 1;
 948         $o->returnflag = NULL;
 949             if ($result->result == '0')
 950                 $o->completeflag = 1;
 951             $this->orderRepository->updateById($idorder, $o);
 952             
 953             //zaznam do timeline
 954         //posudek vedouciho nakupu
 955         $t = new \Nette\Utils\ArrayHash;
 956         $t->order_id = $idorder;
 957         $t->user_id = $this->getUser()->getId();
 958         $t->event_id = 4;
 959         $t->created = date('Y-m-d H:i:s');
 960         $this->timelineRepository->insertData($t);
 961         //v pripade zamitnuti, zapis o uzavreni objednavky
 962         if ($result->result == '0') {
 963         $t2 = new \Nette\Utils\ArrayHash;
 964         $t2->order_id = $idorder;
 965         $t2->user_id = $this->getUser()->getId();
 966         $t2->event_id = 12;
 967         $t2->created = date('Y-m-d H:i:s');
 968         $this->timelineRepository->insertData($t2);
 969         
 970         }
 971         else {
 972         //zaslano NHTS
 973         $t3 = new \Nette\Utils\ArrayHash;
 974         $t3->order_id = $idorder;
 975         $t3->user_id = $this->getUser()->getId();
 976         $t3->event_id = 7;
 977         $t3->created = date('Y-m-d H:i:s');
 978         $this->timelineRepository->insertData($t3);     
 979         }
 980         
 981         //mail o zamitnuni (smer oddeleni) nebo schvaleni (smer NHTS)
 982         $uri = $this->getHttpRequest()->getUrl();
 983         $from = $this->parameters->getFrom();
 984         $support = $this->parameters->getSupport();
 985         if ($result->result == '1') {
 986         $to = $this->userRepository->getManagerEmail();
 987         $subject = 'Objednávka k posouzení';
 988         $params = array(
 989             'order_id' => $idorder,
 990             'contact' => $support,
 991             'url' => $uri->hostUrl.'/manager&execution=view&id='.$idorder
 992         );
 993         $template = __DIR__ . '/../templates/Mailer/emailToManager.latte';
 994         }
 995         else {
 996         //zjistuji komu pripadne vratit email zpravu o zamitnuni        
 997         $item = $this->orderRepository->findById($idorder);
 998         $to = $this->userRepository->getUnitEmail($item->user_id);
 999         $subject = 'Zamítnutá objednávka';
1000         $params = array(
1001             'order_id' => $idorder,
1002             'contact' => $support,
1003             'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
1004         );
1005         $template = __DIR__ . '/../templates/Mailer/emailToUnitRejected.latte';
1006         }
1007 
1008         $image = __DIR__ . '/../../www/img/logo32x32.gif';
1009         $mailer = $this->mailerCfg->getMailConfig();
1010         
1011         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer); 
1012         
1013         
1014         $this->flashMessage("Posudek k objednávce č. $idorder byl uložen.", 'success');
1015         $this->redirect('Trader:validate');
1016             
1017         } catch (\PDOException $e) {
1018             $this->flashMessage('Chyba při uložení do DB.', 'error');
1019         }
1020         
1021     }
1022     
1023     /**
1024      * 
1025      * @return \Nette\Application\UI\Form
1026      * komponenta pro vykresleni formulare vraceni objednavky
1027      */
1028     public function createComponentTraderBack() {
1029     
1030     //$user = $this->getUser();
1031     $form = new UI\Form();
1032     $form->setRenderer(new BootstrapRenderer());
1033 
1034     $form->getElementPrototype()->class = 'form-horizontal';
1035     $form->addSelect('back_id', 'Vrátit komu:', array(0 => 'Požadující oddělení', 1 => 'Odborné pracoviště') )
1036         ->setPrompt('Vyberte adresáta ...')
1037         ->setAttribute('class', 'form-control2');
1038     
1039     $form->addTextArea('message', 'Komentář:', NULL, 4)
1040         ->setRequired('Upřesněte požadavek na doplnění.')
1041         ->setAttribute('class', 'form-control');
1042     
1043     $form->addSubmit('back', 'Odeslat')
1044         ->setAttribute('class', 'btn btn-primary');
1045 
1046     $form->onSuccess[] = $this->traderBackSubmitted;
1047     return $form;
1048     }
1049 
1050     public function traderBackSubmitted($form) {
1051     try {
1052         $result = $form->getValues();
1053             $idorder = $this->getParameter('id');
1054         
1055         
1056         //zaznam do order + itemorder + item_area_state
1057         if ($result->back_id == '0') {
1058         //pozadujici oddeleni
1059         $this->orderRepository->updateById($idorder, array(
1060             'returnflag' => 1,
1061             'completeflag' => NULL,
1062             'managerflag' => NULL,
1063             'traderupflag' => NULL,
1064             'traderdownflag' => NULL,
1065             'itemflag' => NULL,
1066             'chiefflag' => NULL,
1067             'departmentflag' => NULL
1068         ));
1069         }
1070         elseif ($result->back_id ==  '1') {
1071         //experti
1072         //zaznam do order
1073         $this->orderRepository->updateById($idorder, array(
1074             'returnflag' => 1,
1075             'completeflag' => NULL,
1076             'managerflag' => NULL,
1077             'traderupflag' => NULL,
1078             'itemflag' => NULL
1079         ));
1080         //zaznam do itemorder + item_area_state
1081         $this->writeBackMove($idorder);
1082         }
1083         //zaznam do timeline
1084         $this->timelineRepository->insertData(array(
1085         'order_id' => $idorder,
1086         'user_id' => $this->getUser()->getId(),
1087         'event_id' => 9,
1088         'created' => date('Y-m-d H:i:s')
1089         ));
1090         
1091         //zapis do comment
1092         if (mb_strlen(trim($result->message)) > 0) {
1093         $iditemorder = $this->itemorderRepository->getIdItemsOrder($idorder)->fetch();
1094         $this->commentRepository->insertData(array(
1095             'itemorder_id' => $iditemorder,
1096             'user_id' => $this->getUser()->getId(),
1097             'description' => $result->message,
1098             'created' => date('Y-m-d H:i:s')
1099         ));
1100         }
1101         
1102         //mail o zaslani oddeleni, vedoucimu oddeleni nebo odbornikovi
1103         $item = $this->orderRepository->findById($idorder); 
1104         $uri = $this->getHttpRequest()->getUrl();
1105         $from = $this->parameters->getFrom();
1106         $support = $this->parameters->getSupport();
1107         $subject = 'Objednávka vrácená k doplnění';
1108         if ($result->back_id == '0') {
1109         //zjistuji oddeleni, u investice vedouciho
1110         if ($item->isinvestment == 1) {
1111             $investment = $this->investmentRepository->findByOrderId($idorder);
1112             $to = $this->userRepository->getUserEmail($investment->user_id);
1113         }
1114         else {
1115             $to = $this->userRepository->getUnitEmail($item->user_id);
1116         }
1117         $params = array(
1118             'order_id' => $idorder,
1119             'contact' => $support,
1120             'url' => $uri->hostUrl.'/order&execution=view&id='.$idorder
1121         );
1122         $template = __DIR__ . '/../templates/Mailer/emailToUnitBack.latte';
1123         }
1124         else {
1125         //zjistuji experty  
1126         $iditems = $this->itemorderRepository->getIdItemsOrder($item->id);
1127         $idarea = $this->itemorderRepository->getItemOrderAreaIdByItemId($iditems);
1128         $to = $this->userRepository->getExpertEmail($idarea);
1129         $params = array(
1130             'order_id' => $idorder,
1131             'contact' => $support,
1132             'url' => $uri->hostUrl.'/expert&execution=view&id='.$idorder
1133         );
1134         $template = __DIR__ . '/../templates/Mailer/emailToExpertBack.latte';
1135         }
1136         
1137         $image = __DIR__ . '/../../www/img/logo32x32.gif';
1138         $mailer = $this->mailerCfg->getMailConfig();
1139         
1140         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);   
1141         
1142         //zprava
1143         $text = ($result->back_id == 0)? 'požadujícímu oddělení' : 'k odbornémmu posouzení';
1144         $this->flashMessage('Objednávka č. '.$idorder.' byla vrácena '.$text.'.', 'success');
1145         $this->redirect('Trader:validate');
1146         
1147     } catch (\PDOException $ex) {
1148         $this->flashMessage("Chyba při uložení do DB. ".$ex->getMessage(), 'error');
1149     }
1150     }
1151     
1152         
1153     /**
1154      * 
1155      * @param type $order_id
1156      * zapise zaznamy do item_area_state pro nove odborne posouzeni a vynuluje flag v itemorder
1157      */
1158     public function writeBackMove($order_id) {
1159     
1160     $iditems = $this->itemorderRepository->getIdItemsOrder($order_id);
1161     foreach ($iditems as $iditem) {
1162         $this->itemorderRepository->updateById($iditem->id, array('resultflag' => NULL));  
1163         //zaznam do item_area_state
1164         $areas = $this->itemorderRepository->getItemOrderAreaIdByItemId($iditem->id);
1165         foreach ($areas as $key => $value) {
1166         $countAreaState = $this->itemareastateRepository->countAreaState($iditem->id, $value);
1167         if($countAreaState->cnt == 0) {
1168             $this->itemareastateRepository->addAreaState($iditem->id, $value, $this->getUser()->getId());
1169         }
1170         }
1171     }
1172     }
1173     
1174     
1175     
1176     /**
1177      * 
1178      * @return \Nette\Application\UI\Form
1179      * komponenta pro zalozeni nove konzultace k objednavce
1180      */
1181     public function createComponentAddConsultation() {
1182     
1183     try{
1184         $form = $this->consultationFactory->createAddConsultation($this->getParameter('id'),$this->getUser()->id, $this->getHttpRequest()->getUrl()->hostUrl);
1185         $this->flashMessage('Požadavek na konzultaci byl uložen.', 'success');
1186 
1187         return $form;
1188         
1189     } catch (\PDOException $ex) {
1190         $this->flashMessage("Chyba při uložení konzultace. ".$ex->getMessage(), 'error');
1191     }
1192     }
1193     
1194 }
1195 
IS objednávky API documentation generated by ApiGen