/** * 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]; }
/** * @param bool $insert * @param array $changedAttributes */ public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if (empty($changedAttributes)) { return; } if (!isset($this->task_options['create_notification']) || false == $this->task_options['create_notification']) { return; } if (self::STATUS_ACTIVE === $this->status) { Notification::addNotification($this->initiator, 'Задание "' . $this->description . '" добавлено в очередь.', 'Задание', 'info'); } else { if (self::STATUS_RUNNING === $this->status) { Notification::addNotification($this->initiator, 'Задание "' . $this->description . '" выполняется.', 'Задание', 'info'); } else { if (self::STATUS_COMPLETED === $this->status) { Notification::addNotification($this->initiator, 'Задание "' . $this->description . '" успешно выполнено.', 'Задание', 'success'); } else { if (self::STATUS_FAILED === $this->status) { Notification::addNotification($this->initiator, 'Задание "' . $this->description . '" завершилось с ошибкой.', 'Задание', 'danger'); } } } } }