/** * @return \yii\db\ActiveQuery */ public function getDialog() { return $this->hasOne(InnerMessageDialog::className(), ['id' => 'dialog_id']); }
/** * Send message * * @return bool * @throws BadRequestHttpException */ public function actionSendMessage() { $id = Yii::$app->request->post('id'); $type = Yii::$app->request->post('type'); $message = Yii::$app->request->post('message'); Yii::$app->response->format = Response::FORMAT_JSON; return InnerMessageDialog::isMessageSend($this->user->id, $id, $type, $message); }
/** * Check if user dialog is exist * * @param integer $senderId * @param integer $receiverId * @param integer $status * @return bool|InnerMessageDialog */ public static function isUserDialogExist($senderId, $receiverId, $status = self::STATUS_ACTIVE) { $dialog = InnerMessageDialog::find()->innerJoin(InnerMessageUser::tableName(), InnerMessageUser::tableName() . '.dialog_id = ' . InnerMessageDialog::tableName() . '.id')->where([InnerMessageDialog::tableName() . '.user_id' => $senderId, InnerMessageUser::tableName() . '.user_id' => $receiverId])->orWhere([InnerMessageDialog::tableName() . '.user_id' => $receiverId, InnerMessageUser::tableName() . '.user_id' => $senderId])->andWhere([InnerMessageDialog::tableName() . '.status' => $status])->groupBy(InnerMessageDialog::tableName() . '.id')->one(); return !empty($dialog) ? $dialog : false; }
/** * Set messages status viewed * * @param $userId * @param $dialogId * @param $messageId */ public static function setReadMessage($userId, $dialogId, $messageId) { if (InnerMessageDialog::idDialogAllowed($dialogId, $userId)) { InnerMessage::updateAll(['view' => self::viewed], ['dialog_id' => $dialogId, 'id' => $messageId]); } }