Beispiel #1
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getConversaciones()
 {
     return $this->hasMany(Conversaciones::className(), ['propietario' => 'usuario']);
 }
Beispiel #2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getConversaciones()
 {
     return $this->hasMany(Conversaciones::className(), ['articulo' => 'idarticulo']);
 }
Beispiel #3
0
 /**
  * @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]);
 }
Beispiel #4
0
 /**
  * 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;
 }
Beispiel #5
0
 /**
  * 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]);
     }
 }
Beispiel #6
0
 /**
  * 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;
 }