Exemple #1
2
 /**
  * VISTA DETALLE MENSAJES
  * @param $id
  * @return string|\yii\web\Response
  */
 public function run($id)
 {
     $id_usuario = Yii::$app->user->identity->getId();
     $datos = new Mensajes();
     $notif = new Notificaciones();
     $model = new EnviarMensajeForm();
     $model->scenario = EnviarMensajeForm::ESCENARIO_PRIVADO;
     //si no tiene permisos es redireccionado a mensajes
     if (!$datos->verificaPermisoMensaje($id, $id_usuario)) {
         return $this->controller->redirect('/mensajes');
     }
     $dataProvider = $datos->mensajesPropietarioInteresado($id, $id_usuario);
     $articulo = $dataProvider->getModels()[0]->conversaciones[0]->articulos;
     $usuario = $dataProvider->getModels()[0]->conversaciones[0]->uinteresado->idusuario == $id_usuario ? $dataProvider->getModels()[0]->conversaciones[0]->upropietario : $dataProvider->getModels()[0]->conversaciones[0]->uinteresado;
     //actualizo fecha visto y notificaciones
     $datos->actualizarFechaVisto($id);
     $notif->actualizarMensajesVisto($id);
     //envia mensaje
     if ($model->load(Yii::$app->request->post())) {
         $model->cargarValoresPrivado($dataProvider->getModels(), $id_usuario);
         if ($model->enviarMensajePrivado()) {
             //                Toast::widget(['tipo'=>'success', 'mensaje'=>'Se ha enviado el mensaje']);
             //                Toast::widget(['tipo'=>'success', 'mensaje'=>'Se ha enviado el mensaje']);
             //                Yii::$app->session->setFlash('success', 'Se ha creado la categoria con exito');
         }
     }
     return $this->controller->render('mensaje-detalle', ['dataProvider' => $dataProvider, 'articulo' => $articulo, 'usuario' => $usuario, 'model' => $model]);
 }
Exemple #2
1
 /**
  * Actualiza todos los mensajes con la fecha en que se vio
  * @param $id_conversacion
  */
 public function actualizarMensajesVisto($id_conversacion)
 {
     $mensajes = Mensajes::findAll(['conversacion' => $id_conversacion]);
     $id_usuario = Yii::$app->user->id;
     $id_mensajes = '';
     foreach ($mensajes as $index => $item) {
         $id_mensajes .= $index == 0 ? $item->idmensaje : ',' . $item->idmensaje;
     }
     if (!empty($id_mensajes)) {
         Notificaciones::updateAll(['leida' => self::VISTO_SI, 'fechaleida' => date('Y-m-d H:i:s')], 'usuario = :usuario and referencia in (:referencia) and referencia_tipo = :referencia_tipo and fechaleida is null', [':usuario' => $id_usuario, ':referencia' => $id_mensajes, ':referencia_tipo' => Notificaciones::REF_MENSAJE]);
     }
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function buscarMensajesUsuario($params, $usuario = null)
 {
     $query = Mensajes::find()->with('articulos', 'usuarios');
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 25], 'sort' => ['defaultOrder' => ['fechacreado' => SORT_DESC]]]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['idmensaje' => $this->idmensaje, 'articulo' => $this->articulo, 'usuario' => $this->usuario, 'fechacreado' => $this->fechacreado, 'fechavisto' => $this->fechavisto]);
     $query->andFilterWhere(['like', 'texto', $this->texto]);
     if (!empty($usuario)) {
         $query->andWhere('usuario <> :id', [':id' => $usuario]);
         //$query->andWhere('usuarios.idusuario = :id',[':id'=>$usuario]);
     }
     $query->orderBy(['fechacreado' => SORT_ASC]);
     $query->groupBy('articulos.nombre');
     return $dataProvider;
 }
Exemple #4
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getMensajes()
 {
     return $this->hasMany(Mensajes::className(), ['conversacion' => 'idconversacion'])->viaTable('conversaciones', ['articulo' => 'idarticulo']);
     //            ->via('conversaciones');
 }
Exemple #5
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getMensajes()
 {
     return $this->hasMany(Mensajes::className(), ['usuario' => 'idusuario']);
 }
Exemple #6
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getMensajes()
 {
     return $this->hasMany(Mensajes::className(), ['conversacion' => 'idconversacion'])->orderBy(['fechacreado' => SORT_ASC]);
 }
 /**
  * Envia un mensaje al propietario o interesado
  * Desde el frontend en el detalle del anuncio
  * Se crea una notificacion para el propietario
  * @return bool
  */
 public function enviarMensajePublico()
 {
     $model = new Mensajes();
     $this->scenario = self::ESCENARIO_PUBLICO;
     if ($this->validate()) {
         $model->texto = !empty($this->texto) ? ucfirst($this->texto) : self::TEXTO;
         $model->articulo = $this->articulo;
         $model->usuario = $this->usuario;
         $model->tipo = $this->tipo;
         $model->conversacion = $this->conversacion;
         if ($model->save(false)) {
             //                echo '<pre>';print_r(['',$this->_conversacion->upropietario]);die();
             $notificacion = new CrearNotificacionForm();
             $notificacion->scenario = CrearNotificacionForm::ESCENARIO_CREAR_POR_MENSAJE;
             $notificacion->usuario = $this->_conversacion->propietario;
             $notificacion->tipo = NotificacionesTipo::TIPO_MENSAJE;
             $notificacion->referencia = $model->idmensaje;
             $notificacion->referencia_tipo = Notificaciones::REF_MENSAJE;
             $notificacion->mensaje = strlen($model->texto) > 85 ? substr($model->texto, 0, 85) . '...' : $model->texto;
             $notificacion->leida = Notificaciones::VISTO_NO;
             $notificacion->crear();
             return true;
         }
     }
     return false;
 }
Exemple #8
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]);
     }
 }