Ejemplo n.º 1
0
 public function export()
 {
     if (null !== ($response = $this->checkAuth([AdminResources::MODULE, AdminResources::ORDER], ['Predict'], AccessManager::VIEW))) {
         return $response;
     }
     $orders = PredictQuery::getOrders();
     $export = new PredictExport();
     $export_data = "";
     /**
      * Validate the form and checks which order(s) must be exported
      */
     try {
         $form = new ExportForm($this->getRequest());
         $vform = $this->validateForm($form, "post");
         $entries = array();
         /** @var \Thelia\Model\Order $order */
         foreach ($orders as $order) {
             if ($vform->get("order_" . $order->getId())->getData()) {
                 $entries[] = $entry = new ExportEntry($order, $vform->get("guaranty_" . $order->getId())->getData());
                 $export->addEntry($entry);
             }
         }
         /**
          * Be sure that the export is done before updating the order status
          */
         $export_data = $export->doExport();
         $status = null;
         switch ($vform->get("new_status")->getData()) {
             case "processing":
                 $status = OrderStatus::CODE_PROCESSING;
                 break;
             case "sent":
                 $status = OrderStatus::CODE_SENT;
                 break;
         }
         if ($status !== null) {
             /**
              *  If the current user doesn't have the right to edit orders, return an error
              */
             if (null !== ($response = $this->checkAuth([AdminResources::ORDER], [], AccessManager::UPDATE))) {
                 return $response;
             }
             /**
              * Get status ID
              */
             $status_id = OrderStatusQuery::create()->findOneByCode($status)->getId();
             /** @var ExportEntry $entry */
             foreach ($entries as $entry) {
                 $event = new OrderEvent($entry->getOrder());
                 $event->setStatus($status_id);
                 $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event);
             }
         }
     } catch (\Exception $e) {
         return $this->render("module-configure", ["module_code" => "Predict", "tab" => "export", "error_message" => $e->getMessage()]);
     }
     return $this->createResponse($export_data);
 }
Ejemplo n.º 2
0
 /**
  *
  * in this function you add all the fields you need for your Form.
  * Form this you have to call add method on $this->formBuilder attribute :
  *
  * $this->formBuilder->add("name", "text")
  *   ->add("email", "email", array(
  *           "attr" => array(
  *               "class" => "field"
  *           ),
  *           "label" => "email",
  *           "constraints" => array(
  *               new \Symfony\Component\Validator\Constraints\NotBlank()
  *           )
  *       )
  *   )
  *   ->add('age', 'integer');
  *
  * @return null
  */
 protected function buildForm()
 {
     $orders = PredictQuery::getOrders();
     $this->formBuilder->add("new_status", "text", array("label" => Translator::getInstance()->trans("Change exported orders status"), "label_attr" => array("for" => "new_status"), "required" => true, "constraints" => array(new Callback(["methods" => array(array($this, "checkStatus"))]))));
     /** @var Order $order */
     foreach ($orders as $order) {
         $this->formBuilder->add("order_" . $order->getId(), "checkbox", array('label' => $order->getRef(), 'label_attr' => ["for" => "order_" . $order->getId()], 'required' => false))->add("guaranty_" . $order->getId(), "checkbox", array('required' => false));
     }
 }
Ejemplo n.º 3
0
 /**
  * this method returns a Propel ModelCriteria
  *
  * @return \Propel\Runtime\ActiveQuery\ModelCriteria
  */
 public function buildModelCriteria()
 {
     return PredictQuery::getOrders();
 }