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 DirectorPresenter
 15  *
 16  * @author Petr
 17  */
 18 class DirectorPresenter extends BasePresenter {
 19     
 20     /** @var Repositories\Lists\AreaRepository @inject */
 21     public $areaRepository;
 22     
 23     /** @var Repositories\Messages\ConsultationRepository @inject */
 24     public $consultationRepository;
 25     
 26     /** @var Repositories\Messages\PostRepository @inject */
 27     public $postRepository;
 28     
 29     /** @var Repositories\Order\OrderRepository @inject */
 30     public $orderRepository;
 31     
 32     /** @var Repositories\Lists\OrdertypeRepository @inject */
 33     public $ordertypeRepository;
 34     
 35     /** @var Repositories\Order\RealizationRepository @inject */
 36     public $realizationRepository;
 37     
 38     /** @var Repositories\Order\TimelineRepository @inject */
 39     public $timelineRepository;
 40     
 41     /** @var Repositories\Order\ItemorderRepository @inject */
 42     public $itemorderRepository;
 43     
 44     /** @var Repositories\Entities\UnituserRepository @inject */
 45     public $unituserRepository;
 46 
 47     /** @var Repositories\Entities\UserRepository @inject */
 48     public $userRepository;
 49     
 50     /** @var Repositories\Entities\UnitRepository @inject */
 51     public $unitRepository;
 52     
 53     /** @var Factory\DocumentFactory @inject */
 54     public $documentFactory;
 55     
 56     /** @var Repositories\Lists\DocumenttypeRepository @inject */
 57     public $documenttypeRepository;
 58     
 59     /** @var Repositories\Documents\DocumentRepository @inject */
 60     public $documentRepository;
 61     
 62     /** @var Repositories\Entities\ChiefRepository @inject */
 63     public $chiefRepository;
 64     
 65     /** @var Repositories\Entities\TraderRepository @inject */
 66     public $traderRepository;
 67 
 68     /** @var Repositories\Entities\ManagerRepository @inject */
 69     public $managerRepository;
 70     
 71     /** @var Repositories\Config\CfgRepository @inject */
 72     public $cfgRepository;
 73     
 74     /** @var Repositories\Config\Parameters @inject */
 75     public $parameters;    
 76         
 77     /** @var Repositories\Config\Mailer @inject */
 78     public $mailerCfg;
 79     
 80     
 81     
 82     
 83 /**
 84      * Datagrid vsech objednavek
 85      * @param type $name
 86      * 
 87      */
 88     public function createComponentDirectorAllGrid($name) {
 89     
 90     $user = $this->getUser();
 91     
 92     $grid = new \Grido\Grid($this, $name);
 93     $grid->setmodel($this->orderRepository->getGridSelectionOrdersAll());
 94     
 95     $grid->translator->lang = 'cs';
 96     $grid->setDefaultSort(array('id' => 'DESC'));
 97     $grid->defaultPerPage = 15;
 98     $grid->filterRenderType = \Grido\Components\Filters\Filter::RENDER_OUTER;
 99     $grid->setRememberState(FALSE);
100     
101     
102     $grid->addColumnText('id', 'ID')
103         ->setSortable()
104         ->setFilterText()
105         ->setWhere(function ($value, $connection) { $connection->where("order.id ?", $value);});
106     $grid->getColumn('id')->cellPrototype->class[] = 'center';
107     $grid->getColumn('id')->headerPrototype->style['width'] = '3%';
108             
109     $grid->addColumnText('name', 'Předmět')
110         ->setSortable()
111         ->setColumn('name')
112         ->setFilterText()
113         ->setSuggestion(function ($item){ return $item->name; })
114         ->setColumn('name')
115         ->setWhere(function ($value, $connection){ $connection->where("order.name LIKE ?", "%$value%");});
116     $grid->getColumn('name')->headerPrototype->style['width'] = '15%';
117     
118     $grid->addColumnDate('created', 'Vytvořeno')
119             ->setSortable()
120         ->setDateFormat(\Grido\Components\Columns\Date::FORMAT_DATE)
121             ->setFilterDate();
122         $grid->getColumn('created')->cellPrototype->class[] = 'center';
123     
124     $grid->addColumnText('ns', 'NS')
125         ->setSortable()
126         ->setColumn('ns')
127         ->setFilterText()
128         ->setSuggestion(function ($item){ return $item->ns; })
129         ->setColumn('ns')
130         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.ns LIKE ?", "%$value%");});
131     $grid->getColumn('ns')->headerPrototype->style['width'] = '4%';
132     
133     $grid->addColumnText('uname', 'Název')
134         ->setSortable()
135         ->setColumn('uname')
136         ->setFilterText()
137         ->setSuggestion(function ($item){ return $item->uname; })
138         ->setColumn('uname')
139         ->setWhere(function ($value, $connection){ $connection->where("user:unit_user.unit.name LIKE ?", "%$value%");});
140     $grid->getColumn('uname')->headerPrototype->style['width'] = '13%';
141     
142     $grid->addColumnText('tname', 'Typ')
143         ->setSortable()
144         ->setColumn('tname');
145     $grid->getColumn('tname')->headerPrototype->style['width'] = '5%';
146     $grid->addFilterSelect('tname', 'Typ', array('' => '') + $this->ordertypeRepository->getFilterData())
147         ->setWhere(function ($value, $connection){ $connection->where("ordertype.name LIKE ?", "%$value%");});
148     
149 //  $grid->addColumnText('rname', 'Realizace')
150 //      ->setSortable()
151 //      ->setColumn('rname');
152 //  $grid->getColumn('rname')->headerPrototype->style['width'] = '15%';
153     $grid->addFilterSelect('rname', 'Realizace', array('' => '') + $this->realizationRepository->getFilterData())
154         ->setWhere(function ($value, $connection){ $connection->where("realization.name LIKE ?", "%$value%");});
155         
156     $column = new \Grido\Components\Columns\Boolean($grid, 'mapproved', 'Schváleno');
157         $column->setSortable()->headerPrototype->style['width'] ='4%';
158         $grid->getColumn('mapproved')->headerPrototype->class[] = 'center'; 
159     $grid->addFilterCheck('approved', 'Jen schválené objednávky')
160         ->setWhere(function($value, $connection) {$value ? $connection->where(':managerresult.approved ?' , '1'): NULL;});
161     
162         
163     $columnr = new \Grido\Components\Columns\Boolean($grid, 'realizedflag', 'Realizováno');
164         $columnr->setSortable()->headerPrototype->style['width'] ='4%';
165         $grid->getColumn('realizedflag')->headerPrototype->class[] = 'center';  
166     $grid->addFilterCheck('norealized', 'Jen nerealizované objednávky')
167         ->setWhere(function($value, $connection) {$value ? $connection->where('order.realizedflag' , NULL): NULL;});
168     
169     $grid->addActionHref('view', 'Zobrazit')
170         ->setIcon('fa fa-eye fa-fw');
171     
172     
173     $grid->setExport();
174     }
175     
176     
177     
178     public function renderView($id){
179     
180     $item = $this->orderRepository->findById($id);
181     $user = $this->getUser();
182     
183     if ($item === false) {
184         $this->flashMessage('Objednávka č. '. $id .' nebyla dohledána.', 'error');
185         $this->redirect('Homepage:default');
186     }   
187 
188     $this->template->orderdetail = $this->orderRepository->findOrderForTrader($id);
189     $this->template->timelineevents = $this->timelineRepository->getTimelineRecords($id); 
190     
191     $this->template->documentRepository = $this->documentRepository;
192     $this->template->documents = $this->orderRepository->getAssignedDocuments($item->id);
193     
194     $this->template->itemsorder = $this->itemorderRepository->getItemsOrder($id);
195     
196     //vracene posudky
197     $this->template->chiefresults = $this->chiefRepository->getChiefResults($item->id);
198     $this->template->traderresults = $this->traderRepository->getTraderResults($item->id);
199     $this->template->managerresults = $this->managerRepository->getManagerResults($item->id);
200 
201     $iditems = $this->itemorderRepository->getIdItemsOrder($item->id);
202     
203     $this->template->maxsizedoc = $this->parameters->formatBytes($this->parameters->getMaxSizeUpload());
204     
205     //konzultace
206     $consultations = $this->consultationRepository->getConsultationHeader($user->getId(), $item->id);
207     if ($consultations->fetch() != NULL) {
208         $this->template->consultations = $consultations;
209     }
210     else {
211         $this->template->consultations = NULL;
212     }
213     
214     //konfiguracni data timeline
215     $this->template->icons = $this->cfgRepository->getTimelineIcons();
216     $this->template->colors = $this->cfgRepository->getTimelineColors();
217     $this->template->inverted = $this->cfgRepository->getTimelineInverted();
218     
219     //ulozeni nazvu presenteru pro navrat z Itemorder/View
220     $mySection = $this->getSession()->getSection('history');
221     $mySection->beforePresenter = 'Director';
222     $mySection->setExpiration(0);
223 
224     }
225     
226     /**
227      * 
228      * @return \Nette\Application\UI\Form
229      * komponenta pro pridani dokumentu k objednavce
230      */
231     public function createComponentAddDocument() {
232     
233     try {
234         $iduser = $this->getUser()->getId();
235         $idorder = $this->getParameter('id');
236         
237         $form = $this->documentFactory->createAddDocument($idorder,$iduser);
238         $this->flashMessage('Soubor byl uložen.', 'success');
239         
240         return $form;
241         
242     } catch (\PDOException $e) {
243         $this->flashMessage("Soubor se nepodařilo uložit!", "error");
244     }
245 
246     }
247 
248     /**
249      * 
250      * @return \Nette\Application\UI\Form
251      * komponenta pro vykresleni formulare k pojmenovani ulozeneho dokumentu 
252      */
253     public function createComponentUpdateNameDocument(){
254     
255     try {
256         $form = $this->documentFactory->createUpdateNameDocument();
257         $this->flashMessage('Dokument byl úspěšně pojmenován.', 'success');
258         
259         return $form; 
260     
261     } catch (\PDOException $e) {
262         $this->flashMessage('Chyba při uložení do DB.', 'error');
263     }
264     }
265     
266     /**
267      * komponenta pro vykresleni formuláře k potvrzení vymazání uloženého dokumentu
268      * @return type
269      */
270      public function createComponentDeleteDocument() {
271      try {
272          $form = $this->documentFactory->createDeleteDocument();
273          $this->flashMessage('Dokument byl odstraněn.', 'success');
274          
275          return $form;
276          
277      } catch (Exception $e) {
278         $this->flashMessage('Chyba. Dokument se nepodařilo odstranit.', 'error');
279      }
280      }
281     
282     /**
283      * 
284      * @return \Nette\Application\UI\Form
285      * komponenta pro vykresleni formulare k zalozeni nove konzultace
286      */
287     public function createComponentAddConsultation() {
288     
289     $form = new UI\Form();
290     $form->setRenderer(new BootstrapRenderer());
291     
292     $user = $this->getUser();
293     $roles = array('director','manager','trader');
294     
295     $form->getElementPrototype()->class = 'form-horizontal';
296     
297     //oblasti objednavky
298     $area_ids = $this->areaRepository->getAreasFromOrder($this->getParameter('id'));
299     $form->addSelect('to_id', 'Komu:', $this->userRepository->findUserByRole($roles, $user->getId()) + $this->userRepository->getUserByAreaOrderLastname($area_ids, $user->getId()))    
300         ->setPrompt('Vyberte adresáta ...')
301         ->setRequired()
302         ->setAttribute('class', 'form-control');
303     
304     $form->addTextArea('post', 'Zpráva:', NULL, 10)
305         ->setAttribute('class', 'form-control')
306         ->setAttribute('type', 'modal')
307         ->setRequired('Vložte odpověď');
308     
309     $form->addSubmit('send', 'Odeslat')
310         ->setAttribute('class', 'btn btn-primary');
311     
312     $form->onSuccess[] = array($this, 'addConsultation');
313     
314     return $form;
315     }
316     
317     public function addConsultation($form, $values) {
318     try {
319         $user = $this->getUser();
320         $order_id = $this->getParameter('id');
321         
322         if(mb_strlen(trim($values->post)) > 0) {
323         
324         //ulozeni konzultace
325         $newconsultation = $this->consultationRepository->insertData(array(
326                     'created' => date('Y-m-d H:i:s'),
327                     'order_id' => $order_id,
328                     'from' => $user->getId(),
329                     'to' => $values->to_id,
330                     'lastmod' => NULL,
331                     'lastpostman' => $user->getId(),
332                     'visit' => 1
333                     ));
334         
335         //ulozeni postu
336         $this->postRepository->insertData(array(
337             'consultation_id' => $newconsultation->id,
338             'user_id' => $user->getId(),
339             'created' => date('Y-m-d H:i:s'),
340             'message' => $values->post
341         ));
342         
343         //zaslani zpravy
344         $uri = $this->getHttpRequest()->getUrl();
345         $from = $this->parameters->getFrom();
346         $support = $this->parameters->getSupport();
347         //prijemce
348         $to = $this->userRepository->getUserEmail($values->to_id);
349         $roles = $this->roleRepository->findRoleById($values->to_id);
350         //je adresat v roli consultant?
351         $is_consultant = FALSE;
352         foreach ($roles as $role) {
353             if($role == 'consultant') {
354             $is_consultant = TRUE;
355             }
356         }
357         $subject = 'Konzultace k objednávce';
358         $params = array(
359             'order_id' => $order_id,
360             'contact' => $support,
361             'url' => $uri->hostUrl.'/consultant&execution=view&id='.$order_id,
362             'consultation_id' => $newconsultation->id,
363             'path' => ($is_consultant)? 'Konzultant' : 'Konzultace'
364             //'logo' => $uri->hostUrl.'/img/logo32x32.gif'
365         );
366         $template = __DIR__ . '/../templates/Mailer/emailToConsultantFirst.latte';
367         $image = __DIR__ . '/../../www/img/logo32x32.gif';
368         $mailer = $this->mailerCfg->getMailConfig();
369         
370         MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
371 
372         
373         $this->flashMessage('Požadavek na konzultaci byl uložen.', 'success');
374         $this->redirect('this');
375         
376         }
377         else {
378         $this->flashMessage('Nelze uložit prázdnou konzultaci.', 'error');
379         }
380             
381     } 
382     catch (\PDOException $ex) {
383         $this->flashMessage('Chyba při uložení konzultace.', 'error');
384     }
385     }
386 }
387 
IS objednávky API documentation generated by ApiGen