예제 #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]);
 }
예제 #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]);
     }
 }
예제 #3
1
<?php

/**
 * Created by PhpStorm.
 * User: alejandro.sosa
 * Date: 13/03/2016
 * Time: 17:04
 */
use yii\helpers\Html;
use common\models\Notificaciones;
$notificaciones = new Notificaciones();
$mensajesTotal = $notificaciones->mensajesSinLeerTotal(Yii::$app->user->getId());
//contadores
$contadorMensaje = $mensajesTotal == 0 ? '' : Html::tag('span', $mensajesTotal, ['class' => 'label label-primary pull-right', 'data-toggle' => 'tooltip', 'data-placement' => 'left', 'data-original-title' => Yii::t('micuenta', '{contador} mensajes sin leer', ['contador' => $mensajesTotal]), 'title' => Yii::t('micuenta', '{contador} mensajes sin leer', ['contador' => $mensajesTotal])]);
//iconos
$icon_anuncios = Html::tag('i', null, ['class' => 'zmdi zmdi-widgets']);
$icon_descuentos = Html::tag('i', null, ['class' => 'zmdi zmdi-widgets']);
$icon_perfil = Html::tag('i', null, ['class' => 'zmdi zmdi-account-box']);
$icon_mensajes = Html::tag('i', null, ['class' => 'zmdi zmdi-email']);
$icon_configuracion = Html::tag('i', null, ['class' => 'zmdi zmdi-settings']);
$icon_notificacion = Html::tag('i', null, ['class' => 'zmdi zmdi-notifications']);
$icon_favoritos = Html::tag('i', null, ['class' => 'zmdi zmdi-favorite']);
$icon_busqueda = Html::tag('i', null, ['class' => 'zmdi zmdi-search']);
$icon_ayuda = Html::tag('i', null, ['class' => 'zmdi zmdi-help']);
//labels
$label_anuncios = Html::tag('span', Yii::t('micuenta', 'Mis Anuncios'), []);
$label_perfil = Html::tag('span', Yii::t('micuenta', 'Mi perfil'), []);
$label_descuentos = Html::tag('span', Yii::t('micuenta', 'Mis Descuentos'), []);
$label_mensajes = Html::tag('span', Yii::t('micuenta', 'Mensajes'), []);
$label_configuracion = Html::tag('span', Yii::t('micuenta', 'Configuración'), []);
$label_notificacion = Html::tag('span', Yii::t('micuenta', 'Notificaciones'), []);
예제 #4
1
 /**
  * Finds the Notificaciones model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Notificaciones the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Notificaciones::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
예제 #5
1
 /**
  * Actualiza el estado de notificacion a leida
  * @return bool
  */
 public function actualizar()
 {
     if ($this->validate()) {
         $model = Notificaciones::findOne($this->id);
         $model->leida = Notificaciones::VISTO_SI;
         if ($model->save()) {
             return true;
         }
     }
     return false;
 }
예제 #6
1
 /**
  * Actualiza enlace Mensajes del menu usuario
  * @param int $usuario
  * @param Notificaciones $mensaje
  */
 public static function actualizarMensajesSinLeerWeb($usuario, Notificaciones $mensaje)
 {
     $topic = Yii::$app->websocket->topicPrivado . $usuario;
     $html = ['tipo' => self::TIPO_MENSAJE, 'parametros' => ['enlace' => $mensaje->conversacionId(), 'cantidad' => 1, 'html' => Html::tag('span', $mensaje->nombreAnuncio(), ['class' => 'anuncio-nombre']) . Html::tag('span', $mensaje->remitente(), ['class' => 'interesado-nombre']) . Html::tag('span', $mensaje->texto(), ['class' => 'interesado-mensaje']) . Html::tag('span', $mensaje->tiempo(), ['class' => 'interesado-tiempo']), 'html2' => ['url' => 'mensaje/' . $mensaje->conversacionId(), 'linkOptions' => ['class' => 'notificacion-usuario']]]];
     self::enviar($topic, $html);
 }
예제 #7
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Notificaciones::find();
     // add conditions that should always apply here
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $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;
     }
     // grid filtering conditions
     $query->andFilterWhere(['idnotificacion' => $this->idnotificacion, 'usuario' => $this->usuario, 'tipo' => $this->tipo, 'leida' => $this->leida, 'fechacreado' => $this->fechacreado, 'fechaleida' => $this->fechaleida]);
     $query->andFilterWhere(['like', 'mensaje', $this->mensaje]);
     $query->groupBy('usuario');
     return $dataProvider;
 }
예제 #8
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getNotificaciones()
 {
     return $this->hasMany(Notificaciones::className(), ['usuario' => 'idusuario']);
 }