public function actionLeafEdit($id = null)
 {
     $model = null;
     if (null !== $id) {
         $model = OrderStageLeaf::findOne(['id' => $id]);
     }
     if (Yii::$app->request->isPost) {
         if (empty($model)) {
             $model = new OrderStageLeaf();
             $model->loadDefaultValues();
         }
         if ($model->load(Yii::$app->request->post())) {
             if ($model->validate() && $model->save()) {
                 return $this->redirect(Url::to(['', 'id' => $model->id]));
             } else {
                 Yii::$app->session->setFlash('error', 'Error saving data.');
             }
         } else {
             Yii::$app->session->setFlash('error', 'Error loading data.');
         }
     }
     if (empty($model)) {
         $model = new OrderStageLeaf();
         $model->loadDefaultValues();
     }
     $stages = array_reduce(OrderStage::find()->all(), function ($result, $item) {
         $result[$item->id] = $item->name;
         return $result;
     }, []);
     $events = array_reduce(Events::find()->all(), function ($result, $item) {
         /** @var Events $item */
         $result[$item->event_name] = $item->event_name;
         return $result;
     }, ['' => '']);
     return $this->render('leaf-edit', ['model' => $model, 'stages' => $stages, 'events' => $events]);
 }
Esempio n. 2
0
 /**
  * @param null $id
  * @return Response
  * @throws NotFoundHttpException
  * @throws \yii\base\Exception
  */
 public function actionStageLeaf($id = null)
 {
     if (empty($id)) {
         return $this->redirect(Url::to(['stage']));
     }
     /** @var OrderStageLeaf $orderStageLeaf */
     $orderStageLeaf = OrderStageLeaf::findOne(['id' => $id]);
     if (empty($orderStageLeaf)) {
         return $this->redirect(Url::to(['stage']));
     }
     $order = $this->loadOrder(false, false);
     if (empty($order)) {
         return $this->redirect(Url::to(['index']));
     }
     $orderStage = $order->stage;
     if ($orderStage->id !== $orderStageLeaf->stage_from_id && $orderStage->id !== $orderStageLeaf->stage_to_id) {
         return $this->redirect(Url::to(['stage']));
     }
     if (null !== Yii::$app->request->get('previous') && 1 !== intval($orderStageLeaf->stageFrom->immutable_by_user)) {
         $order->order_stage_id = $orderStageLeaf->stageFrom->id;
         $order->save();
     } else {
         /** @var Events $eventClassName */
         $eventClassName = Events::findByName($orderStageLeaf->event_name);
         if (!empty($eventClassName) && is_subclass_of($eventClassName->event_class_name, OrderStageLeafEvent::className())) {
             /** @var OrderStageLeafEvent $event */
             $event = new $eventClassName->event_class_name();
             EventTriggeringHelper::triggerSpecialEvent($event);
             if ($event->getStatus()) {
                 $order->order_stage_id = $order->order_stage_id == $orderStageLeaf->stage_to_id ? $orderStageLeaf->stage_from_id : $orderStageLeaf->stage_to_id;
                 $order->save();
                 Yii::$app->session->set('OrderStageReach', true);
             }
         }
     }
     return $this->redirect(Url::to(['stage']));
 }