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); }
/** * * 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)); } }
/** * this method returns a Propel ModelCriteria * * @return \Propel\Runtime\ActiveQuery\ModelCriteria */ public function buildModelCriteria() { return PredictQuery::getOrders(); }