public function actionListaPersonas($id_vehiculo)
 {
     $personas = Accesos::getPersonasPorVehiculo($id_vehiculo, false);
     // Si la persona es nueva o nunca tuvo accesos devuelve una bandera para que no se muestre el modal
     if (count($personas) == 0) {
         return 'notFound';
     }
     $dp = [];
     foreach ($personas as $per) {
         foreach ($per as $k => $v) {
             //Yii::trace($personas);die;
             if ($k == 'id_persona') {
                 $dp[] = Personas::findOne($v);
             }
         }
     }
     $dataProvider = new ArrayDataProvider(['allModels' => $dp]);
     return $this->renderAjax('personaslist', ['dataProvider' => $dataProvider]);
 }
Example #2
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Personas::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $dataProvider->setSort(['attributes' => ['cuenta' => ['asc' => ['cuenta' => SORT_ASC], 'desc' => ['cuenta' => SORT_DESC], 'label' => 'Empresa']]]);
     $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');
         // Join con Empresa
         $query->joinWith(['empresa']);
         return $dataProvider;
     }
     $query->andFilterWhere(['idpersonas' => $this->idpersonas, 'empresas_id' => $this->empresas_id, 'fecha_reunion' => $this->fecha_reunion]);
     $query->andFilterWhere(['like', 'nombre', $this->nombre])->andFilterWhere(['like', 'cargo', $this->cargo])->andFilterWhere(['like', 'telefono', $this->telefono])->andFilterWhere(['like', 'email', $this->email])->andFilterWhere(['like', 'direccion', $this->direccion])->andFilterWhere(['like', 'asistente', $this->asistente]);
     // Filtro por empresa
     $query->joinWith(['empresas' => function ($q) {
         $q->where('empresas.cuenta LIKE "%' . $this->cuenta . '%"');
     }]);
     return $dataProvider;
 }
Example #3
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     /*		
      Yii::trace($params);
      Yii::trace($params['_tog8aa5d80b']);
      if ($params['_tog8aa5d80b'] == 'all') { $params['_tog8aa5d80b']='page';}
     */
     $query = Personas::find()->joinWith('tipoDoc');
     // se usa el nombre de la relación en Personas
     $pageSize = isset($_GET['per-page']) ? $_GET['per-page'] : \Yii::$app->params['personas.defaultPageSize'];
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $pageSize], 'sort' => ['defaultOrder' => ['id' => SORT_DESC], 'enableMultiSort' => true]]);
     // Agregado a mano, para que incluya el ordenamiento por tipo de documento
     $dataProvider->sort->attributes['tipoDoc'] = ['asc' => ['tiposdoc.desc_tipo_doc_abr' => SORT_ASC], 'desc' => ['tiposdoc.desc_tipo_doc_abr' => 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(['personas.id' => $this->id, 'id_tipo_doc' => $this->tipoDoc, 'estado' => $this->estado]);
     $query->andFilterWhere(['like', 'apellido', $this->apellido])->andFilterWhere(['like', 'nombre', $this->nombre])->andFilterWhere(['like', 'nombre2', $this->nombre2])->andFilterWhere(['like', 'nro_doc', $this->nro_doc]);
     return $dataProvider;
 }
Example #4
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]);
 }
Example #5
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPersonas()
 {
     return $this->hasMany(Personas::className(), ['id' => 'id_persona'])->viaTable('uf_titularidad_personas', ['uf_titularidad_id' => 'id']);
 }
Example #6
0
$porID = Yii::$app->urlManager->createUrl(['accesos/busca-por-id']);
$personasAddon = ['prepend' => ['content' => '<span class="glyphicon glyphicon-user" title="Buscar Personas"></span>'], 'append' => ['content' => Html::a('<span class="glyphicon glyphicon-barcode btn btn-primary"></span>', $porID, ['title' => Yii::t('app', 'Ingresa por ID'), 'tabindex' => -1, 'onclick' => '$.ajax({
							type     :"POST",
							cache    : false,
							url  : $(this).attr("href"),
							success  : function(response) {
										console.log(response);
										$("#divporid").html(response);
										$("#modalporid").modal("show");
										$("#idPersonaPorId").focus();
										}
						});
						return false;']), 'asButton' => true]];
echo $form->field($model, 'idPersonaDesde')->label('Persona a reemplazar')->widget(Select2::classname(), ['initValueText' => $personaDescDesde, 'options' => ['id' => 'selectorPersonas', 'placeholder' => 'Buscar por documento o nombre (Indique la persona a reemplazar)', 'title' => 'Buscar personas'], 'addon' => $personasAddon, 'pluginOptions' => ['allowClear' => true, 'minimumInputLength' => 3, 'ajax' => ['url' => \yii\helpers\Url::to(['personas/apellidoslist']), 'dataType' => 'json', 'data' => new JsExpression('function(params) { return {q:params.term}; }')], 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 'templateResult' => new JsExpression('function(idpersona) { return idpersona.text; }'), 'templateSelection' => new JsExpression('function (idpersona) { return idpersona.text; }')]]);
// -------------------Selector de personas c/botón de alta ----------------------------------------
$personaDescHasta = empty($model->idPersonaHasta) ? '' : Personas::formateaPersonaSelect2($model->idPersonaHasta, false);
$personasUrl = Yii::$app->urlManager->createUrl(['personas/create-ajax', 'selector' => 'selectorPersonasH']);
$porID = Yii::$app->urlManager->createUrl(['accesos/busca-por-id', 'selector' => 'selectorPersonasH']);
$personasAddon = ['prepend' => ['content' => '<span class="glyphicon glyphicon-user" title="Buscar Personas"></span>'], 'append' => ['content' => Html::a('<span class="glyphicon glyphicon-plus-sign btn btn-primary"></span>', $personasUrl, ['title' => Yii::t('app', 'Nueva Persona'), 'tabindex' => -1, 'onclick' => '$.ajax({
											type     :"POST",
											cache    : false,
											url  : $(this).attr("href"),
											success  : function(response) {
														$("#divpersonanueva").html(response);
														$("#modalpersonanueva").modal("show");
														$("#personas-apellido").focus();
														}
										});
										return false;']) . Html::a('<span class="glyphicon glyphicon-barcode btn btn-primary"></span>', $porID, ['title' => Yii::t('app', 'Ingresa por ID'), 'tabindex' => -1, 'onclick' => '$.ajax({
							type     :"POST",
							cache    : false,
Example #7
0
 public function actionApellidoslist($q = null, $id = null)
 {
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     $out = ['results' => ['id' => '', 'text' => '']];
     if (!is_null($q)) {
         if (is_numeric($q)) {
             $sp = 'CALL personas_busca_nrosdoc(:query)';
         } else {
             $q = str_replace(' ', '%', $q);
             $sp = 'CALL personas_busca_nombres(:query)';
         }
         $command = Yii::$app->db->createCommand($sp);
         $q = trim($q);
         $command->bindParam(":query", $q);
         $data = $command->queryAll();
         // el command devuelve un array de arrays con forma id=>n,text=>''
         // se recorre todo el array, se detecta el key id y con su valor se busca la persona
         // y se agrega a un nuevo array para despues ordenarlo por text y devolverlo
         $aux = ['id' => '', 'text' => ''];
         foreach ($data as $cadauno) {
             foreach ($cadauno as $key => $valor) {
                 if ($key == 'id') {
                     $t = Personas::formateaPersonaSelect2($valor, is_numeric($q));
                     $aux[] = ['id' => $valor, 'text' => $t];
                 }
             }
         }
         asort($aux);
         $out['results'] = array_values($aux);
     } elseif ($id > 0) {
         $out['results'] = ['id' => $id, 'text' => Personas::formateaPersonaSelect2($id, false)];
     }
     return $out;
 }
Example #8
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPersonas()
 {
     return $this->hasMany(Personas::className(), ['id_tipo_doc' => 'id']);
 }
Example #9
0
    public function refreshListas()
    {
        //$response=['ingpersonas'=>'','ingvehiculos'=>'','autorizantes'=>'','egrpersonas'=>'','egrvehiculos'=>''];
        $response = ['crntpersonas' => ''];
        foreach ($response as $grupo => $valor) {
            // Se recupera de la sesion
            $sess = \Yii::$app->session->get($grupo);
            if (!empty($sess)) {
                // Se crea el array vacio para el dataprovider
                $dp = [];
                // La session solo contiene los IDs, se recorre el array y se completa $dp con el objeto que corresponda
                foreach ($sess as $p) {
                    $dp[] = Personas::findOne($p);
                }
                $dataProvider = new ArrayDataProvider(['allModels' => $dp]);
            } else {
                // dataProvider vacio
                //return '';
                $response[$grupo] = '';
                continue;
            }
            // if !empty $sess
            $columns = [['header' => '<span class="glyphicon glyphicon-trash"></span>', 'attribute' => 'Acción', 'format' => 'raw', 'value' => function ($model, $index, $widget) {
                $url = Yii::$app->urlManager->createUrl(['carnets/drop-lista', 'grupo' => 'crntpersonas', 'id' => isset($model->id) ? $model->id : '']);
                return Html::a('<span class="glyphicon glyphicon-remove"></span>', $url, ['title' => 'Eliminar', 'onclick' => '$.ajax({
													type     : "POST",
													cache    : false,
													url      : $(this).attr("href"),
													success  : function(r) {
																	$("#divlistapersonas").html(r["crntpersonas"]);
																}
												});return false;']);
            }], 'id', 'apellido', 'nombre', 'nombre2', 'nro_doc'];
            $heading = '<i class="glyphicon glyphicon-user"></i>  Personas (Carnets)';
            $gvType = GridView::TYPE_INFO;
            $response[$grupo] = GridView::widget(['dataProvider' => $dataProvider, 'layout' => '{items}', 'columns' => $columns, 'panel' => ['type' => $gvType, 'heading' => $heading, 'footer' => false, 'before' => false, 'after' => false], 'panelHeadingTemplate' => '{heading}', 'resizableColumns' => false, 'bordered' => false, 'striped' => true, 'condensed' => true, 'responsive' => true, 'hover' => false, 'toolbar' => false, 'export' => false]);
        }
        //foreach $response
        return $response;
    }
Example #10
0
<div class="autorizantes-form">

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

    <?php 
echo $form->field($model, 'id_uf')->textInput();
?>

   
    
	<?php 
// -------------------Selector de personas c/botón de alta ----------------------------------------
$personaDesc = empty($model->id_persona) ? '' : Personas::formateaPersonaSelect2($model->id_persona, false);
//$personaDesc='';
$personasUrl = Yii::$app->urlManager->createUrl(['personas/create-ajax']);
$porID = Yii::$app->urlManager->createUrl(['accesos/busca-por-id']);
$personasAddon = ['prepend' => ['content' => '<span class="glyphicon glyphicon-user" title="Buscar Personas"></span>'], 'append' => ['content' => Html::a('<span class="glyphicon glyphicon-plus-sign btn btn-primary"></span>', $personasUrl, ['title' => Yii::t('app', 'Nueva Persona'), 'tabindex' => -1, 'onclick' => '$.ajax({
											type     :"POST",
											cache    : false,
											url  : $(this).attr("href"),
											success  : function(response) {
														$("#divpersonanueva").html(response);
														$("#modalpersonanueva").modal("show");
														$("#personas-apellido").focus();
														}
										});
										return false;']) . Html::a('<span class="glyphicon glyphicon-barcode btn btn-primary"></span>', $porID, ['title' => Yii::t('app', 'Ingresa por ID'), 'tabindex' => -1, 'onclick' => '$.ajax({
							type     :"POST",
Example #11
0
			cache    : false,
			url  : $(this).attr("href"),
			success  : function(response) {
						if (response=="notFound") {return false;}
						$("#divvehiculos").html(response);
						$("#modalvehiculos").modal("show");
						}
		});
		return false;']);
echo '</p>';
?>
	<div class='container'>
		<div class='row'>
			<div class="col-md-9">
				<?php 
echo DetailView::widget(['model' => $model, 'attributes' => ['id', 'apellido', 'nombre', 'nombre2', 'tipoDoc.desc_tipo_doc_abr', 'nro_doc', 'foto', 'userCreatedBy.username', 'created_at:datetime', 'userUpdatedBy.username', 'updated_at:datetime', ['label' => 'Estado', 'value' => Personas::getEstados($model->estado)], 'motivo_baja']]);
?>
			</div>	
			<div class="col-md-3">

				<?php 
$sinImg = Yii::$app->urlManager->createUrl('images/sinfoto.png');
if (!empty($model->foto)) {
    $imgFile = Yii::$app->urlManager->createUrl('images/personas/' . $model->foto);
    echo Html::img($imgFile, ['class' => 'img-thumbnail pull-right', 'onerror' => "this.src='{$sinImg}'"]);
} else {
    echo Html::img($sinImg, ['class' => 'img-thumbnail pull-right']);
}
?>

			</div>	
Example #12
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPersonas()
 {
     return $this->hasMany(Personas::className(), ['empresas_id' => 'idempresas']);
 }
Example #13
0
<?php

use yii\helpers\Html;
use yii\grid\GridView;
use frontend\models\Personas;
/* @var $this yii\web\View */
/* @var $searchModel frontend\models\VehiculosSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('app', 'Personas');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="personas-index">

<?php 
$columns = ['id', 'apellido', 'nombre', 'nombre2', ['attribute' => 'tipoDoc', 'value' => 'tipoDoc.desc_tipo_doc_abr'], 'nro_doc', ['attribute' => 'estado', 'value' => function ($data) {
    return Personas::getEstados($data->estado);
}]];
?>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => $columns, 'layout' => '{items}{pager}']);
?>


</div>
Example #14
0
 /**
  * Finds the Personas model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Personas the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Personas::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Example #15
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getInformante()
 {
     return $this->hasOne(Personas::className(), ['id' => 'id_informante']);
 }
Example #16
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getAutorizantes()
 {
     return $this->hasMany(Personas::className(), ['id' => 'id_autorizante'])->viaTable('accesos_autorizantes', ['id_acceso' => 'id']);
 }
Example #17
0
 public static function formateaPersonaSelect2($id, $es_por_nro)
 {
     $p = Personas::findOne($id);
     if ($es_por_nro) {
         $r = $p->nro_doc . ' ' . $p->apellido . ' ' . $p->nombre . ' ' . $p->nombre2 . ' (' . $id . ')';
     } else {
         $r = $p->apellido . ' ' . $p->nombre . ' ' . $p->nombre2 . ' D:' . $p->nro_doc . ' (' . $id . ')';
     }
     return $r;
 }
Example #18
0
 /**
  * @inheritdoc
  */
 public function rules()
 {
     return [[['idPersonaDesde', 'idPersonaHasta'], 'required'], [['idPersonaDesde'], 'exist', 'skipOnError' => true, 'targetClass' => Personas::className(), 'targetAttribute' => ['idPersonaDesde' => 'id']], [['idPersonaHasta'], 'exist', 'skipOnError' => true, 'targetClass' => Personas::className(), 'targetAttribute' => ['idPersonaHasta' => 'id']]];
 }
Example #19
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPersona()
 {
     return $this->hasOne(Personas::className(), ['id' => 'id_persona']);
 }
Example #20
0
?>

<table style="width: 210mm;border-collapse: separate;border-spacing: 5mm;">
<?php 
$sessPersonas = \Yii::$app->session->get('crntpersonas');
if ($sessPersonas) {
    $y = 0;
    foreach ($sessPersonas as $id) {
        $y = $y + 1;
        if ($y == 1) {
            echo '<tr>';
        }
        //echo '<td style="border:1px solid black;overflow-y:hidden;text-align:center;height: 90mm;width: 46mm;">';
        if ($lado == 'frente') {
            echo '<td style="border:1px solid black;text-align:center;height: 100mm !important;width: 33% !important;">';
            $p = Personas::findOne($id);
            if (!empty($p->foto)) {
                echo '<p>' . Html::img(Yii::$app->urlManager->createUrl('images/personas/' . $p->foto), ['style' => 'height:40mm;']) . '</p>';
            } else {
                echo '<p>' . Html::img(Yii::$app->urlManager->createUrl('images/sinfoto.png'), ['style' => 'height:40mm;']) . '</p>';
            }
            echo '<p>' . $p->apellido . ' (' . $p->id . ')</p>';
            echo '<p>' . $p->nombre . ' ' . $p->nombre2 . '</p>';
            echo '<p>D:' . $p->nro_doc . '</p>';
            echo '<div style="color:white;text-align:center;padding:5px;">';
            //echo '<barcode code="*'. $p->id .'*" type="C39" size="0.5" height="2.0"/>';
            //echo '<barcode code="*'. $p->id .'*" type="C39"/>';
            echo '<barcode code="' . $p->id . '" type="C128A" text="1"/>';
            echo '</div>';
        } else {
            echo '<td style="overflow-y:hidden;text-align:center;height: 100mm !important;width: 33% !important;">';