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