/** * @return \yii\db\ActiveQuery */ public function getConversaciones() { return $this->hasMany(Conversaciones::className(), ['propietario' => 'usuario']); }
/** * @return \yii\db\ActiveQuery */ public function getConversaciones() { return $this->hasMany(Conversaciones::className(), ['articulo' => 'idarticulo']); }
/** * @return \yii\db\ActiveQuery */ public function getConversaciones() { $id = Yii::$app->user->getId(); return $this->hasMany(Conversaciones::className(), ['articulo' => 'idarticulo'])->where('propietario = :usuario or interesado = :usuario', [':usuario' => $id]); }
/** * Verifica si existe ya una conversación, si no existe la crea * @param $articulo * @param $usuario * @return array|Conversaciones|null|\yii\db\ActiveRecord */ public function existeConversacion($articulo, $propietario, $usuario) { $conversacion = Conversaciones::find()->where('articulo = :articulo and interesado = :interesado', [':articulo' => $articulo, ':interesado' => $usuario])->one(); if (empty($conversacion)) { $convers = new Conversaciones(); $convers->articulo = $articulo; $convers->propietario = $propietario; $convers->interesado = $usuario; if ($convers->save()) { $conversacion = $convers; } } return $conversacion; }
/** * Actualiza todos los mensajes con la fecha en que se vio * @param $id_conversacion */ public function actualizarFechaVisto($id_conversacion) { $conversacion = Conversaciones::findOne(['idconversacion' => $id_conversacion]); $id_usuario = Yii::$app->user->id; $tipo_usuario = $conversacion->articulos->usuario == $id_usuario ? self::INTERESADO : self::PROPIETARIO; if (!empty($id_conversacion)) { Mensajes::updateAll(['fechavisto' => date('Y-m-d H:i:s')], 'conversacion = :conversacion and tipo = :tipo and fechavisto is null', [':conversacion' => $id_conversacion, ':tipo' => $tipo_usuario]); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function listadoConversaciones($params, $usuario = null) { $query = Conversaciones::find()->with('mensajes'); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 25]]); $id = Yii::$app->user->getId(); $query->joinWith('mensajes', false); $query->where('propietario = :usuario or interesado = :usuario', [':usuario' => $id]); $query->groupBy('usuario, articulo, mensajes.tipo'); $query->orderBy(['mensajes.fechacreado' => SORT_DESC]); return $dataProvider; }