En este caso vamos a requerir tres campos mas que son los siguientes
- tipoFigura
- RFCFigura
- numLicencia
Primero seria crear el archivo de migración con los comandos que mostramos en la publicación anterior, el archivo seria el siguiente App/Database/Migrations/2023-12-06-191246_CamposCartaPorteChoferes.php con el siguiente código
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CamposCartaPorteChoferes extends Migration
{
public function up()
{
$campos = [
'tipoFigura' => [
'type' => 'varchar',
'constraint' => 8,
'null' => true,
],
'RFCFigura' => [
'type' => 'varchar',
'constraint' => 16,
'null' => true,
],
'numLicencia' => [
'type' => 'varchar',
'constraint' => 32,
'null' => true,
],
];
$this->forge->addColumn('choferes', $campos);
}
public function down()
{
//
}
}
Modificamos el archivo modelo App/Models/ChoferesModel.php con el siguiente código
<?php
namespace App\Models;
use CodeIgniter\Model;
class ChoferesModel extends Model {
protected $table = 'choferes';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = true;
protected $allowedFields = ['id'
, 'idEmpresa'
, 'nombre'
, 'Apellido'
, 'tipoFigura'
, 'RFCFigura'
, 'numLicencia'
, 'created_at'
, 'updated_at'
, 'deleted_at'];
protected $useTimestamps = true;
protected $createdField = 'created_at';
protected $deletedField = 'deleted_at';
protected $validationRules = [
];
protected $validationMessages = [];
protected $skipValidation = false;
public function mdlGetChoferes($idEmpresas) {
$result = $this->db->table('choferes a, empresas b')
->select('a.id
,a.idEmpresa
,a.nombre
,a.Apellido
,a.tipoFigura
,a.RFCFigura
,a.numLicencia
,a.created_at
,a.updated_at
,a.deleted_at
,b.nombre as nombreEmpresa')
->where('a.idEmpresa', 'b.id', FALSE)
->whereIn('a.idEmpresa', $idEmpresas);
return $result;
}
}
En el archivo ChoferesController.php no hay cambios
Modificamos el archivo App/Views/choferes.php dejando el siguiente código
<?= $this->include('julio101290\boilerplate\Views\load\select2') ?>
<?= $this->include('julio101290\boilerplate\Views\load\datatables') ?>
<?= $this->include('julio101290\boilerplate\Views\load\nestable') ?>
<!-- Extend from layout index -->
<?= $this->extend('julio101290\boilerplate\Views\layout\index') ?>
<!-- Section content -->
<?= $this->section('content') ?>
<?= $this->include('modulesChoferes/modalCaptureChoferes') ?>
<!-- SELECT2 EXAMPLE -->
<div class="card card-default">
<div class="card-header">
<div class="float-right">
<div class="btn-group">
<button class="btn btn-primary btnAddChoferes" data-toggle="modal" data-target="#modalAddChoferes"><i class="fa fa-plus"></i>
<?= lang('choferes.add') ?>
</button>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="table-responsive">
<table id="tableChoferes" class="table table-striped table-hover va-middle tableChoferes">
<thead>
<tr>
<th>#</th>
<th><?= lang('choferes.fields.idEmpresa') ?></th>
<th><?= lang('choferes.fields.nombre') ?></th>
<th><?= lang('choferes.fields.Apellido') ?></th>
<th><?= lang('choferes.fields.created_at') ?></th>
<th><?= lang('choferes.fields.updated_at') ?></th>
<th><?= lang('choferes.fields.deleted_at') ?></th>
<th><?= lang('choferes.fields.actions') ?> </th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- /.card -->
<?= $this->endSection() ?>
<?= $this->section('js') ?>
<script>
/**
* Cargamos la tabla
*/
var tableChoferes = $('#tableChoferes').DataTable({
processing: true,
serverSide: true,
responsive: true,
autoWidth: false,
order: [[1, 'asc']],
ajax: {
url: '<?= base_url('admin/choferes') ?>',
method: 'GET',
dataType: "json"
},
columnDefs: [{
orderable: false,
targets: [7],
searchable: false,
targets: [7]
}],
columns: [{
'data': 'id'
},
{
'data': 'nombreEmpresa'
},
{
'data': 'nombre'
},
{
'data': 'Apellido'
},
{
'data': 'created_at'
},
{
'data': 'updated_at'
},
{
'data': 'deleted_at'
},
{
"data": function (data) {
return `<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<button class="btn btn-warning btnEditChoferes" data-toggle="modal" idChoferes="${data.id}" data-target="#modalAddChoferes"> <i class=" fa fa-edit"></i></button>
<button class="btn btn-danger btn-delete" data-id="${data.id}"><i class="fas fa-trash"></i></button>
</div>
</td>`
}
}
]
});
$(document).on('click', '#btnSaveChoferes', function (e) {
var idChoferes = $("#idChoferes").val();
var idEmpresa = $("#idEmpresaChoferes").val();
var nombre = $("#nombre").val();
var Apellido = $("#Apellido").val();
var tipoFigura = $("#tipoFigura").val();
var RFCFigura = $("#RFCFigura").val();
var numLicencia = $("#numLicencia").val();
if (idEmpresa == 0 || idEmpresa == null) {
Toast.fire({
icon: 'error',
title: "Tiene que seleccionar la empresa"
});
return;
}
$("#btnSaveChoferes").attr("disabled", true);
var datos = new FormData();
datos.append("idChoferes", idChoferes);
datos.append("idEmpresa", idEmpresa);
datos.append("nombre", nombre);
datos.append("Apellido", Apellido);
datos.append("tipoFigura", tipoFigura);
datos.append("RFCFigura", RFCFigura);
datos.append("numLicencia", numLicencia);
$.ajax({
url: "<?= base_url('admin/choferes/save') ?>",
method: "POST",
data: datos,
cache: false,
contentType: false,
processData: false,
success: function (respuesta) {
if (respuesta.match(/Correctamente.*/)) {
Toast.fire({
icon: 'success',
title: "Guardado Correctamente"
});
tableChoferes.ajax.reload();
$("#btnSaveChoferes").removeAttr("disabled");
$('#modalAddChoferes').modal('hide');
} else {
Toast.fire({
icon: 'error',
title: respuesta
});
$("#btnSaveChoferes").removeAttr("disabled");
}
}
}
)
});
/**
* Carga datos actualizar
*/
/*=============================================
EDITAR Choferes
=============================================*/
$(".tableChoferes").on("click", ".btnEditChoferes", function () {
var idChoferes = $(this).attr("idChoferes");
var datos = new FormData();
datos.append("idChoferes", idChoferes);
$.ajax({
url: "<?= base_url('admin/choferes/getChoferes') ?>",
method: "POST",
data: datos,
cache: false,
contentType: false,
processData: false,
dataType: "json",
success: function (respuesta) {
$("#idChoferes").val(respuesta["id"]);
$("#idEmpresaChoferes").val(respuesta["idEmpresa"]);
$("#idEmpresaChoferes").trigger("change");
$("#nombre").val(respuesta["nombre"]);
$("#Apellido").val(respuesta["Apellido"]);
$("#tipoFigura").val(respuesta["tipoFigura"]);
$("#tipoFigura").trigger("change");
$("#RFCFigura").val(respuesta["RFCFigura"]);
$("#numLicencia").val(respuesta["numLicencia"]);
}
})
})
/*=============================================
ELIMINAR choferes
=============================================*/
$(".tableChoferes").on("click", ".btn-delete", function () {
var idChoferes = $(this).attr("data-id");
Swal.fire({
title: '<?= lang('boilerplate.global.sweet.title') ?>',
text: "<?= lang('boilerplate.global.sweet.text') ?>",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '<?= lang('boilerplate.global.sweet.confirm_delete') ?>'
})
.then((result) => {
if (result.value) {
$.ajax({
url: `<?= base_url('admin/choferes') ?>/` + idChoferes,
method: 'DELETE',
}).done((data, textStatus, jqXHR) => {
Toast.fire({
icon: 'success',
title: jqXHR.statusText,
});
tableChoferes.ajax.reload();
}).fail((error) => {
Toast.fire({
icon: 'error',
title: error.responseJSON.messages.error,
});
})
}
})
})
$(function () {
$("#modalAddChoferes").draggable();
});
</script>
<?= $this->endSection() ?>
Modificamos el archivo App/Views/modulesChoferes/modalCaptureChoferes.php dejando el siguiente código
<!-- Modal Choferes -->
<div class="modal fade" id="modalAddChoferes" tabindex="-1" role="dialog" aria-labelledby="modalAddChoferes" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><?= lang('choferes.createEdit') ?></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form id="form-choferes" class="form-horizontal">
<input type="hidden" id="idChoferes" name="idChoferes" value="0">
<div class="form-group row">
<label for="idEmpresa" class="col-sm-2 col-form-label">Empresa</label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<select class="form-control idEmpresaChoferes form-controlVehiculos" name="idEmpresaChoferes" id="idEmpresaChoferes" style="width:80%;">
<option value="0">Seleccione empresa</option>
<?php
foreach ($empresas as $key => $value) {
echo "<option value='$value[id]'>$value[id] - $value[nombre] </option> ";
}
?>
</select>
</div>
</div>
</div>
<div class="form-group row">
<label for="nombre" class="col-sm-2 col-form-label"><?= lang('choferes.fields.nombre') ?></label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<input type="text" name="nombre" id="nombre" class="form-control datosChoferes <?= session('error.nombre') ? 'is-invalid' : '' ?>" value="<?= old('nombre') ?>" placeholder="<?= lang('choferes.fields.nombre') ?>" autocomplete="off">
</div>
</div>
</div>
<div class="form-group row">
<label for="Apellido" class="col-sm-2 col-form-label"><?= lang('choferes.fields.Apellido') ?></label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<input type="text" name="Apellido" id="Apellido" class="form-control datosChoferes <?= session('error.Apellido') ? 'is-invalid' : '' ?>" value="<?= old('Apellido') ?>" placeholder="<?= lang('choferes.fields.Apellido') ?>" autocomplete="off">
</div>
</div>
</div>
<div class="form-group row">
<label for="tipoFigura" class="col-sm-2 col-form-label"><?= lang('choferes.fields.tipoFigura') ?></label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<select class="form-control tipoFigura form-controlVehiculos" name="tipoFigura" id="tipoFigura" style="width:80%;">
<option value="0">Seleccione tipo figura</option>
<option value="01">01 - Operador</option>
<option value="02">02 - Propietario</option>
<option value="03">03 - Arrendador</option>
<option value="04">04 - Notificado</option>
</select>
</div>
</div>
</div>
<div class="form-group row">
<label for="RFCFigura" class="col-sm-2 col-form-label"><?= lang('choferes.fields.RFCFigura') ?></label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<input type="text" name="RFCFigura" id="RFCFigura" class="form-control datosChoferes <?= session('error.Apellido') ? 'is-invalid' : '' ?> RFCFigura" value="<?= old('RFCFigura') ?>" placeholder="<?= lang('choferes.fields.RFCFigura') ?>" autocomplete="off">
</div>
</div>
</div>
<div class="form-group row">
<label for="numLicencia" class="col-sm-2 col-form-label"><?= lang('choferes.fields.numLicencia') ?></label>
<div class="col-sm-10">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-pencil-alt"></i></span>
</div>
<input type="text" name="numLicencia" id="numLicencia" class="form-control datosChoferes <?= session('error.numLicencia') ? 'is-invalid' : '' ?> numLicencia" value="<?= old('numLicencia') ?>" placeholder="<?= lang('choferes.fields.numLicencia') ?>" autocomplete="off">
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal"><?= lang('boilerplate.global.close') ?></button>
<button type="button" class="btn btn-primary btn-sm" id="btnSaveChoferes"><?= lang('boilerplate.global.save') ?></button>
</div>
</div>
</div>
</div>
<?= $this->section('js') ?>
<script>
$(document).on('click', '.btnAddChoferes', function (e) {
$("#idChoferes").val("0");
$(".datosChoferes").val("");
$("#idEmpresaChoferes").val("0");
$("#idEmpresaChoferes").trigger("change");
$("#btnSaveChoferes").removeAttr("disabled");
});
/*
* AL hacer click al editar
*/
$(document).on('click', '.btnEditChoferes', function (e) {
var idChoferes = $(this).attr("idChoferes");
//LIMPIAMOS CONTROLES
$(".form-control").val("");
$("#idChoferes").val(idChoferes);
$("#btnGuardarChoferes").removeAttr("disabled");
});
$("#idEmpresaChoferes").select2();
$("#tipoFigura").select2();
</script>
<?= $this->endSection() ?>
Y listo ya tenemos nuestros campos nuevos
1 pingback