/** * @param null $hash * @return string * @throws NotFoundHttpException */ public function actionShow($hash = null) { $order = Order::findOne(['hash' => $hash]); if (empty($order)) { throw new NotFoundHttpException(); } Url::remember('', '__shopCabinetUpdateGuestReturnUrl'); return $this->render('show', ['order' => $order]); }
/** * @param string $hash * @return \yii\web\Response */ public function actionUpdateOrder($hash = '') { $userId = \Yii::$app->user->isGuest ? 0 : \Yii::$app->user->id; /** @var Order $order */ if (null === ($order = Order::findOne(['user_id' => $userId, 'hash' => $hash]))) { return $this->redirect(Url::previous('__shopCabinetUpdateGuestReturnUrl')); } $this->updateCustomer($order->customer); $this->updateContragent($order->contragent); return $this->redirect(Url::previous('__shopCabinetUpdateGuestReturnUrl')); }
/** * Move orders/order params from guest to logged/signed user * @param UserEvent $event */ public static function moveOrdersGuestToRegistered(UserEvent $event) { /** @var UserEvent $event */ $orders = \Yii::$app->session->get('orders', []); foreach ($orders as $k => $id) { /** @var Order $order */ $order = Order::findOne(['id' => $id]); if (null !== $order && 0 === intval($order->user_id)) { $order->user_id = $event->identity->id; $order->save(); } } }
/** * Обновление заказа * @param int $id идентификатор заказа * @return null|static * @throws BadRequestHttpException * @throws ForbiddenHttpException * @throws ServerErrorHttpException * @throws \yii\base\InvalidConfigException */ public function actionUpdate($id) { $model = Order::findOne($id); if (!$model) { throw new BadRequestHttpException('Bad request'); } $model->setScenario(ActiveRecord::SCENARIO_UPDATE); if (!Yii::$app->user->can('updateModel', array("model" => $model))) { throw new ForbiddenHttpException('Forbidden'); } $model->load(Yii::$app->getRequest()->getBodyParams(), ''); if (!Yii::$app->user->can('updateModel', array("model" => $model))) { throw new ForbiddenHttpException('Forbidden'); } if ($model->save() === false && !$model->hasErrors()) { throw new ServerErrorHttpException('Failed to update the object for unknown reason.'); } return $model; }
public static function renderEcommerceCounters(Event $event) { $order = Order::findOne(['id' => $event->data['orderId']]); $config = Config::getModelByKey('ecommerceCounters'); if (empty($event->data['orderId']) || empty($config) || empty($order)) { return; } $orderItems = OrderItem::findAll(['order_id' => $event->data['orderId']]); if (!empty($orderItems)) { $products = []; foreach ($orderItems as $item) { $product = Product::findById($item->product_id, null, null); if (empty($product)) { continue; } $category = Category::findById($product->main_category_id); $category = empty($category) ? 'Магазин' : str_replace('\'', '', $category->name); $products[] = ['id' => $product->id, 'name' => str_replace('\'', '', $product->name), 'price' => number_format($product->price, 2, '.', ''), 'category' => $category, 'qnt' => $item->quantity]; } $order = ['id' => $order->id, 'total' => number_format($order->total_price, 2, '.', '')]; echo Yii::$app->view->renderFile(Yii::getAlias('@app/modules/seo/views/manage/_ecommerceCounters.php'), ['order' => $order, 'products' => $products, 'config' => Json::decode($config->value)]); } }
/** * Add new message to OrderChat * @param $orderId * @return array<string,integer> * @throws BadRequestHttpException */ public function actionSendToOrderChat($orderId) { Yii::$app->response->format = Response::FORMAT_JSON; /** @var Order $order */ $order = Order::findOne($orderId); if (null === $order) { throw new BadRequestHttpException(); } $message = new OrderChat(); $message->loadDefaultValues(); $message->message = Yii::$app->request->post('message'); $message->order_id = $order->id; $message->user_id = Yii::$app->user->id; if ($message->save()) { if ($order->manager_id != Yii::$app->user->id) { Notification::addNotification($order->manager_id, Yii::t('app', 'Added a new comment to <a href="{orderUrl}" target="_blank">order #{orderId}</a>', ['orderUrl' => Url::toRoute(['/backend/order/view', 'id' => $order->id]), 'orderId' => $order->id]), 'Order', 'info'); } $message->refresh(); $user = $message->user; return ['status' => 1, 'message' => $message->message, 'user' => null !== $user ? $user->username : Yii::t('app', 'Unknown'), 'gravatar' => null !== $user ? $user->gravatar() : null, 'date' => $message->date]; } return ['status' => 0]; }
/** * Bootstrap method to be called during application bootstrap stage. * @param Application $app the application currently running */ public function bootstrap($app) { /** * Move orders/order params from guest to logged/signed user */ Event::on(\yii\web\User::className(), \yii\web\User::EVENT_AFTER_LOGIN, function ($event) { /** @var UserEvent $event */ $orders = \Yii::$app->session->get('orders', []); foreach ($orders as $k => $id) { /** @var app\modules\shop\models\Order $order */ $order = app\modules\shop\models\Order::findOne(['id' => $id]); if (!empty($order) && 0 === intval($order->user_id)) { $order->user_id = $event->identity->id; $order->save(); } } }); }