Files
Antifraude.Net/Antifraude.Net/GestionPersonalWeb/Components/Pages/FicherosMaestros/ConceptosGenerales.razor
2026-04-14 10:54:45 +02:00

189 lines
7.1 KiB
Plaintext

@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;
}
}