Compare commits
2 Commits
174b9067c8
...
95fa241611
| Author | SHA1 | Date | |
|---|---|---|---|
| 95fa241611 | |||
| cfe2984494 |
@@ -47,7 +47,7 @@
|
||||
<Collapse Id="CollapseFich" Class="show" @ref="collapse1" Horizontal="true">
|
||||
<Card Style="width:100%;">
|
||||
<CardBody Style="flex-direction: column;display: flex;text-align: center;padding:0;">
|
||||
<a class="btnGrisNav" href="/FicherosMaestros/Adscripciones">Trabajadores</a>
|
||||
<a class="btnGrisNav" href="/">Trabajadores</a>
|
||||
<a class="btnGrisNav" href="/FicherosMaestros/CausasAlta">Generar Nóminas</a>
|
||||
<a class="btnGrisNav" href="/FicherosMaestros/CausasBaja">Nóminas</a>
|
||||
</CardBody>
|
||||
@@ -110,14 +110,14 @@
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" style="font-family:'Satoshi'; color:white" href="#" id="tabFichMaestros" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">FICHEROS MAESTROS</a>
|
||||
<div class="dropdown-menu" id="dropFicherosMaestros" style="font-family: 'Satoshi';" aria-labelledby="dropFicherosMaestros">
|
||||
<a class="dropdown-item" href="/trabajadores">Tipos puestos trabajo</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Conceptos generales</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Fiestas</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Bancos</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Concratos</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Tipos tramos SILTRA</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Cuentas cotización</a>
|
||||
<a class="dropdown-item" href="/trabajadores">Valores nómina</a>
|
||||
<a class="dropdown-item" href="/TiposPuestosTrabajo">Tipos puestos trabajo</a>
|
||||
<a class="dropdown-item" href="/ConceptosGenerales">Conceptos generales</a>
|
||||
<a class="dropdown-item" href="/Fiestas">Fiestas</a>
|
||||
<a class="dropdown-item" href="/Bancos">Bancos</a>
|
||||
<a class="dropdown-item" href="/Contratos">Concratos</a>
|
||||
<a class="dropdown-item" href="/TiposTramosSiltra">Tipos tramos SILTRA</a>
|
||||
<a class="dropdown-item" href="/CuentasCotizacion">Cuentas cotización</a>
|
||||
<a class="dropdown-item" href="/ValoresNomina">Valores nómina</a>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
@page "/Bancos"
|
||||
@using System.Net.Http.Headers
|
||||
@using System.Linq.Expressions
|
||||
@using Newtonsoft.Json
|
||||
@using System.Text
|
||||
@using Serialize.Linq.Serializers
|
||||
@using GestionPersonalWeb.Models
|
||||
@using BlazorBootstrap
|
||||
@using bdAntifraude.db
|
||||
@using Microsoft.AspNetCore.Components
|
||||
|
||||
@rendermode InteractiveServer
|
||||
@inject IJSRuntime JS
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IHttpClientFactory HttpClientFactory
|
||||
@inject IHttpContextAccessor HttpContextAccessor
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="pagina">
|
||||
<div class="Cabecera">
|
||||
<h6><small><i class="fas fa-user"></i><b> Bancos</b></small></h6>
|
||||
</div>
|
||||
|
||||
@if (lPuestos == null)
|
||||
{
|
||||
<div id="cargando" class="loadingFrame">
|
||||
<div class="loadingImg"></div>
|
||||
</div>
|
||||
}
|
||||
else if (!lPuestos.Any())
|
||||
{
|
||||
<p>No se encontraron datos para mostrar.</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
||||
</div>
|
||||
<div style="display:flex; justify-content:start; gap:15px;width:100%"></div>
|
||||
<div class="form-group mt-4 mb-4">
|
||||
<input class="form-control" type="text" placeholder="Filtrar..."
|
||||
@bind-value="Filter" @bind-value:event="oninput" />
|
||||
</div>
|
||||
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="BANCOS"
|
||||
Class="table tablaRegPers"
|
||||
Data="@lPuestos"
|
||||
AllowFiltering="false"
|
||||
AllowPaging="false"
|
||||
AllowSorting="true"
|
||||
EmptyText="No se han encontrado datos"
|
||||
Height="80"
|
||||
PageSizeSelectorVisible="false"
|
||||
Responsive="true"
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
<GridColumns>
|
||||
<GridColumn TItem="BANCOS" HeaderText="Código" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.CODIGO">
|
||||
@context.CODIGO
|
||||
</GridColumn>
|
||||
<GridColumn TItem="BANCOS" HeaderText="Nombre" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NOMBRE">
|
||||
@context.NOMBRE
|
||||
</GridColumn>
|
||||
<GridColumn TItem="BANCOS" HeaderText="BIC" PropertyName="BIC" FilterButtonCSSClass="hidden" SortKeySelector="item => item.BIC">
|
||||
@context.BIC
|
||||
</GridColumn>
|
||||
<GridColumn TItem="BANCOS" HeaderText="Obsoleto" PropertyName="OBSOLETO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.OBSOLETO">
|
||||
@if (context.OBSOLETO)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="IDTIPOPERSONANavigation.DESCRIPCION" FilterButtonCSSClass="hidden">
|
||||
@context.IDTIPOPERSONANavigation.DESCRIPCION
|
||||
</GridColumn>
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Fecha baja" PropertyName="FECHABAJA" TextNoWrap="true" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHABAJA">
|
||||
@if (context.FECHABAJA != null)
|
||||
{
|
||||
@context.FECHABAJA
|
||||
}
|
||||
|
||||
</GridColumn>
|
||||
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
|
||||
<!-- Vista móvil -->
|
||||
<div class="tablaMov">
|
||||
@foreach (var itm in lPuestos)
|
||||
{
|
||||
var collapseId = $"collapse{itm.IDBANCO}";
|
||||
<div class="card collapse-card Aceptada">
|
||||
<div class="card-header mb-1" data-bs-toggle="collapse" data-bs-target="#@collapseId" aria-expanded="false" aria-controls="@collapseId">
|
||||
<h5 class="mb-0">@itm.NOMBRE</h5>
|
||||
</div>
|
||||
<div id="@collapseId" class="collapse">
|
||||
<div class="card-body">
|
||||
<dl class="row">
|
||||
<dt class="col-sm-3">Código</dt>
|
||||
<dd class="col-sm-9">@itm.CODIGO</dd>
|
||||
<dt class="col-sm-3">Nombre</dt>
|
||||
<dd class="col-sm-9">@itm.NOMBRE</dd>
|
||||
<dt class="col-sm-3">BIC</dt>
|
||||
<dd class="col-sm-9">@itm.BIC</dd>
|
||||
<dt class="col-sm-3">Obsoleto</dt>
|
||||
<dd class="col-sm-9">
|
||||
@if(@itm.OBSOLETO)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private List<BANCOS> lPuestos = new List<BANCOS>();
|
||||
private List<BANCOS> Puestos = new List<BANCOS>();
|
||||
private string _filter = "";
|
||||
public string Filter
|
||||
{
|
||||
get => _filter;
|
||||
set
|
||||
{
|
||||
if (_filter != value)
|
||||
{
|
||||
_filter = value;
|
||||
AplicarFiltros();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void AplicarFiltros()
|
||||
{
|
||||
lPuestos = Puestos.Where(per =>
|
||||
string.IsNullOrEmpty(Filter) ||
|
||||
Utilidades.RemoveDiacritics(per.CODIGO).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.NOMBRE.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.BIC.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||
).ToList();
|
||||
UserState.CurrentPage = 1;
|
||||
}
|
||||
// Tamaño de página
|
||||
// private int pageSize = 6;
|
||||
|
||||
// Calcula el total de páginas basado en la lista filtrada
|
||||
// private int TotalPaginas => (int)Math.Ceiling((double)lPuestos.Count / pageSize);
|
||||
// Índice inicial y final de elementos para la página actual
|
||||
// private int FromElement => lPuestos.Count == 0 ? 0 : (UserState.CurrentPage - 1) * pageSize + 1;
|
||||
// private int ToElement
|
||||
// {
|
||||
// get
|
||||
// {
|
||||
// if (lPuestos.Count == 0)
|
||||
// {
|
||||
// return 0;
|
||||
// }
|
||||
// int last = FromElement + pageSize - 1;
|
||||
// return last > lPuestos.Count ? lPuestos.Count : last;
|
||||
// }
|
||||
// }
|
||||
// Sublista de datos para la página actual basada en la lista filtrada
|
||||
// private List<TIPOSPUESTOSTRABAJO> lPuestosPaginada =>
|
||||
// lPuestos.Skip((UserState.CurrentPage - 1) * pageSize).Take(pageSize).ToList();
|
||||
// private void PaginaAnterior()
|
||||
// {
|
||||
// if (UserState.CurrentPage > 1)
|
||||
// {
|
||||
// UserState.CurrentPage--;
|
||||
// }
|
||||
// }
|
||||
// private void PaginaSiguiente()
|
||||
// {
|
||||
// if (UserState.CurrentPage < TotalPaginas)
|
||||
// {
|
||||
// UserState.CurrentPage++;
|
||||
// }
|
||||
// }
|
||||
// private void PrimeraPagina() => UserState.CurrentPage = 1;
|
||||
// private void UltimaPagina() => UserState.CurrentPage = TotalPaginas;
|
||||
// private void NuevaPersona()
|
||||
// {
|
||||
// NavigationManager.NavigateTo("/InfoPersonas", forceLoad: true);
|
||||
// }
|
||||
private string HashRed(string id)
|
||||
{
|
||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
||||
id,
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
875421649);
|
||||
return link;
|
||||
}
|
||||
// Bandera que indica si se está en modo "Ver Todos"
|
||||
private bool verTodosActive = false;
|
||||
|
||||
private async Task ToggleVerTodos()
|
||||
{
|
||||
if (!verTodosActive)
|
||||
{
|
||||
verTodosActive = true;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/BANCOS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||
?? new List<BANCOS>();
|
||||
}
|
||||
else
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||
?? new List<BANCOS>();
|
||||
}
|
||||
|
||||
Puestos = Puestos
|
||||
.OrderBy(x => x.CODIGO)
|
||||
.ToList();
|
||||
|
||||
lPuestos = Puestos;
|
||||
UserState.CurrentPage = 1;
|
||||
Filter = "";
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||
?? new List<BANCOS>();
|
||||
|
||||
Puestos = Puestos.OrderBy(x => x.CODIGO)
|
||||
.ToList();
|
||||
|
||||
lPuestos = Puestos;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
@page "/ConceptosGenerales"
|
||||
@using System.Net.Http.Headers
|
||||
@using System.Linq.Expressions
|
||||
@using Newtonsoft.Json
|
||||
@using System.Text
|
||||
@using Serialize.Linq.Serializers
|
||||
@using GestionPersonalWeb.Models
|
||||
@using BlazorBootstrap
|
||||
@using bdAntifraude.db
|
||||
@using Microsoft.AspNetCore.Components
|
||||
|
||||
@rendermode InteractiveServer
|
||||
@inject IJSRuntime JS
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IHttpClientFactory HttpClientFactory
|
||||
@inject IHttpContextAccessor HttpContextAccessor
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="pagina">
|
||||
<div class="Cabecera">
|
||||
<h6><small><i class="fas fa-user"></i><b> Conceptos Generales</b></small></h6>
|
||||
</div>
|
||||
|
||||
@if (lConceptos == null)
|
||||
{
|
||||
<div id="cargando" class="loadingFrame">
|
||||
<div class="loadingImg"></div>
|
||||
</div>
|
||||
}
|
||||
else if (!lConceptos.Any())
|
||||
{
|
||||
<p>No se encontraron datos para mostrar.</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
||||
</div>
|
||||
<div style="display:flex; justify-content:start; gap:15px;width:100%"></div>
|
||||
<div class="form-group mt-4 mb-4">
|
||||
<input class="form-control" type="text" placeholder="Filtrar..."
|
||||
@bind-value="Filter" @bind-value:event="oninput" />
|
||||
</div>
|
||||
|
||||
<div style="overflow-x:auto;" class="">
|
||||
<Grid TItem="CONCEPTOSGENERALES"
|
||||
Class="table tablaRegPers"
|
||||
Data="@lConceptos"
|
||||
AllowFiltering="false"
|
||||
AllowPaging="false"
|
||||
AllowSorting="true"
|
||||
EmptyText="No se han encontrado datos"
|
||||
Height="80"
|
||||
PageSizeSelectorVisible="false"
|
||||
Responsive="true"
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
<GridColumns>
|
||||
<GridColumn TItem="CONCEPTOSGENERALES" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||
<NavLink class="btn btn-link" href="@HashRed(context.IDCONCEPTOSGENERALES.ToString())">@context.DESCRIPCION</NavLink>
|
||||
</GridColumn>
|
||||
|
||||
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
|
||||
<!-- Vista móvil -->
|
||||
@* <div class="tablaMov">
|
||||
@foreach (var itm in lPuestos)
|
||||
{
|
||||
var collapseId = $"collapse{itm.IDTIPOPUESTO}";
|
||||
<div class="card collapse-card Aceptada">
|
||||
<div class="card-header mb-1" data-bs-toggle="collapse" data-bs-target="#@collapseId" aria-expanded="false" aria-controls="@collapseId">
|
||||
<h5 class="mb-0">@itm.DESCRIPCION</h5>
|
||||
</div>
|
||||
<div id="@collapseId" class="collapse">
|
||||
<div class="card-body">
|
||||
<dl class="row">
|
||||
<dt class="col-sm-3">Descripción</dt>
|
||||
<dd class="col-sm-9"><a href="@HashRed(itm.IDTIPOPUESTO.ToString())">@itm.DESCRIPCION</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div> *@
|
||||
}
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private List<CONCEPTOSGENERALES> lConceptos = new List<CONCEPTOSGENERALES>();
|
||||
private List<CONCEPTOSGENERALES> Conceptos = new List<CONCEPTOSGENERALES>();
|
||||
private string _filter = "";
|
||||
public string Filter
|
||||
{
|
||||
get => _filter;
|
||||
set
|
||||
{
|
||||
if (_filter != value)
|
||||
{
|
||||
_filter = value;
|
||||
AplicarFiltros();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void AplicarFiltros()
|
||||
{
|
||||
lConceptos = Conceptos.Where(per =>
|
||||
string.IsNullOrEmpty(Filter) ||
|
||||
Utilidades.RemoveDiacritics(per.DESCRIPCION).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||
).ToList();
|
||||
UserState.CurrentPage = 1;
|
||||
}
|
||||
|
||||
private string HashRed(string id)
|
||||
{
|
||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
||||
id,
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
875421649);
|
||||
return link;
|
||||
}
|
||||
// Bandera que indica si se está en modo "Ver Todos"
|
||||
private bool verTodosActive = false;
|
||||
|
||||
private async Task ToggleVerTodos()
|
||||
{
|
||||
if (!verTodosActive)
|
||||
{
|
||||
verTodosActive = true;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/CONCEPTOSGENERALES");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Conceptos = JsonConvert.DeserializeObject<List<CONCEPTOSGENERALES>>(resultContent)
|
||||
?? new List<CONCEPTOSGENERALES>();
|
||||
}
|
||||
else
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/CONCEPTOSGENERALES");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Conceptos = JsonConvert.DeserializeObject<List<CONCEPTOSGENERALES>>(resultContent)
|
||||
?? new List<CONCEPTOSGENERALES>();
|
||||
}
|
||||
|
||||
Conceptos = Conceptos
|
||||
.OrderBy(x => x.DESCRIPCION)
|
||||
.ToList();
|
||||
|
||||
lConceptos = Conceptos;
|
||||
UserState.CurrentPage = 1;
|
||||
Filter = "";
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/CONCEPTOSGENERALES");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
Conceptos = JsonConvert.DeserializeObject<List<CONCEPTOSGENERALES>>(resultContent)
|
||||
?? new List<CONCEPTOSGENERALES>();
|
||||
|
||||
Conceptos = Conceptos
|
||||
.OrderBy(x => x.DESCRIPCION)
|
||||
.ToList();
|
||||
|
||||
lConceptos = Conceptos;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<h3>Contratos</h3>
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<h3>CuentasCotizacion</h3>
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,173 @@
|
||||
@page "/fiestas"
|
||||
@using System.Net.Http.Headers
|
||||
@using System.Linq.Expressions
|
||||
@using Newtonsoft.Json
|
||||
@using System.Text
|
||||
@using Serialize.Linq.Serializers
|
||||
@using GestionPersonalWeb.Models
|
||||
@using BlazorBootstrap
|
||||
@using bdAntifraude.db
|
||||
@using Microsoft.AspNetCore.Components
|
||||
|
||||
@rendermode InteractiveServer
|
||||
@inject IJSRuntime JS
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IHttpClientFactory HttpClientFactory
|
||||
@inject IHttpContextAccessor HttpContextAccessor
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="pagina">
|
||||
<div class="Cabecera">
|
||||
<h6><small><i class="fas fa-user"></i><b>Fiestas</b></small></h6>
|
||||
</div>
|
||||
|
||||
@if (lFiestas == null)
|
||||
{
|
||||
<div id="cargando" class="loadingFrame">
|
||||
<div class="loadingImg"></div>
|
||||
</div>
|
||||
}
|
||||
else if (!lFiestas.Any())
|
||||
{
|
||||
<p>No se encontraron datos para mostrar.</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
||||
</div>
|
||||
<div style="display:flex; justify-content:start; gap:15px;width:100%"></div>
|
||||
<div class="form-group mt-4 mb-4">
|
||||
<input class="form-control" type="text" placeholder="Filtrar..."
|
||||
@bind-value="Filter" @bind-value:event="oninput" />
|
||||
</div>
|
||||
|
||||
<div style="overflow-x:auto;" class="">
|
||||
<Grid TItem="FIESTAS"
|
||||
Class="table tablaRegPers"
|
||||
Data="@lFiestas"
|
||||
AllowFiltering="false"
|
||||
AllowPaging="false"
|
||||
AllowSorting="true"
|
||||
EmptyText="No se han encontrado datos"
|
||||
Height="80"
|
||||
PageSizeSelectorVisible="false"
|
||||
Responsive="true"
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
<GridColumns>
|
||||
<GridColumn TItem="FIESTAS" Style="width:10%" HeaderText="Fecha" PropertyName="FECHA" FilterTextboxWidth="50" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHA">
|
||||
@context.FECHA.Value.ToString().Substring(0,10)
|
||||
</GridColumn>
|
||||
<GridColumn TItem="FIESTAS" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||
@context.DESCRIPCION
|
||||
</GridColumn>
|
||||
|
||||
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
|
||||
<!-- Vista móvil -->
|
||||
|
||||
}
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private List<FIESTAS> lFiestas = new List<FIESTAS>();
|
||||
private List<FIESTAS> fiestas = new List<FIESTAS>();
|
||||
private string _filter = "";
|
||||
public string Filter
|
||||
{
|
||||
get => _filter;
|
||||
set
|
||||
{
|
||||
if (_filter != value)
|
||||
{
|
||||
_filter = value;
|
||||
AplicarFiltros();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void AplicarFiltros()
|
||||
{
|
||||
lFiestas = fiestas.Where(per =>
|
||||
string.IsNullOrEmpty(Filter) ||
|
||||
Utilidades.RemoveDiacritics(per.DESCRIPCION).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||
).ToList();
|
||||
UserState.CurrentPage = 1;
|
||||
}
|
||||
|
||||
private string HashRed(string id)
|
||||
{
|
||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
||||
id,
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
875421649);
|
||||
return link;
|
||||
}
|
||||
// Bandera que indica si se está en modo "Ver Todos"
|
||||
private bool verTodosActive = false;
|
||||
|
||||
private async Task ToggleVerTodos()
|
||||
{
|
||||
if (!verTodosActive)
|
||||
{
|
||||
verTodosActive = true;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/FIESTAS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
fiestas = JsonConvert.DeserializeObject<List<FIESTAS>>(resultContent)
|
||||
?? new List<FIESTAS>();
|
||||
}
|
||||
else
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/FIESTAS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
fiestas = JsonConvert.DeserializeObject<List<FIESTAS>>(resultContent)
|
||||
?? new List<FIESTAS>();
|
||||
}
|
||||
|
||||
fiestas = fiestas
|
||||
.OrderByDescending(x => x.FECHA)
|
||||
.ToList();
|
||||
|
||||
lFiestas = fiestas;
|
||||
UserState.CurrentPage = 1;
|
||||
Filter = "";
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
verTodosActive = false;
|
||||
var token = UserState.Token;
|
||||
var client = HttpClientFactory.CreateClient();
|
||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
|
||||
var resultPersonas = await client.GetAsync("/api/FIESTAS");
|
||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||
fiestas = JsonConvert.DeserializeObject<List<FIESTAS>>(resultContent)
|
||||
?? new List<FIESTAS>();
|
||||
|
||||
fiestas = fiestas
|
||||
.OrderByDescending(x => x.FECHA)
|
||||
.ToList();
|
||||
|
||||
lFiestas = fiestas;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,20 +33,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
||||
@* <button type="button" class="btnOAAFBlack" id="btnNuevaPers" title="Añadir nueva persona" @onclick="NuevaPersona">
|
||||
<i class="fa-solid fa-user-plus"></i>
|
||||
</button> *@
|
||||
@* <button type="button" class="btnOAAFBlack" @onclick="btnExportarExcel" id="btnExportarExcel" title="Exportar excel">
|
||||
<i class="fa-solid fa-file-export"></i>
|
||||
</button>
|
||||
<!-- Botón "Ver Todos" con toggle: se asigna btnOAAFAzul cuando está activo -->
|
||||
<button type="button" id="btnVerTodos" @onclick="ToggleVerTodos" title="alternar entre ver Puestos activas y todas" class="@(verTodosActive ? "btnOAAFAzul" : "btnOAAFBlack")">
|
||||
<i class="fa-solid fa-eye"></i> Ver Todos
|
||||
</button> *@
|
||||
@* <button type="button" class="btnOAAFBlack" title="listado de Puestos que cumplen trienio" id="btnCumplimientoTrienios" onclick="window.location.href='/cumplimientoTrienios'">
|
||||
<i class="fa-solid fa-hourglass-end"></i> Cumplimiento Trienios
|
||||
</button> *@
|
||||
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
||||
</div>
|
||||
<div style="display:flex; justify-content:start; gap:15px;width:100%"></div>
|
||||
<div class="form-group mt-4 mb-4">
|
||||
@@ -54,7 +41,6 @@
|
||||
@bind-value="Filter" @bind-value:event="oninput" />
|
||||
</div>
|
||||
|
||||
<!-- Grid con paginación manual: se muestran los datos de la página actual -->
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="TIPOSPUESTOSTRABAJO"
|
||||
Class="table tablaRegPers"
|
||||
@@ -80,8 +66,8 @@
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Grupo tarifa" PropertyName="GRUPOTARIFA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.GRUPOTARIFA">
|
||||
@context.GRUPOTARIFA
|
||||
</GridColumn>
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="CONCEPTOSTIPOSPUESTOSTRABAJO" FilterButtonCSSClass="hidden">
|
||||
@context.CONCEPTOSTIPOSPUESTOSTRABAJO
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="IDTIPOPERSONANavigation.DESCRIPCION" FilterButtonCSSClass="hidden">
|
||||
@context.IDTIPOPERSONANavigation.DESCRIPCION
|
||||
</GridColumn>
|
||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Fecha baja" PropertyName="FECHABAJA" TextNoWrap="true" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHABAJA">
|
||||
@if(context.FECHABAJA != null){
|
||||
@@ -115,7 +101,7 @@
|
||||
<dt class="col-sm-3">Grupo tarifa</dt>
|
||||
<dd class="col-sm-9">@itm.GRUPOTARIFA</dd>
|
||||
<dt class="col-sm-3">Tipo</dt>
|
||||
<dd class="col-sm-9">@itm.CONCEPTOSTIPOSPUESTOSTRABAJO</dd>
|
||||
<dd class="col-sm-9">@itm.IDTIPOPERSONANavigation.DESCRIPCION</dd>
|
||||
<dt class="col-sm-3">Fecha baja</dt>
|
||||
<dd class="col-sm-9">@itm.FECHABAJA</dd>
|
||||
</dl>
|
||||
@@ -123,87 +109,7 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Controles de paginación + texto de elementos en la misma fila -->
|
||||
@* <div class="d-flex justify-content-between mt-2 align-items-center">
|
||||
<!-- Paginación a la izquierda -->
|
||||
<div class="custom-pagination">
|
||||
<ul>
|
||||
<!-- Botón para ir a la primera página -->
|
||||
<li>
|
||||
<button class="page-button page-link"
|
||||
@onclick="PrimeraPagina"
|
||||
disabled="@(UserState.CurrentPage == 1)">
|
||||
<i id="AR1LR16N3BVAJ" class="bi bi-chevron-double-left"></i>
|
||||
</button>
|
||||
</li>
|
||||
<!-- Botón para ir a la página anterior -->
|
||||
<li>
|
||||
<button class="page-button page-link"
|
||||
@onclick="PaginaAnterior"
|
||||
disabled="@(UserState.CurrentPage == 1)">
|
||||
<i id="AR1LR16N3BVAK" class="bi bi-chevron-left"></i>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
<!-- Si el primer número a mostrar es mayor que 1, se muestra "1" y puntos -->
|
||||
@if (PageNumbersToDisplay().Any() && PageNumbersToDisplay().First() > 1)
|
||||
{
|
||||
<li>
|
||||
<button class="page-button" @onclick="() => UserState.CurrentPage = 1">
|
||||
1
|
||||
</button>
|
||||
</li>
|
||||
<li><span class="ellipsis">...</span></li>
|
||||
}
|
||||
|
||||
<!-- Botones de página dinámica -->
|
||||
@foreach (var pageNum in PageNumbersToDisplay())
|
||||
{
|
||||
<li>
|
||||
<button class="page-button page-link @(pageNum == UserState.CurrentPage ? "active" : null)"
|
||||
@onclick="() => UserState.CurrentPage = pageNum">
|
||||
@pageNum
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
|
||||
<!-- Si el último número mostrado es menor que TotalPaginas, se muestran puntos y la última página -->
|
||||
@if (PageNumbersToDisplay().Any() && PageNumbersToDisplay().Last() < TotalPaginas)
|
||||
{
|
||||
<li><button class="page-button page-link" disabled>...</button></li>
|
||||
<li>
|
||||
<button class="page-button" @onclick="() => UserState.CurrentPage = TotalPaginas">
|
||||
@TotalPaginas
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
|
||||
<!-- Botón para ir a la página siguiente -->
|
||||
<li>
|
||||
<button class="page-button page-link"
|
||||
@onclick="PaginaSiguiente"
|
||||
disabled="@(UserState.CurrentPage == TotalPaginas)">
|
||||
<i id="AR1LR16N3BVAM" class="bi bi-chevron-right"></i>
|
||||
</button>
|
||||
</li>
|
||||
<!-- Botón para ir a la última página -->
|
||||
<li>
|
||||
<button class="page-button page-link"
|
||||
@onclick="UltimaPagina"
|
||||
disabled="@(UserState.CurrentPage == TotalPaginas)">
|
||||
<i id="AR1LR16N3BVAN" class="bi bi-chevron-double-right"></i>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Texto de elementos a la derecha -->
|
||||
<div style="margin-right: 20px;">
|
||||
@FromElement - @ToElement de @lPuestos.Count elementos
|
||||
</div>
|
||||
</div> *@
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -219,11 +125,23 @@
|
||||
if (_filter != value)
|
||||
{
|
||||
_filter = value;
|
||||
// AplicarFiltros();
|
||||
AplicarFiltros();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AplicarFiltros()
|
||||
{
|
||||
lPuestos = Puestos.Where(per =>
|
||||
string.IsNullOrEmpty(Filter) ||
|
||||
Utilidades.RemoveDiacritics(per.DESCRIPCION).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.NIVEL.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.EPIGRAFE.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.GRUPOTARIFA).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.IDTIPOPERSONANavigation.DESCRIPCION.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
Utilidades.RemoveDiacritics(per.FECHABAJA.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||
).ToList();
|
||||
UserState.CurrentPage = 1;
|
||||
}
|
||||
// Tamaño de página
|
||||
// private int pageSize = 6;
|
||||
|
||||
@@ -277,9 +195,7 @@
|
||||
}
|
||||
// Bandera que indica si se está en modo "Ver Todos"
|
||||
private bool verTodosActive = false;
|
||||
/// <summary>
|
||||
/// Método toggle que cambia entre mostrar todos los registros y solo activos.
|
||||
/// </summary>
|
||||
|
||||
private async Task ToggleVerTodos()
|
||||
{
|
||||
if (!verTodosActive)
|
||||
@@ -320,50 +236,7 @@
|
||||
UserState.CurrentPage = 1;
|
||||
Filter = "";
|
||||
}
|
||||
// private void AplicarFiltros()
|
||||
// {
|
||||
// lPuestos = Puestos.Where(per =>
|
||||
// string.IsNullOrEmpty(Filter) ||
|
||||
// Utilidades.RemoveDiacritics(per.NIF).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
// Utilidades.RemoveDiacritics(per.APELLIDOS).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||
// Utilidades.RemoveDiacritics(per.NOMBRE).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||
// ).ToList();
|
||||
// UserState.CurrentPage = 1;
|
||||
// }
|
||||
/// <summary>
|
||||
/// Retorna un subconjunto de páginas alrededor de la página actual (±2 páginas).
|
||||
/// </summary>
|
||||
// private IEnumerable<int> PageNumbersToDisplay()
|
||||
// {
|
||||
// int range = 2;
|
||||
// int startPage = Math.Max(1, UserState.CurrentPage - range);
|
||||
// int endPage = Math.Min(TotalPaginas, UserState.CurrentPage + range);
|
||||
|
||||
// for (int i = startPage; i <= endPage; i++)
|
||||
// {
|
||||
// yield return i;
|
||||
// }
|
||||
// }
|
||||
/// <summary>
|
||||
/// Formatea el nombre de la persona insertando un salto de línea después de la segunda palabra.
|
||||
/// </summary>
|
||||
/// <param name="nombre">Nombre a formatear</param>
|
||||
/// <returns>MarkupString con el nombre formateado</returns>
|
||||
private MarkupString FormatearNombre(string nombre)
|
||||
{
|
||||
if (string.IsNullOrEmpty(nombre))
|
||||
{
|
||||
return new MarkupString(string.Empty);
|
||||
}
|
||||
var palabras = nombre.Split(' ');
|
||||
if (palabras.Length > 2)
|
||||
{
|
||||
string primeraParte = string.Join(" ", palabras.Take(2));
|
||||
string resto = string.Join(" ", palabras.Skip(2));
|
||||
return new MarkupString($"{primeraParte}<br/>{resto}");
|
||||
}
|
||||
return new MarkupString(nombre);
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
verTodosActive = false;
|
||||
@@ -385,81 +258,6 @@
|
||||
|
||||
lPuestos = Puestos;
|
||||
}
|
||||
// private async Task btnExportarPDF()
|
||||
// {
|
||||
// var itm = lPuestos
|
||||
// .Select(f => new
|
||||
// {
|
||||
// NIF = f.NIF,
|
||||
// Apellidos = f.APELLIDOS,
|
||||
// Nombre = f.NOMBRE,
|
||||
// Correo_Electrónico = f.CORREOELECTRONICO,
|
||||
// Cuerpo = f.IDCUERPORPTNavigation.DESCRIPCION,
|
||||
// Nivel_Puesto = f.IDNIVELRPTNavigation.DESCRIPCION,
|
||||
// Caracter_Ocupación = f.CARGOULTIMOPUESTO,
|
||||
// Departamento = f.DEPARTAMENTOACTUAL,
|
||||
// Puesto_Actual = f.PUESTOACTUAL,
|
||||
// Situación = f.IDSITUACIONENRPTNavigation.DESCRIPCION
|
||||
|
||||
// })
|
||||
// .ToList();
|
||||
// var logoBytes = await File.ReadAllBytesAsync("wwwroot/Content/imagenes/1oaaflogo.png");
|
||||
|
||||
// // Color de cabecera para PDF
|
||||
// var pdfHeaderColor = new MigraDocCore.DocumentObjectModel.Color(0, 85, 135);
|
||||
|
||||
// await Utilidades.ExportarPdfEnBrowser(
|
||||
// JS,
|
||||
// itm,
|
||||
// logoBytes,
|
||||
// pdfHeaderColor,
|
||||
// $"Personas.pdf");
|
||||
// }
|
||||
// private async Task btnExportarExcel()
|
||||
// {
|
||||
// var itm = lPuestos
|
||||
// .Select(f => new
|
||||
// {
|
||||
// NIF = f.NIF,
|
||||
// Apellidos = f.APELLIDOS,
|
||||
// Nombre = f.NOMBRE,
|
||||
// Correo_Electrónico = f.CORREOELECTRONICO,
|
||||
// Cuerpo = f.IDCUERPORPTNavigation.DESCRIPCION,
|
||||
// Nivel_Puesto = f.IDNIVELRPTNavigation.DESCRIPCION,
|
||||
// Caracter_Ocupación = f.CARGOULTIMOPUESTO,
|
||||
// Departamento = f.DEPARTAMENTOACTUAL,
|
||||
// Puesto_Actual = f.PUESTOACTUAL,
|
||||
// Situación = f.IDSITUACIONENRPTNavigation.DESCRIPCION
|
||||
|
||||
// })
|
||||
// .ToList();
|
||||
// // 2) Carga tu logo (por ejemplo desde wwwroot/images/logo.png)
|
||||
// var logoBytes = await File.ReadAllBytesAsync("wwwroot/Content/imagenes/1oaaflogo.png");
|
||||
|
||||
// // 3) Define el color de cabecera para Excel
|
||||
// var excelHeaderColor = ClosedXML.Excel.XLColor.FromArgb(0, 85, 135);
|
||||
|
||||
// // 4) Llama a tu helper pasando logo y color
|
||||
// await Utilidades.ExportarExcelEnBrowser(
|
||||
// JS,
|
||||
// itm,
|
||||
// logoBytes,
|
||||
// excelHeaderColor,
|
||||
// $"Personas.xlsx");
|
||||
|
||||
// // await Utilidades.ExportarExcelEnBrowser(JS, itm, $"Puestos_{Persona.APELLIDOS}_{Persona.NOMBRE}.xlsx");
|
||||
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@* Helper para descargar archivos desde base64 *@
|
||||
<script>
|
||||
window.saveAsFile = (filename, bytesBase64) => {
|
||||
const link = document.createElement('a');
|
||||
link.download = filename;
|
||||
link.href = 'data:application/octet-stream;base64,' + bytesBase64;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<h3>TiposTramosSILTRA</h3>
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<h3>ValoresNomina</h3>
|
||||
|
||||
@code {
|
||||
|
||||
}
|
||||
@@ -213,7 +213,7 @@
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
{
|
||||
var responsef = await Utilidades.NuevoObjeto(cliente, "/api/FICHEROS", fi);
|
||||
persona.IDFICHEROFOTO = responsef.IDFICHERO;
|
||||
@@ -255,10 +255,19 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
var html = "";
|
||||
html += "Revise los errores antes de guardar:";
|
||||
foreach (string m in editContext.GetValidationMessages())
|
||||
{
|
||||
html += "\n" + m + ". ";
|
||||
}
|
||||
|
||||
mensajes.Add(new ToastMessage
|
||||
{
|
||||
Type = ToastType.Danger,
|
||||
Message = $"Revise los errores antes de guardar.",
|
||||
|
||||
Message = html,
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<!-- Primera fila con 4 columnas -->
|
||||
<div class="row ">
|
||||
<div class="col-md-3">
|
||||
<label class="lblInput" for="fecha-alta">Fecha alta Oficina:</label>
|
||||
<label class="lblInput" for="fecha-alta">Fecha alta Oficina: *</label>
|
||||
<input type="date" class="form-control @GetCssClass(nameof(Persona.FECHAALTA))"
|
||||
id="fecha-alta"
|
||||
@bind-value="Persona.FECHAALTA"
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class BANCOSController : GenericoController<BANCOS, int>
|
||||
{
|
||||
public BANCOSController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.BANCOS
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.BANCOS
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDBANCO == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class CONCEPTOSGENERALESController: GenericoController<CONCEPTOSGENERALES, int>
|
||||
{
|
||||
public CONCEPTOSGENERALESController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.CONCEPTOSGENERALES
|
||||
//.Include(x => x.IDTIPOPERSONANavigation)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.CONCEPTOSGENERALES
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDCONCEPTOSGENERALES == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class FIESTASController : GenericoController<FIESTAS, int>
|
||||
{
|
||||
public FIESTASController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.FIESTAS
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.FIESTAS
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDFIESTA == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,11 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
@@ -11,5 +17,58 @@ namespace SwaggerAntifraude.Controllers
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.TIPOSPUESTOSTRABAJO
|
||||
.Include(x => x.IDTIPOPERSONANavigation)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.NOMINAS
|
||||
.Include(x => x.IDTIPONavigation)
|
||||
.Include(x => x.IDSITUACIONNOMINANavigation)
|
||||
//.Include(x => x.NOMINATRABAJADORCABECERA)
|
||||
//.ThenInclude(pr => pr.IDPERSONANavigation)
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDNOMINAS == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
"Audience": "TuDominio.com",
|
||||
"ExpiresInMinutes": 60
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"WriteConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDEDESARROLLO",
|
||||
"ReadOnlyConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDEDESARROLLO"
|
||||
},
|
||||
//PRODUCCION
|
||||
//"ConnectionStrings": {
|
||||
// "WriteConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDE",
|
||||
// "ReadOnlyConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDE"
|
||||
// "WriteConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDEDESARROLLO",
|
||||
// "ReadOnlyConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDEDESARROLLO"
|
||||
//},
|
||||
//PRODUCCION
|
||||
"ConnectionStrings": {
|
||||
"WriteConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDE",
|
||||
"ReadOnlyConnection": "DATA SOURCE=192.168.41.203:21521/XE;PASSWORD=antifraude2022;PERSIST SECURITY INFO=True;USER ID=ANTIFRAUDE"
|
||||
},
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
|
||||
Reference in New Issue
Block a user