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]); }
/** * 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; }
/** * 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; }
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]); }
/** * @return \yii\db\ActiveQuery */ public function getPersonas() { return $this->hasMany(Personas::className(), ['id' => 'id_persona'])->viaTable('uf_titularidad_personas', ['uf_titularidad_id' => 'id']); }
$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,
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; }
/** * @return \yii\db\ActiveQuery */ public function getPersonas() { return $this->hasMany(Personas::className(), ['id_tipo_doc' => 'id']); }
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; }
<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",
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>
/** * @return \yii\db\ActiveQuery */ public function getPersonas() { return $this->hasMany(Personas::className(), ['empresas_id' => 'idempresas']); }
<?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>
/** * 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.'); } }
/** * @return \yii\db\ActiveQuery */ public function getInformante() { return $this->hasOne(Personas::className(), ['id' => 'id_informante']); }
/** * @return \yii\db\ActiveQuery */ public function getAutorizantes() { return $this->hasMany(Personas::className(), ['id' => 'id_autorizante'])->viaTable('accesos_autorizantes', ['id_acceso' => 'id']); }
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; }
/** * @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']]]; }
/** * @return \yii\db\ActiveQuery */ public function getPersona() { return $this->hasOne(Personas::className(), ['id' => 'id_persona']); }
?> <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;">';