/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = AccesosAutmanual::find();
     // add conditions that should always apply here
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['id' => 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;
     }
     // grid filtering conditions
     $query->andFilterWhere(['id' => $this->id, 'hora_desde' => $this->hora_desde, 'hora_hasta' => $this->hora_hasta, 'created_by' => $this->created_by, 'created_at' => $this->created_at, 'updated_by' => $this->updated_by, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'estado', $this->estado]);
     return $dataProvider;
 }
示例#2
0
 public function actionIngreso($diferido = false)
 {
     // chequea que se haya elegido un porton, sino es asi se redirecciona a la eleccion de porton
     if (!\Yii::$app->session->get('porton')) {
         // se setea returnUrl para que funcione el goBack en portones/elegir (parecido a lo que hace login())
         //Yii::$app->user->setReturnUrl(Yii::$app->urlManager->createUrl(['accesos/ingreso']));
         return $this->redirect(['portones/elegir', 'backUrl' => 'accesos/ingreso']);
     }
     // inicializa modelo
     $model = new Accesos();
     \Yii::$app->session->set('req_seguro', 0);
     // si viene por POST, es decir, si se intenta grabar
     if (isset($_POST['Accesos'])) {
         $model->attributes = $_POST['Accesos'];
         // setea la variable req_seguro de la sesion de acuerdo al valor del concepto que viene en el POST
         \Yii::$app->session->set('req_seguro', $model->accesosConcepto->req_seguro);
         // recupera de la sesion los 3 grupos
         $sessPersonas = \Yii::$app->session->get('ingpersonas');
         $sessVehiculo = \Yii::$app->session->get('ingvehiculos');
         $sessAutorizantes = \Yii::$app->session->get('autorizantes');
         // se verifica que estén los 3 grupos cargados
         $rechaza = false;
         if (!$sessPersonas) {
             \Yii::$app->session->addFlash('danger', 'Debe especificar al menos una persona');
             $rechaza = true;
         }
         if (!$sessVehiculo) {
             \Yii::$app->session->addFlash('danger', 'Debe especificar un vehiculo');
             $rechaza = true;
         }
         if (!$sessAutorizantes) {
             \Yii::$app->session->addFlash('danger', 'Debe especificar al menos un autorizante');
             $rechaza = true;
         }
         if ($sessPersonas) {
             // verifica los vencimientos de los seguros
             if ($model->accesosConcepto->req_seguro) {
                 foreach ($sessPersonas as $segIDpersona) {
                     $ps = Personas::findOne($segIDpersona);
                     if (empty($ps->vto_seguro)) {
                         \Yii::$app->session->addFlash('danger', 'Personas sin seguro');
                         $rechaza = true;
                         break;
                     }
                     if ($this->fecVencida($ps->vto_seguro)) {
                         \Yii::$app->session->addFlash('danger', 'Personas con seguro vencido');
                         $rechaza = true;
                         break;
                     }
                 }
             }
         }
         if ($diferido) {
             if (!AccesosAutmanual::periodoManualActivo($model->ing_hora)) {
                 \Yii::$app->session->addFlash('danger', 'Fecha/hora no está dentro de un periodo habilitado');
                 $rechaza = true;
             }
         }
         if ($rechaza) {
             // actualiza los 3 grupos en variables que se van a pasar al render
             // si se modifica, modificar tambien antes del render del final de la funcion
             $listas = $this->refreshListas();
             return $this->render('ingreso', ['model' => $model, 'tmpListas' => $listas, 'diferido' => $diferido]);
         }
         // Para que coincidan las fechas y horas en todos los registros se utilizan variables auxiliares antes de grabar
         if ($diferido) {
             $fecAux = $model->ing_hora;
             $horAux = $model->ing_hora;
         } else {
             $fecAux = date("Y-m-d");
             $horAux = new Expression('CURRENT_TIMESTAMP');
         }
         // Comienza Transaccion
         $transaction = Yii::$app->db->beginTransaction();
         try {
             foreach ($sessPersonas as $model->id_persona) {
                 foreach ($sessVehiculo as $model->ing_id_vehiculo) {
                     // Aunque deberia haber un solo vehiculo
                     // Para que save() no funcione como update sino como insert,
                     // se debe resetear el id y setear isNewRecord como true
                     $model->id = null;
                     $model->ing_fecha = $fecAux;
                     $model->ing_hora = $horAux;
                     $model->ing_id_porton = \Yii::$app->session->get('porton');
                     $model->ing_id_user = \Yii::$app->user->identity->id;
                     $model->isNewRecord = true;
                     if ($model->save()) {
                         foreach ($sessAutorizantes as $id_autorizante) {
                             $accaut = new AccesosAutorizantes();
                             $accaut->id_acceso = $model->id;
                             $aut = Autorizantes::findOne($id_autorizante);
                             $accaut->id_persona = $aut->id_persona;
                             $accaut->id_uf = $aut->id_uf;
                             $accaut->save();
                         }
                         // foreach autorizantes
                     }
                     // if model->save()
                 }
                 //foreach vehiculos
             }
             //foreach personas
             // Todo bien
             $transaction->commit();
             \Yii::$app->session->addFlash('success', 'Ingreso grabado correctamente');
             // limpia todo
             \Yii::$app->session->remove('ingpersonas');
             \Yii::$app->session->remove('ingvehiculos');
             \Yii::$app->session->remove('autorizantes');
             return $this->redirect(['ingreso']);
         } catch (\Exception $e) {
             $transaction->rollBack();
             Yii::$app->session->addFlash('danger', 'Hubo un error en la grabación');
             throw $e;
         }
         // try..catch
     }
     // if POST
     // actualiza los 3 grupos en un array que se va a pasar al render
     // si se modifica, modificar tambien dentro del if (rechaza)
     $listas = $this->refreshListas();
     return $this->render('ingreso', ['model' => $model, 'tmpListas' => $listas, 'diferido' => $diferido]);
 }
示例#3
0
<div class="accesos-autmanual-form">

    <?php 
$form = ActiveForm::begin();
?>

    <?php 
echo $form->field($model, 'hora_desde')->widget(DateControl::classname(), ['type' => DateControl::FORMAT_DATETIME, 'displayFormat' => 'php:d/m/Y H:i']);
?>

    <?php 
echo $form->field($model, 'hora_hasta')->widget(DateControl::classname(), ['type' => DateControl::FORMAT_DATETIME, 'displayFormat' => 'php:d/m/Y H:i']);
?>

    <?php 
echo $form->field($model, 'estado')->dropDownList(AccesosAutmanual::getEstados());
?>


    <div class="form-group">
        <?php 
echo Html::submitButton('Aceptar', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']);
?>
    </div>

    <?php 
ActiveForm::end();
?>

</div>
 /**
  * Finds the AccesosAutmanual model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return AccesosAutmanual the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = AccesosAutmanual::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
示例#5
0
<?php

use yii\helpers\Html;
use yii\widgets\DetailView;
use frontend\models\AccesosAutmanual;
/* @var $this yii\web\View */
/* @var $model frontend\models\AccesosAutmanual */
$this->title = 'Detalle de autorización';
$this->params['breadcrumbs'][] = ['label' => 'Autorización de accesos manuales', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="accesos-autmanual-view">

    <h3><?php 
echo Html::encode($this->title);
?>
</h3>

    <p>

        <?php 
echo Html::a($model->estado == AccesosAutmanual::ESTADO_ABIERTO ? 'Cerrar periodo' : 'Abrir periodo', ['update', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => 'Está seguro de cambiar el estado de la autorización?', 'method' => 'post']]);
?>
    </p>

    <?php 
echo DetailView::widget(['model' => $model, 'attributes' => ['id', 'hora_desde:datetime', 'hora_hasta:datetime', ['attribute' => 'Estado', 'value' => AccesosAutmanual::getEstados($model->estado)], 'userCreatedBy.username', 'created_at:datetime', 'userUpdatedBy.username', 'updated_at:datetime']]);
?>

</div>
示例#6
0
.kv-grid-loading {
    opacity: 0.5;
    background: #ffffff url("../images/loading.gif") top center no-repeat !important;
}
');
?>
<div class="accesos-autmanual-index">

    <h3><?php 
echo Html::encode($this->title);
?>
</h3>

    <?php 
$columns = ['id', ['attribute' => 'hora_desde', 'format' => 'datetime'], ['attribute' => 'hora_hasta', 'format' => 'datetime'], ['attribute' => 'estado', 'value' => function ($model) {
    return AccesosAutmanual::getEstados($model->estado);
}], ['class' => 'kartik\\grid\\ActionColumn', 'header' => Html::a('<span class="glyphicon glyphicon-plus-sign"></span>', ['create'], ['class' => 'btn-sm btn-primary', 'title' => Yii::t('app', 'Alta de autorización')]), 'template' => '{view} {comentario}', 'buttons' => ['comentario' => function ($url, $model) {
    $c = Comentarios::getComentariosByModelId($model->className(), $model->id);
    $text = '<span class="glyphicon glyphicon-copyright-mark"';
    if (!empty($c)) {
        $text .= ' style="color:#FF8000"></span>';
        $titl = 'Ingresar nuevo/Ver comentarios';
    } else {
        $text .= '></span>';
        $titl = 'Ingresar nuevo comentario';
    }
    return Html::a($text, $url, ['title' => $titl, 'onclick' => '$.ajax({
							type     :"POST",
							cache    : false,
							url  : $(this).attr("href"),
							success  : function(response) {