Example #1
0
 /**
  * Verifica si el usuario tiene permiso para ver el mensaje,
  * solo podrá ver mensajes donde el sea propietario o interesado de un articulo
  * @param $id_conversacion
  * @param $id_usuario
  * @return bool
  */
 public function verificaPermisoMensaje($id_conversacion, $id_usuario)
 {
     return Conversaciones::find()->where('idconversacion = :conversacion', [':conversacion' => $id_conversacion])->andOnCondition('propietario = :propietario', [':propietario' => $id_usuario])->orOnCondition('interesado = :interesado', [':interesado' => $id_usuario])->exists();
 }
Example #2
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;
 }
Example #3
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;
 }