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 PLus\Orders\Factory;
  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 Nette\Application\UI\Presenter;
 11 
 12 /**
 13  * Description of ConsultationFactory
 14  *
 15  * @author Petr
 16  */
 17 class ConsultationFactory extends \Nette\Object {
 18     
 19     /** @var Repositories\Lists\AreaRepository */
 20     public $areaRepository;
 21     
 22     /** @var Repositories\Entities\UserRepository */
 23     public $userRepository;
 24     
 25     /** @var Repositories\Messages\ConsultationRepository */
 26     public $consultationRepository;
 27     
 28     /** @var Repositories\Messages\PostRepository */
 29     public $postRepository;
 30     
 31     /** @var Repositories\Security\RoleRepository */
 32     public $roleRepository;
 33     
 34     /** @var Repositories\Config\Parameters */
 35     public $parameters;  
 36     
 37     /** @var Repositories\Config\Mailer */
 38     public $mailerCfg;
 39     
 40     
 41     function __construct(Repositories\Lists\AreaRepository $areaRepository, Repositories\Entities\UserRepository $userRepository, 
 42         Repositories\Messages\ConsultationRepository $consultationRepository, Repositories\Messages\PostRepository $postRepository, 
 43         Repositories\Security\RoleRepository $roleRepository, Repositories\Config\Parameters $parameters, Repositories\Config\Mailer $mailerCfg) {
 44     $this->areaRepository = $areaRepository;
 45     $this->userRepository = $userRepository;
 46     $this->consultationRepository = $consultationRepository;
 47     $this->postRepository = $postRepository;
 48     $this->roleRepository = $roleRepository;
 49     $this->parameters = $parameters;
 50     $this->mailerCfg = $mailerCfg;
 51     }
 52 
 53          
 54     
 55     
 56     
 57     
 58     /**
 59      * 
 60      * @return \Nette\Application\UI\Form
 61      * formular pro prirazeni konzultace k objednavce
 62      */
 63     public function createAddConsultation($idorder, $iduser, $hostUrl) {
 64     
 65     $form = new UI\Form();
 66     $form->setRenderer(new BootstrapRenderer());
 67     
 68     $roles = array('director','manager','trader');
 69     
 70     $form->getElementPrototype()->class = 'form-horizontal';
 71     
 72     //oblasti objednavky
 73     $area_ids = $this->areaRepository->getAreasFromOrder($idorder);
 74     $form->addSelect('to_id', 'Komu:', $this->userRepository->findUserByRole($roles, $iduser) + $this->userRepository->getUserByAreaOrderLastname($area_ids, $iduser))
 75         ->setPrompt('Vyberte adresáta ...')
 76         ->setRequired()
 77         ->setAttribute('class', 'form-control');
 78     
 79     $form->addTextArea('post', 'Zpráva:', NULL, 10)
 80         ->setAttribute('class', 'form-control')
 81         ->setAttribute('type', 'modal')
 82         ->setRequired('Vložte odpověď')
 83         //->addRule(UI\Form::PATTERN, 'Nelze ukládat prázdnou zprávu', '^[^\s]*$');
 84         ->addRule(callback($this,'lengthPostValidator'), 'Nelze ukládat prázdnou zprávu.');
 85     
 86     $form->addSubmit('send', 'Odeslat')
 87         ->setAttribute('class', 'btn btn-primary');
 88     
 89     //predani parametru funkce do $values
 90     $form->addHidden('idorder', $idorder);
 91     $form->addHidden('iduser', $iduser);
 92     $form->addHidden('hosturl', $hostUrl);
 93     
 94     $form->onSuccess[] = function (UI\Form $form, $values) {
 95         
 96         if(mb_strlen(trim($values->post)) > 0) {
 97         
 98         //ulozeni konzultace
 99         $newconsultation = $this->consultationRepository->insertData(array(
100                     'created' => date('Y-m-d H:i:s'),
101                     'order_id' => $values->idorder,
102                     'from' => $values->iduser,
103                     'to' => $values->to_id,
104                     'lastmod' => NULL,
105                     'lastpostman' => $values->iduser,
106                     'visit' => 1
107                     ));
108         
109         //ulozeni postu
110         $this->postRepository->insertData(array(
111             'consultation_id' => $newconsultation->id,
112             'user_id' => $values->iduser,
113             'created' => date('Y-m-d H:i:s'),
114             'message' => $values->post
115         ));
116         
117         //zaslani zpravy
118         
119         $from = $this->parameters->getFrom();
120         $support = $this->parameters->getSupport();
121         //prijemce
122         $to = $this->userRepository->getUserEmail($values->to_id);
123         $roles = $this->roleRepository->findRoleById($values->to_id);
124         //je adresat v roli consultant?
125         $is_consultant = FALSE;
126         foreach ($roles as $role) {
127             if($role == 'consultant') {
128             $is_consultant = TRUE;
129             }
130         }
131         $subject = 'Konzultace k objednávce';
132         $params = array(
133             'order_id' => $values->idorder,
134             'contact' => $support,
135             'url' => $values->hosturl.'/consultant&execution=view&id='.$values->idorder,
136             'consultation_id' => $newconsultation->id,
137             'path' => ($is_consultant)? 'Konzultant' : 'Konzultace'
138         );
139         $template = __DIR__ . '/../templates/Mailer/emailToConsultantFirst.latte';
140         $image = __DIR__ . '/../../www/img/logo32x32.gif';
141         $mailer = $this->mailerCfg->getMailConfig();
142         
143         \Objednavky\MailerPresenter::sendMail($from, $to, $subject, $params, $template, $image, $mailer);
144 
145         }
146     };
147     
148     return $form; 
149     }
150     
151     
152     /**
153      * 
154      * @param type $item
155      * @return type
156      * validator prazdneho postu
157      */    
158     function lengthPostValidator($item) {
159     return mb_strlen(trim($item->value)) > 0;
160     }
161     
162 }
IS objednávky API documentation generated by ApiGen