Пример #1
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']));
 }
Пример #2
0
 public static function handleFinal(OrderStageLeafEvent $event)
 {
     $event->setStatus(true);
 }