/** * 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(); }
/** * 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; }
/** * 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; }