239 lines
No EOL
14 KiB
Text
239 lines
No EOL
14 KiB
Text
|
|
@{
|
|
ViewData["Title"] = "Clientes";
|
|
|
|
List<TelefonoViewModel?> telefonos = ViewBag.Telefonos;
|
|
List<PaisViewModel?> paises = ViewBag.Paises;
|
|
List <TipoIdentificacionViewModel?> TiposIdentificacion = ViewBag.TiposIdentificacion;
|
|
List<string> Roles = ViewBag.Roles;
|
|
ClienteFilterModel Filtros = ViewBag.Filtros;
|
|
|
|
int NumeroDePagina = 1;
|
|
int RegistrosTotales = 0;
|
|
int RegistrosPorPagina = 5;
|
|
int PaginasTotales = 1;
|
|
bool HayPaginaSiguiente = false;
|
|
bool HayPaginaAnterior = false;
|
|
int? NumeroPaginaSiguiente = 0;
|
|
int? NumeroPaginaAnterior = 0;
|
|
if (Model.Count > 0)
|
|
{
|
|
NumeroDePagina = Model.DatosDePaginacion.NumeroDePagina;
|
|
RegistrosTotales = Model.DatosDePaginacion.RegistrosTotales;
|
|
RegistrosPorPagina = Model.DatosDePaginacion.RegistrosPorPagina;
|
|
PaginasTotales = Model.DatosDePaginacion.PaginasTotales;
|
|
HayPaginaSiguiente = Model.DatosDePaginacion.HayPaginaSiguiente;
|
|
HayPaginaAnterior = Model.DatosDePaginacion.HayPaginaAnterior;
|
|
NumeroPaginaSiguiente = Model.DatosDePaginacion.NumeroPaginaSiguiente;
|
|
NumeroPaginaAnterior = Model.DatosDePaginacion.NumeroPaginaAnterior;
|
|
}
|
|
List<int> ListaRegistrosPorPagina = new List<int> { 5, 10, 15, 25, 50, RegistrosTotales };
|
|
}
|
|
|
|
<!-- Contenido Inicia -->
|
|
<div class="content-wrapper">
|
|
<!-- Encabezado del contenido Inicia -->
|
|
@(
|
|
await Html.PartialAsync("_NavLinksPartial", new ViewDataDictionary(ViewData)
|
|
{
|
|
{ "EsPaginada", true },
|
|
{ "EsPaginaIndice", true },
|
|
{ "Titulo", ViewData["Title"] },
|
|
})
|
|
)
|
|
<!-- Encabezado del contenido Termina -->
|
|
|
|
<!-- Contenido Principal Inicia -->
|
|
<div class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="d-flex justify-content-end mb-3" >
|
|
@if (Roles.Exists(r => r == "ADMINISTRADOR" || r == "OPERATIVO"))
|
|
{
|
|
<!-- Boton Agregar Inicia -->
|
|
<a class="btn btn-sm btn-success lh-1 center-button-y" asp-controller="Cliente" asp-action="Agregar"
|
|
asp-route-numeroDePagina=@NumeroDePagina
|
|
asp-route-registrosPorPagina=@RegistrosPorPagina
|
|
asp-route-BusquedaCliente=@Filtros.BusquedaCliente>
|
|
<i class="fas fa-plus"></i>
|
|
Agregar
|
|
</a>
|
|
<!-- Boton Agregar Termina -->
|
|
}
|
|
</div>
|
|
<form id="form-filtros" class="row px-2 justify-content-between" asp-controller="Cliente" asp-action="Index">
|
|
<!-- Select de Paginacion Inicia -->
|
|
<div >
|
|
@(
|
|
await Html.PartialAsync("_RecordsPerPagePartial",new ViewDataDictionary(ViewData)
|
|
{
|
|
{ "RegistrosXPagina", RegistrosPorPagina},
|
|
{ "HayRegistros", (Model.Count > 0 ? true : false)},
|
|
{ "EsPaginaIndice", true },
|
|
{ "ListaRegistrosPorPagina", new List<int> { 5, 10, 15, 25, 50, RegistrosTotales } }
|
|
})
|
|
)
|
|
</div>
|
|
<!-- Select de Paginacion Termina -->
|
|
|
|
<div class="d-flex aling-items-center">
|
|
<input id="BusquedaCliente" name="BusquedaCliente" class="form-control w-100" type="text" placeholder="Buscar" value=@Filtros.BusquedaCliente>
|
|
<button class="btn">
|
|
<i class="fas fa-search"></i>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="table-container" class="dataTables_wrapper dt-bootstrap4">
|
|
<!-- Tabla Inicia -->
|
|
<table id="tablasMT" class="table table-bordered table-striped dataTable table-hover">
|
|
<thead class="thead-dark">
|
|
<tr>
|
|
<th>Número de cédula</th>
|
|
<th>Tipo de cédula</th>
|
|
<th>Nombre</th>
|
|
<th>Correo</th>
|
|
<th>Teléfono</th>
|
|
<th>Estado</th>
|
|
<th>Acciones</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<!-- Insercion de Tuplas Existentes Inicia -->
|
|
@foreach (var cliente in Model)
|
|
{
|
|
<tr>
|
|
<td>@cliente.NoIdentificacion</td>
|
|
<td>@(TiposIdentificacion.FirstOrDefault(x=> x.IdTipoIdentificacion == cliente.IdTipoIdentificacion).Descripcion)</td>
|
|
<td>@cliente.Nombre @cliente.Apellido1 @cliente.Apellido2</td>
|
|
<td>@cliente.Correo</td>
|
|
@if (telefonos.FirstOrDefault(x => x.NoIdentificacionCliente.ToUpper() == cliente.NoIdentificacion.ToUpper()) != null)
|
|
{
|
|
<td>
|
|
@(paises.FirstOrDefault(x => x.IdPais == cliente.IdPaisNacionalidad).CodigoDeArea)
|
|
@(telefonos.FirstOrDefault(x => x.NoIdentificacionCliente.ToUpper() == cliente.NoIdentificacion.ToUpper()).Numero)
|
|
</td>
|
|
} else
|
|
{
|
|
<td></td>
|
|
}
|
|
|
|
<td>@(cliente.Habilitado == true ? "Activo" : "Inactivo") </td>
|
|
<td class="text-center">
|
|
<a class="btn btn-sm btn-primary mr-2" asp-controller="Cliente" asp-action="Detalles"
|
|
asp-route-noIdentificacion="@cliente.NoIdentificacion"
|
|
asp-route-numeroDePagina=@NumeroDePagina
|
|
asp-route-registrosPorPagina=@RegistrosPorPagina
|
|
asp-route-BusquedaCliente=@Filtros.BusquedaCliente>
|
|
Ver más
|
|
</a>
|
|
|
|
@if (Roles.Exists(r => r == "ADMINISTRADOR" || r == "OPERATIVO"))
|
|
{
|
|
<a class="btn btn-sm btn-danger" onclick="Eliminar('@cliente.NoIdentificacion', '@NumeroDePagina', '@RegistrosPorPagina', '@Filtros.BusquedaCliente')">
|
|
<i class="fa fa-trash"></i>
|
|
</a>
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
<!-- Insercion de Tuplas Existentes Termina -->
|
|
</tbody>
|
|
</table>
|
|
<!-- Tabla Termina -->
|
|
<!-- Informacion de Paginacion Inicia -->
|
|
<div class="row mt-3 w-100 justify-content-between aling-items-center">
|
|
@if (RegistrosTotales != 0)
|
|
{
|
|
<p class="pl-2 my-auto">
|
|
Mostrando @(((NumeroDePagina - 1) * RegistrosPorPagina) + 1) a @(NumeroDePagina * RegistrosPorPagina > RegistrosTotales ?
|
|
RegistrosTotales : NumeroDePagina * RegistrosPorPagina) de @RegistrosTotales registros
|
|
</p>
|
|
|
|
<!-- Navegacion de Paginacion Inicia -->
|
|
<div class="row justify-content-end text-center h-75">
|
|
@if (HayPaginaAnterior)
|
|
{
|
|
<a class="pagination-btn btn" asp-controller="Cliente" asp-action="Index"
|
|
asp-route-numeroDePagina=@NumeroPaginaAnterior
|
|
asp-route-registrosPorPagina=@RegistrosPorPagina
|
|
asp-route-BusquedaCliente=@Filtros.BusquedaCliente>
|
|
<
|
|
</a>
|
|
}
|
|
else
|
|
{
|
|
<a class="disable-btn pagination-btn btn" disabled> < </a>
|
|
}
|
|
<form class="row mx-2 my-auto" style="width:30%;" asp-controller="Cliente" asp-action="Index">
|
|
<input type="hidden" name="registrosPorPagina" value=@RegistrosPorPagina />
|
|
<input id="paginacionInput"
|
|
type="number"
|
|
class="text-center my-auto w-100"
|
|
value=@NumeroDePagina
|
|
placeholder=@NumeroDePagina
|
|
name="numeroDePagina"
|
|
min="1"
|
|
max=@PaginasTotales />
|
|
</form>
|
|
<p class="my-auto mr-2">de @PaginasTotales</p>
|
|
@if (HayPaginaSiguiente)
|
|
{
|
|
<a class="pagination-btn btn" asp-controller="Cliente" asp-action="Index"
|
|
asp-route-numeroDePagina=@NumeroPaginaSiguiente
|
|
asp-route-registrosPorPagina=@RegistrosPorPagina
|
|
asp-route-BusquedaCliente=@Filtros.BusquedaCliente>
|
|
>
|
|
</a>
|
|
}
|
|
else
|
|
{
|
|
<a class="disable-btn pagination-btn btn"> > </a>
|
|
}
|
|
</div>
|
|
<!-- Navegacion de Paginacion Termina -->
|
|
}
|
|
else
|
|
{
|
|
<p class="pl-2 my-auto">
|
|
No existen registros
|
|
</p>
|
|
|
|
<!-- Navegacion de Paginacion Inicia -->
|
|
<div class="row justify-content-end text-center h-75">
|
|
<a class="btn pagination-btn disable-btn"> < </a>
|
|
<div class="row mx-2 my-auto" style="width:30%;">
|
|
<input readonly
|
|
type="number" class="text-center my-auto form-control w-100"
|
|
value=@NumeroDePagina
|
|
min="1"
|
|
max=@PaginasTotales />
|
|
</div>
|
|
<p class="my-auto mr-2">de @NumeroDePagina</p>
|
|
<a class="btn pagination-btn disable-btn"> > </a>
|
|
</div>
|
|
<!-- Navegacion de Paginacion Termina -->
|
|
}
|
|
</div>
|
|
<!-- Informacion de Paginacion Termina -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--Contenido Principal Termina -->
|
|
</div>
|
|
<!-- Contenido Termina -->
|
|
|
|
@section Scripts {
|
|
@{
|
|
await Html.RenderPartialAsync("_PanelNotificationPartial");
|
|
<script src="~/js/Cliente/Cliente.js"></script>
|
|
<script src="~/js/DataTable.js"></script>
|
|
}
|
|
} |