Creados Ficheros maestros funcionando (pendientes de validaciones)
This commit is contained in:
@@ -8,26 +8,26 @@
|
|||||||
@using BlazorBootstrap
|
@using BlazorBootstrap
|
||||||
@using bdAntifraude.db
|
@using bdAntifraude.db
|
||||||
@using Microsoft.AspNetCore.Components
|
@using Microsoft.AspNetCore.Components
|
||||||
|
|
||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
@inject IJSRuntime JS
|
@inject IJSRuntime JS
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@inject IHttpClientFactory HttpClientFactory
|
@inject IHttpClientFactory HttpClientFactory
|
||||||
@inject IHttpContextAccessor HttpContextAccessor
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
@inject UserState UserState
|
@inject UserState UserState
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
<div class="pagina">
|
<div class="pagina">
|
||||||
<div class="Cabecera">
|
<div class="Cabecera">
|
||||||
<h6><small><i class="fas fa-user"></i><b> Bancos</b></small></h6>
|
<h6><small><i class="fas fa-user"></i><b> Bancos</b></small></h6>
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(new BANCOS(), true))" class="btnOAAFAzul">Nuevo </button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (lPuestos == null)
|
@if (lBancos == null)
|
||||||
{
|
{
|
||||||
<div id="cargando" class="loadingFrame">
|
<div id="cargando" class="loadingFrame">
|
||||||
<div class="loadingImg"></div>
|
<div class="loadingImg"></div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
else if (!lPuestos.Any())
|
else if (!lBancos.Any())
|
||||||
{
|
{
|
||||||
<p>No se encontraron datos para mostrar.</p>
|
<p>No se encontraron datos para mostrar.</p>
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<div style="overflow-x:auto;" class="tablaDesk">
|
<div style="overflow-x:auto;" class="tablaDesk">
|
||||||
<Grid TItem="BANCOS"
|
<Grid TItem="BANCOS"
|
||||||
Class="table tablaRegPers"
|
Class="table tablaRegPers"
|
||||||
Data="@lPuestos"
|
Data="@lBancos"
|
||||||
AllowFiltering="false"
|
AllowFiltering="false"
|
||||||
AllowPaging="false"
|
AllowPaging="false"
|
||||||
AllowSorting="true"
|
AllowSorting="true"
|
||||||
@@ -54,6 +54,9 @@
|
|||||||
Responsive="true"
|
Responsive="true"
|
||||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||||
<GridColumns>
|
<GridColumns>
|
||||||
|
<GridColumn TItem="BANCOS" HeaderText="">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@context, false))" class="btnOAAFAzul">Editar</button>
|
||||||
|
</GridColumn>
|
||||||
<GridColumn TItem="BANCOS" HeaderText="Código" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.CODIGO">
|
<GridColumn TItem="BANCOS" HeaderText="Código" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.CODIGO">
|
||||||
@context.CODIGO
|
@context.CODIGO
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
@@ -69,16 +72,16 @@
|
|||||||
<i class="fa-regular fa-square-check"></i>
|
<i class="fa-regular fa-square-check"></i>
|
||||||
}
|
}
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="IDTIPOPERSONANavigation.DESCRIPCION" FilterButtonCSSClass="hidden">
|
@*<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="IDTIPOPERSONANavigation.DESCRIPCION" FilterButtonCSSClass="hidden">
|
||||||
@context.IDTIPOPERSONANavigation.DESCRIPCION
|
@context.IDTIPOPERSONANavigation.DESCRIPCION
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Fecha baja" PropertyName="FECHABAJA" TextNoWrap="true" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHABAJA">
|
<GridColumn TItem="BANCOS" HeaderText="Fecha baja" PropertyName="FECHABAJA" TextNoWrap="true" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHABAJA">
|
||||||
@if (context.FECHABAJA != null)
|
@if (context.FECHABAJA != null)
|
||||||
{
|
{
|
||||||
@context.FECHABAJA
|
@context.FECHABAJA
|
||||||
}
|
}
|
||||||
|
|
||||||
</GridColumn>
|
</GridColumn> *@
|
||||||
|
|
||||||
</GridColumns>
|
</GridColumns>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -86,7 +89,7 @@
|
|||||||
|
|
||||||
<!-- Vista móvil -->
|
<!-- Vista móvil -->
|
||||||
<div class="tablaMov">
|
<div class="tablaMov">
|
||||||
@foreach (var itm in lPuestos)
|
@foreach (var itm in lBancos)
|
||||||
{
|
{
|
||||||
var collapseId = $"collapse{itm.IDBANCO}";
|
var collapseId = $"collapse{itm.IDBANCO}";
|
||||||
<div class="card collapse-card Aceptada">
|
<div class="card collapse-card Aceptada">
|
||||||
@@ -104,10 +107,19 @@
|
|||||||
<dd class="col-sm-9">@itm.BIC</dd>
|
<dd class="col-sm-9">@itm.BIC</dd>
|
||||||
<dt class="col-sm-3">Obsoleto</dt>
|
<dt class="col-sm-3">Obsoleto</dt>
|
||||||
<dd class="col-sm-9">
|
<dd class="col-sm-9">
|
||||||
@if(@itm.OBSOLETO)
|
@itm.OBSOLETO
|
||||||
|
|
||||||
|
@* @if(itm.OBSOLETO)
|
||||||
{
|
{
|
||||||
<i class="fa-regular fa-square-check"></i>
|
<i class="fa-regular fa-square-check"></i>
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-uncheck"></i>
|
||||||
|
} *@
|
||||||
|
</dd>
|
||||||
|
<dd class="col-sm-12">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@itm, true))" class="btnOAAFAzul">Editar </button>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
@@ -117,10 +129,48 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
<EditForm EditContext="@editContext" OnValidSubmit="GuardarCambiosPopup" OnInvalidSubmit="@MostrarErroresPopup" FormName="costeIndiForm">
|
||||||
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
||||||
|
<Modal @ref="popupGestionDatos" title="@tituloPopup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||||
|
<BodyTemplate>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Codigo: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.CODIGO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Nombre: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.NOMBRE" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">BIC: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.BIC" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Obsoleto: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.OBSOLETO" @bind-value="@ItemEnEdicion.OBSOLETO" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</BodyTemplate>
|
||||||
|
<FooterTemplate>
|
||||||
|
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||||
|
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary">@(EsItemNuevo ? "Añadir" : "Modificar")</Button>
|
||||||
|
</FooterTemplate>
|
||||||
|
</Modal>
|
||||||
|
</EditForm>
|
||||||
@code {
|
@code {
|
||||||
private List<BANCOS> lPuestos = new List<BANCOS>();
|
private List<BANCOS> lBancos = new List<BANCOS>();
|
||||||
private List<BANCOS> Puestos = new List<BANCOS>();
|
private List<BANCOS> banco = new List<BANCOS>();
|
||||||
|
|
||||||
|
private string tituloPopup = "";
|
||||||
|
private Modal popupGestionDatos = default;
|
||||||
|
private bool EsItemNuevo = false;
|
||||||
|
private BANCOS ItemEnEdicion { get; set; } = new BANCOS();
|
||||||
|
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
private EditContext? editContext;
|
||||||
|
|
||||||
|
|
||||||
private string _filter = "";
|
private string _filter = "";
|
||||||
public string Filter
|
public string Filter
|
||||||
{
|
{
|
||||||
@@ -136,7 +186,7 @@
|
|||||||
}
|
}
|
||||||
private void AplicarFiltros()
|
private void AplicarFiltros()
|
||||||
{
|
{
|
||||||
lPuestos = Puestos.Where(per =>
|
lBancos = banco.Where(per =>
|
||||||
string.IsNullOrEmpty(Filter) ||
|
string.IsNullOrEmpty(Filter) ||
|
||||||
Utilidades.RemoveDiacritics(per.CODIGO).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
Utilidades.RemoveDiacritics(per.CODIGO).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||||
Utilidades.RemoveDiacritics(per.NOMBRE.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
Utilidades.RemoveDiacritics(per.NOMBRE.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||||
@@ -144,57 +194,6 @@
|
|||||||
).ToList();
|
).ToList();
|
||||||
UserState.CurrentPage = 1;
|
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"
|
// Bandera que indica si se está en modo "Ver Todos"
|
||||||
private bool verTodosActive = false;
|
private bool verTodosActive = false;
|
||||||
|
|
||||||
@@ -211,7 +210,7 @@
|
|||||||
|
|
||||||
var resultPersonas = await client.GetAsync("/BANCOS");
|
var resultPersonas = await client.GetAsync("/BANCOS");
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||||
?? new List<BANCOS>();
|
?? new List<BANCOS>();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -225,15 +224,15 @@
|
|||||||
|
|
||||||
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||||
?? new List<BANCOS>();
|
?? new List<BANCOS>();
|
||||||
}
|
}
|
||||||
|
|
||||||
Puestos = Puestos
|
banco = banco
|
||||||
.OrderBy(x => x.CODIGO)
|
.OrderBy(x => x.CODIGO)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
lPuestos = Puestos;
|
lBancos = banco;
|
||||||
UserState.CurrentPage = 1;
|
UserState.CurrentPage = 1;
|
||||||
Filter = "";
|
Filter = "";
|
||||||
}
|
}
|
||||||
@@ -242,21 +241,111 @@
|
|||||||
{
|
{
|
||||||
verTodosActive = false;
|
verTodosActive = false;
|
||||||
var token = UserState.Token;
|
var token = UserState.Token;
|
||||||
var client = HttpClientFactory.CreateClient();
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
editContext = new EditContext(lBancos);
|
||||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
var resultPersonas = await cliente.GetAsync("/api/BANCOS");
|
||||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
||||||
|
|
||||||
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
Puestos = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
||||||
?? new List<BANCOS>();
|
?? new List<BANCOS>();
|
||||||
|
|
||||||
Puestos = Puestos.OrderBy(x => x.CODIGO)
|
banco = banco.OrderBy(x => x.CODIGO)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
lPuestos = Puestos;
|
lBancos = banco;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task abrirPopupModificacion(BANCOS objeto, bool esNuevo)
|
||||||
|
{
|
||||||
|
ItemEnEdicion = Utilidades.ClonarObjeto(objeto);
|
||||||
|
EsItemNuevo = esNuevo;
|
||||||
|
if (!EsItemNuevo)
|
||||||
|
{
|
||||||
|
tituloPopup = "Modificando Banco";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tituloPopup = "Nuevo Banco";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await popupGestionDatos.ShowAsync();
|
||||||
|
}
|
||||||
|
private async Task cerrarPopupModificacion()
|
||||||
|
{
|
||||||
|
await popupGestionDatos.HideAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
// GUARDAR
|
||||||
|
private async Task GuardarCambiosPopup()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ValidarDatos();
|
||||||
|
|
||||||
|
if (!editContext!.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
string accion = EsItemNuevo ? "create" : "update";
|
||||||
|
await GestionarDatos(accion);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Warning,
|
||||||
|
Message = $"Debe rellenar los campos obligatorios.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = $"Error al guardar.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task GestionarDatos(string accion)
|
||||||
|
{
|
||||||
|
var copia = new List<BANCOS>(lBancos);
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
switch (accion)
|
||||||
|
{
|
||||||
|
case "update":
|
||||||
|
int indice = copia.FindIndex(x => x.IDBANCO == ItemEnEdicion.IDBANCO);
|
||||||
|
if (indice > -1)
|
||||||
|
{
|
||||||
|
copia[indice] = ItemEnEdicion;
|
||||||
|
}
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/BANCOS/" + ItemEnEdicion.IDBANCO, ItemEnEdicion, mensajes);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "create":
|
||||||
|
copia.Add(ItemEnEdicion);
|
||||||
|
var responsec = await Utilidades.NuevoObjeto(cliente, "/api/BANCOS/", ItemEnEdicion, mensajes);
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cerrarPopupModificacion();
|
||||||
|
lBancos = copia.OrderBy(x => x.CODIGO).ToList();
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
private void ValidarDatos()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private void MostrarErroresPopup()
|
||||||
|
{
|
||||||
|
// messageStore?.Clear();
|
||||||
|
// foreach (var field in new[] { nameof(descripcionItem) })
|
||||||
|
// {
|
||||||
|
// ValidarYActualizar(new ChangeEventArgs { Value = typeof(enumeraciones).GetProperty(field)?.GetValue(itemSeleccionado) }, field);
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,291 @@
|
|||||||
|
@page "/ConceptoGeneral"
|
||||||
|
@page "/ConceptoGeneral/{cl}"
|
||||||
|
@using BlazorBootstrap
|
||||||
|
@using GestionPersonalWeb.Components.Pages.FicherosMaestros.TipoPuestoTrabajoComponents
|
||||||
|
@using Newtonsoft.Json
|
||||||
|
@using GestionPersonalWeb.Components.Layout
|
||||||
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
|
@using GestionPersonalWeb.Components.Pages.InfoPersComponents
|
||||||
|
@using GestionPersonalWeb.Models
|
||||||
|
@using System.Linq.Expressions
|
||||||
|
@using Serialize.Linq.Serializers
|
||||||
|
@using System.Net.Http.Headers
|
||||||
|
@using bdAntifraude.clases
|
||||||
|
@using bdAntifraude.db
|
||||||
|
@using System.Reflection
|
||||||
|
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
||||||
|
@inject IJSRuntime JSRuntime
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IHttpClientFactory HttpClientFactory
|
||||||
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
|
@inject UserState UserState
|
||||||
|
@inject ProtectedSessionStorage ProtectedSessionStore
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
|
|
||||||
|
@* <div class="Cabecera">
|
||||||
|
<h6><small><i class="fas fa-user"></i><b> Tipo puesto de trabajo: @puestoTrabajo.DESCRIPCION </b></small></h6>
|
||||||
|
</div> *@
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="datos-personales-container mt-3">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><input type="button" class="btnOAAFAzul mb-2" value="Guardar Concepto General" @onclick="GuardarPuestoTrabajo" /></div>
|
||||||
|
<div class="" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Concepto </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Nombre: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.NOMBRE" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Interviene en pago directo: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.INTERVIENEENPAGODIRECTO" @bind-value="@Concepto.INTERVIENEENPAGODIRECTO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Retribuciones: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.RETRIBUCIONES" @bind-value="@Concepto.RETRIBUCIONES" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Concepto de Nomina: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.PERTENECENOMINA" @bind-value="@Concepto.PERTENECENOMINA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Cotiza Seguridad Social: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.COTIZASEGURIDADSOCIAL" @bind-value="@Concepto.COTIZASEGURIDADSOCIAL" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Deducciones: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.DEDUCCIONES" @bind-value="@Concepto.DEDUCCIONES" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Concepto de Liquidación: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.PERTENECELIQUIDACIONES" @bind-value="@Concepto.PERTENECELIQUIDACIONES" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Cotiza IRPF: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.COTIZAIRPF" @bind-value="@Concepto.COTIZAIRPF" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Extra: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@Concepto.EXTRA" @bind-value="@Concepto.EXTRA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Aplicaciones Presupuestarias </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Nombre: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.CONCEPTOAPLPRES" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Eventual: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESEVENTUAL" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Altos Cargos: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESALTOSCARGOS" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Laboral: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESLABORAL" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Funcionario </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOA1" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOA2" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOB" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOC1" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOC2" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.APLPRESFUNCIONARIOE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3 mb-5" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Varios </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Tipo: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.TIPO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Orden: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@Concepto.ORDEN" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string? cl { get; set; } = "";
|
||||||
|
private static bdAntifraude.db.CONCEPTOSGENERALES Concepto = new CONCEPTOSGENERALES();
|
||||||
|
private EditContext editContext = new EditContext(Concepto);
|
||||||
|
|
||||||
|
private HttpClient cliente = new HttpClient();
|
||||||
|
private ValidationMessageStore? messageStore;
|
||||||
|
private string errorMessage = "";
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
public bool mostrar { get; set; } = true;
|
||||||
|
public bool mostrarBtn { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue))
|
||||||
|
{
|
||||||
|
cl = clValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(cl))
|
||||||
|
{
|
||||||
|
Concepto = new CONCEPTOSGENERALES();
|
||||||
|
mostrarBtn = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ListaSexos = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SEXO");
|
||||||
|
string idDesencriptado = Utilidades.Desencriptar(cl);
|
||||||
|
int id = int.Parse(idDesencriptado);
|
||||||
|
|
||||||
|
var response = await cliente.GetAsync($"/api/CONCEPTOSGENERALES/{id}");
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception($"Error al obtener los datos del Tipo de Trabajo. Código: {response.StatusCode}");
|
||||||
|
}
|
||||||
|
var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Concepto = JsonConvert.DeserializeObject<CONCEPTOSGENERALES>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||||
|
}
|
||||||
|
editContext = new EditContext(Concepto);
|
||||||
|
messageStore = new ValidationMessageStore(editContext);
|
||||||
|
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorMessage = ex.Message;
|
||||||
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GuardarPuestoTrabajo()
|
||||||
|
{
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
if (!editContext.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
if (Concepto.IDCONCEPTOSGENERALES == 0)//Nuevo
|
||||||
|
{
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/CONCEPTOSGENERALES", Concepto, mensajes);
|
||||||
|
if (response != null)
|
||||||
|
{
|
||||||
|
Concepto = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
else//Guardar
|
||||||
|
{
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/CONCEPTOSGENERALES/" + Concepto.IDCONCEPTOSGENERALES, Concepto, mensajes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = Utilidades.ListaErroresHtml(editContext.GetValidationMessages()),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -17,8 +17,13 @@
|
|||||||
@inject UserState UserState
|
@inject UserState UserState
|
||||||
|
|
||||||
<div class="pagina">
|
<div class="pagina">
|
||||||
<div class="Cabecera">
|
<div class="d-flex">
|
||||||
<h6><small><i class="fas fa-user"></i><b> Conceptos Generales</b></small></h6>
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Conceptos Generales</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<a href="/ConceptoGeneral" class="btnOAAFAzul" style="text-decoration:none">Nuevo </a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (lConceptos == null)
|
@if (lConceptos == null)
|
||||||
@@ -113,7 +118,7 @@
|
|||||||
|
|
||||||
private string HashRed(string id)
|
private string HashRed(string id)
|
||||||
{
|
{
|
||||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
string link = "/ConceptoGeneral?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
id,
|
id,
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
|||||||
@@ -0,0 +1,304 @@
|
|||||||
|
@page "/Contrato"
|
||||||
|
@page "/Contrato/{cl}"
|
||||||
|
@using BlazorBootstrap
|
||||||
|
@using GestionPersonalWeb.Components.Pages.FicherosMaestros.TipoPuestoTrabajoComponents
|
||||||
|
@using Newtonsoft.Json
|
||||||
|
@using GestionPersonalWeb.Components.Layout
|
||||||
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
|
@using GestionPersonalWeb.Components.Pages.InfoPersComponents
|
||||||
|
@using GestionPersonalWeb.Models
|
||||||
|
@using System.Linq.Expressions
|
||||||
|
@using Serialize.Linq.Serializers
|
||||||
|
@using System.Net.Http.Headers
|
||||||
|
@using bdAntifraude.clases
|
||||||
|
@using bdAntifraude.db
|
||||||
|
@using System.Reflection
|
||||||
|
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
||||||
|
@inject IJSRuntime JSRuntime
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IHttpClientFactory HttpClientFactory
|
||||||
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
|
@inject UserState UserState
|
||||||
|
@inject ProtectedSessionStorage ProtectedSessionStore
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
|
|
||||||
|
@* <div class="Cabecera">
|
||||||
|
<h6><small><i class="fas fa-user"></i><b> Tipo puesto de trabajo: @puestoTrabajo.DESCRIPCION </b></small></h6>
|
||||||
|
</div> *@
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="datos-personales-container mt-3">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><input type="button" class="btnOAAFAzul mb-2" value="Guardar Contrato" @onclick="GuardarPuestoTrabajo" /></div>
|
||||||
|
<div class="" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Contrato </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Codigo: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iContrato.CODIGO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtDescripcion" @bind-value="@iContrato.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Contigencias Comunes </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.CONTCOMUNPORCENTEMPR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.CONTCOMUNIMPORTEEMPR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.CONTCOMUNPORCENTTRAB" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.CONTCOMUNIMPORTEEMPR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Formación Profesional </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FORMACIONPROFPORCENTEMPR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FORMACIONPROFIMPORTEEMPR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FORMACIONPROFPORCENTTRAB" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FORMACIONPROFIMPORTETRAB" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Desempleo </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.DESEMPLEOPORCENTAJEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.DESEMPLEOIMPORTEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.DESEMPLEOPORCENTAJETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.DESEMPLEOIMPORTETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> FOGASA </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FOGASAPORCENTAJEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FOGASAIMPORTEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FOGASAPORCENTAJETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.FOGASAIMPORTETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> MEI </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.MEIPORCENTAJEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.MEIIMPORTEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">% Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.MEIPORCENTAJETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Importe Empresa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iContrato.MEIIMPORTETRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string? cl { get; set; } = "";
|
||||||
|
private static bdAntifraude.db.CONTRATOS iContrato = new CONTRATOS();
|
||||||
|
private EditContext editContext = new EditContext(iContrato);
|
||||||
|
|
||||||
|
private HttpClient cliente = new HttpClient();
|
||||||
|
private ValidationMessageStore? messageStore;
|
||||||
|
private string errorMessage = "";
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
public bool mostrar { get; set; } = true;
|
||||||
|
public bool mostrarBtn { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue))
|
||||||
|
{
|
||||||
|
cl = clValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(cl))
|
||||||
|
{
|
||||||
|
iContrato = new CONTRATOS();
|
||||||
|
mostrarBtn = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string idDesencriptado = Utilidades.Desencriptar(cl);
|
||||||
|
int id = int.Parse(idDesencriptado);
|
||||||
|
|
||||||
|
var response = await cliente.GetAsync($"/api/CONTRATOS/{id}");
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception($"Error al obtener los datos del Contrato. Código: {response.StatusCode}");
|
||||||
|
}
|
||||||
|
var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
|
iContrato = JsonConvert.DeserializeObject<CONTRATOS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||||
|
}
|
||||||
|
editContext = new EditContext(iContrato);
|
||||||
|
messageStore = new ValidationMessageStore(editContext);
|
||||||
|
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorMessage = ex.Message;
|
||||||
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GuardarPuestoTrabajo()
|
||||||
|
{
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
if (!editContext.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
if (iContrato.IDCONTRATO == 0)//Nuevo
|
||||||
|
{
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/CONTRATOS", iContrato, mensajes);
|
||||||
|
if (response != null)
|
||||||
|
{
|
||||||
|
iContrato = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
else//Guardar
|
||||||
|
{
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/CONTRATOS/" + iContrato.IDCONTRATO, iContrato, mensajes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = Utilidades.ListaErroresHtml(editContext.GetValidationMessages()),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,5 +1,233 @@
|
|||||||
<h3>Contratos</h3>
|
@page "/Contratos"
|
||||||
|
@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
|
||||||
|
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="pagina">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Contratos</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<a href="/Contrato" class="btnOAAFAzul" style="text-decoration:none">Nuevo </a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (lContratos == null)
|
||||||
|
{
|
||||||
|
<div id="cargando" class="loadingFrame">
|
||||||
|
<div class="loadingImg"></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else if (!lContratos.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="CONTRATOS"
|
||||||
|
Class="table tablaRegPers"
|
||||||
|
Data="@lContratos"
|
||||||
|
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="CONTRATOS" HeaderText="Descripción" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
<NavLink class="btn btn-link" href="@HashRed(context.IDCONTRATO.ToString())">@context.CODIGO</NavLink>
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESCRIPCION
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Contigencias Comunes Empresa" PropertyName="CONTCOMUNPORCENTEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.CONTCOMUNPORCENTEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Contigencias Comunes Trabajador" PropertyName="CONTCOMUNPORCENTTRAB" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.CONTCOMUNPORCENTTRAB
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Contigencias Comunes Empresa" PropertyName="CONTCOMUNIMPORTEEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.CONTCOMUNIMPORTEEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Contigencias Comunes Trabajador" PropertyName="CONTCOMUNIMPORTETRAB" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.CONTCOMUNIMPORTETRAB
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Formación Profesional Empresa" PropertyName="FORMACIONPROFPORCENTEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FORMACIONPROFPORCENTEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Formación Profesional Trabajador" PropertyName="FORMACIONPROFPORCENTTRAB" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FORMACIONPROFPORCENTTRAB
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Formación Profesional Empresa" PropertyName="FORMACIONPROFIMPORTEEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FORMACIONPROFIMPORTEEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Formacion Profesional Trabajador" PropertyName="FORMACIONPROFIMPORTETRAB" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FORMACIONPROFIMPORTETRAB
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Accidentes IT-IMS CNAE Empresa" PropertyName="ACCITIMSCNAEPORCENTEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.ACCITIMSCNAEPORCENTEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Accidentes IT-IMS CNAE Trabajador" PropertyName="ACCITIMSCNAEPORCENTTRAB" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.ACCITIMSCNAEPORCENTTRAB
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Accidentes IT-IMS CNAE Empresa" PropertyName="ACCITIMSCNAEIMPORTEEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.ACCITIMSCNAEIMPORTEEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Accidentes IT-IMS CNAE Trabajador" PropertyName="ACCITIMSCNAEIMPORTEEMPR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.ACCITIMSCNAEIMPORTEEMPR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Desempleo Empresa" PropertyName="DESEMPLEOPORCENTAJEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESEMPLEOPORCENTAJEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% Desempleo Trabajador" PropertyName="DESEMPLEOPORCENTAJETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESEMPLEOPORCENTAJETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Desempleo Empresa" PropertyName="DESEMPLEOIMPORTEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESEMPLEOIMPORTEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe Desempleo Trabajador" PropertyName="DESEMPLEOIMPORTETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESEMPLEOIMPORTETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% FOGASA Empresa" PropertyName="FOGASAPORCENTAJEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FOGASAPORCENTAJEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% FOGASA Trabajador" PropertyName="FOGASAPORCENTAJETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FOGASAPORCENTAJETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe FOGASA Empresa" PropertyName="FOGASAIMPORTEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FOGASAIMPORTEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe FOGASA Trabajador" PropertyName="FOGASAIMPORTETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.FOGASAIMPORTETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% MEI Empresa" PropertyName="MEIPORCENTAJEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.MEIPORCENTAJEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="% MEI Trabajador" PropertyName="MEIPORCENTAJETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.MEIPORCENTAJETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe MEI Empresa" PropertyName="MEIIMPORTEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.MEIIMPORTEEMPRESA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONTRATOS" HeaderText="Importe MEI Trabajador" PropertyName="MEIIMPORTETRABAJADOR" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.MEIIMPORTETRABAJADOR
|
||||||
|
</GridColumn>
|
||||||
|
</GridColumns>
|
||||||
|
</Grid>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vista móvil -->
|
||||||
|
}
|
||||||
|
</div>
|
||||||
@code {
|
@code {
|
||||||
|
List<CONTRATOS> lContratos = new List<CONTRATOS>();
|
||||||
|
private List<CONTRATOS> contratos = new List<CONTRATOS>();
|
||||||
|
private string _filter = "";
|
||||||
|
|
||||||
|
public string Filter
|
||||||
|
{
|
||||||
|
get => _filter;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_filter != value)
|
||||||
|
{
|
||||||
|
_filter = value;
|
||||||
|
AplicarFiltros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void AplicarFiltros()
|
||||||
|
{
|
||||||
|
lContratos = contratos.Where(per =>
|
||||||
|
string.IsNullOrEmpty(Filter) ||
|
||||||
|
Utilidades.RemoveDiacritics(per.DESCRIPCION).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||||
|
).ToList();
|
||||||
|
UserState.CurrentPage = 1;
|
||||||
|
}
|
||||||
|
// Bandera que indica si se está en modo "Ver Todos"
|
||||||
|
private bool verTodosActive = false;
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
|
||||||
|
private async Task ToggleVerTodos()
|
||||||
|
{
|
||||||
|
if (!verTodosActive)
|
||||||
|
{
|
||||||
|
verTodosActive = true;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var client = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
var resultPersonas = await client.GetAsync("/CONTRATOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
contratos = JsonConvert.DeserializeObject<List<CONTRATOS>>(resultContent)
|
||||||
|
?? new List<CONTRATOS>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
verTodosActive = false;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var client = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
var resultPersonas = await client.GetAsync("/api/CONTRATOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
contratos = JsonConvert.DeserializeObject<List<CONTRATOS>>(resultContent)
|
||||||
|
?? new List<CONTRATOS>();
|
||||||
|
}
|
||||||
|
|
||||||
|
contratos = contratos.ToList();
|
||||||
|
|
||||||
|
lContratos = contratos;
|
||||||
|
UserState.CurrentPage = 1;
|
||||||
|
Filter = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
verTodosActive = false;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
var resultPersonas = await cliente.GetAsync("/api/CONTRATOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
contratos = JsonConvert.DeserializeObject<List<CONTRATOS>>(resultContent) ?? new List<CONTRATOS>();
|
||||||
|
|
||||||
|
contratos = contratos.ToList();
|
||||||
|
|
||||||
|
lContratos = contratos;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string HashRed(string id)
|
||||||
|
{
|
||||||
|
string link = "/Contrato?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
|
id,
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
875421649);
|
||||||
|
return link;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,297 @@
|
|||||||
|
@page "/CuentaCotizacion"
|
||||||
|
@page "/CuentaCotizacion/{cl}"
|
||||||
|
@using BlazorBootstrap
|
||||||
|
@using GestionPersonalWeb.Components.Pages.FicherosMaestros.TipoPuestoTrabajoComponents
|
||||||
|
@using Newtonsoft.Json
|
||||||
|
@using GestionPersonalWeb.Components.Layout
|
||||||
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
|
@using GestionPersonalWeb.Components.Pages.InfoPersComponents
|
||||||
|
@using GestionPersonalWeb.Models
|
||||||
|
@using System.Linq.Expressions
|
||||||
|
@using Serialize.Linq.Serializers
|
||||||
|
@using System.Net.Http.Headers
|
||||||
|
@using bdAntifraude.clases
|
||||||
|
@using bdAntifraude.db
|
||||||
|
@using System.Reflection
|
||||||
|
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
||||||
|
@inject IJSRuntime JSRuntime
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IHttpClientFactory HttpClientFactory
|
||||||
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
|
@inject UserState UserState
|
||||||
|
@inject ProtectedSessionStorage ProtectedSessionStore
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
|
|
||||||
|
@* <div class="Cabecera">
|
||||||
|
<h6><small><i class="fas fa-user"></i><b> Tipo puesto de trabajo: @puestoTrabajo.DESCRIPCION </b></small></h6>
|
||||||
|
</div> *@
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="datos-personales-container mt-3">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><input type="button" class="btnOAAFAzul mb-2" value="Guardar Cuenta Cotización" @onclick="GuardarPuestoTrabajo" /></div>
|
||||||
|
<div class="" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Cuenta Cotizacion Patronal</b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Codigo: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.CODIGO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtDescripcion" @bind-value="@iCuentaContizacion.REGIMEN" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtDescripcion" @bind-value="@iCuentaContizacion.AUTORIZADO" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Funcionario: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.FUNCIONARIO" @bind-value="@iCuentaContizacion.FUNCIONARIO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Laboral: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.LABORAL" @bind-value="@iCuentaContizacion.LABORAL" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Obsoleto: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.EVENTUAL" @bind-value="@iCuentaContizacion.EVENTUAL" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Interino: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.INTERINO" @bind-value="@iCuentaContizacion.INTERINO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Alto Cargo: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.ALTOCARGO" @bind-value="@iCuentaContizacion.ALTOCARGO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<label for="" class="fw-bold">Diputado en asignación: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@iCuentaContizacion.DIPUTADOSENASIGNACION" @bind-value="@iCuentaContizacion.DIPUTADOSENASIGNACION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Nombre: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.NOMBRE" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Entidad y ATyEP: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.ENTIDAD" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">IPF: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.IPF" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">IBAN Liquidaciones Deudoras: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.IBANLIQUIDACIONESDEUDORAS" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">IBAN Liquidaciones Acreedoras: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.IBANLIQUIDACIONESACREEDORAS" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Letra Identificación Fichero: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.LETRAIDENTIFICACIONFICHERO" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Coeficientes Reductores, Contigencias Excluidas </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Coeficiente Reductor Empresa: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.COEFICIENTEREDUCTOREMPRESA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Coeficiente Reductor Trabajador: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.COEFICIENTEREDUCTORTRABAJADOR" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Coeficiente Reductor Total: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.COEFICIENTEREDUCTORTOTAL" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-3 mb-5" style=" padding: 20px;border:solid 1px grey">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Datos del titular </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Tipo IPF: </label>
|
||||||
|
<InputSelect @bind-Value="@iCuentaContizacion.IDTITULARTIPOIPF" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lTipoIPF != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lTipoIPF)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">IPF: </label>
|
||||||
|
<input class="form-control" id="txtCodigo" @bind-value="@iCuentaContizacion.IPF" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Nombre: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@iCuentaContizacion.TITULARNOMBRE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Fecha Alta: </label>
|
||||||
|
<input type="date" class="form-control" id="txtEFecha" @bind-value="@iCuentaContizacion.FECHAALTA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Fecha Baja: </label>
|
||||||
|
<input type="date" class="form-control" id="txtEFecha" @bind-value="@iCuentaContizacion.FECHABAJA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string? cl { get; set; } = "";
|
||||||
|
private static bdAntifraude.db.CUENTASCOTIZACIONPATRONAL iCuentaContizacion = new CUENTASCOTIZACIONPATRONAL();
|
||||||
|
private EditContext editContext = new EditContext(iCuentaContizacion);
|
||||||
|
|
||||||
|
private HttpClient cliente = new HttpClient();
|
||||||
|
private ValidationMessageStore? messageStore;
|
||||||
|
private string errorMessage = "";
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
public bool mostrar { get; set; } = true;
|
||||||
|
public bool mostrarBtn { get; set; } = false;
|
||||||
|
|
||||||
|
private List<ENUMERACIONES> lTipoIPF = new List<ENUMERACIONES>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue))
|
||||||
|
{
|
||||||
|
cl = clValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(cl))
|
||||||
|
{
|
||||||
|
iCuentaContizacion = new CUENTASCOTIZACIONPATRONAL();
|
||||||
|
mostrarBtn = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string idDesencriptado = Utilidades.Desencriptar(cl);
|
||||||
|
int id = int.Parse(idDesencriptado);
|
||||||
|
|
||||||
|
var response = await cliente.GetAsync($"/api/CUENTASCOTIZACIONPATRONAL/{id}");
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception($"Error al obtener los datos. Código: {response.StatusCode}");
|
||||||
|
}
|
||||||
|
var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
|
iCuentaContizacion = JsonConvert.DeserializeObject<CUENTASCOTIZACIONPATRONAL>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||||
|
}
|
||||||
|
editContext = new EditContext(iCuentaContizacion);
|
||||||
|
messageStore = new ValidationMessageStore(editContext);
|
||||||
|
|
||||||
|
mostrar = false;
|
||||||
|
|
||||||
|
lTipoIPF = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/TIPIPF");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorMessage = ex.Message;
|
||||||
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GuardarPuestoTrabajo()
|
||||||
|
{
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
if (!editContext.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
if (iCuentaContizacion.IDCUENTACOTIZACIONPATRONAL == 0)//Nuevo
|
||||||
|
{
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/CUENTASCOTIZACIONPATRONAL", iCuentaContizacion, mensajes);
|
||||||
|
if (response != null)
|
||||||
|
{
|
||||||
|
iCuentaContizacion = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
else//Guardar
|
||||||
|
{
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/CUENTASCOTIZACIONPATRONAL/" + iCuentaContizacion.IDCUENTACOTIZACIONPATRONAL, iCuentaContizacion, mensajes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = Utilidades.ListaErroresHtml(editContext.GetValidationMessages()),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,5 +1,129 @@
|
|||||||
<h3>CuentasCotizacion</h3>
|
@page "/CuentasCotizacion"
|
||||||
|
@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
|
||||||
|
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="pagina">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Cuentas Cotización</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<a href="/CuentaCotizacion" class="btnOAAFAzul" style="text-decoration:none">Nuevo </a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (lCuentasCotizacion == null)
|
||||||
|
{
|
||||||
|
<div id="cargando" class="loadingFrame">
|
||||||
|
<div class="loadingImg"></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else if (!lCuentasCotizacion.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="CUENTASCOTIZACIONPATRONAL"
|
||||||
|
Class="table tablaRegPers"
|
||||||
|
Data="@lCuentasCotizacion"
|
||||||
|
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="CUENTASCOTIZACIONPATRONAL" HeaderText="Descripción" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
<NavLink class="btn btn-link" href="@HashRed(context.IDCUENTACOTIZACIONPATRONAL.ToString())">@context.NOMBRE</NavLink>
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CUENTASCOTIZACIONPATRONAL" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESCRIPCION
|
||||||
|
</GridColumn>
|
||||||
|
</GridColumns>
|
||||||
|
</Grid>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vista móvil -->
|
||||||
|
}
|
||||||
|
</div>
|
||||||
@code {
|
@code {
|
||||||
|
List<CUENTASCOTIZACIONPATRONAL> lCuentasCotizacion = new List<CUENTASCOTIZACIONPATRONAL>();
|
||||||
|
private List<CUENTASCOTIZACIONPATRONAL> cuentasCoti = new List<CUENTASCOTIZACIONPATRONAL>();
|
||||||
|
private string _filter = "";
|
||||||
|
|
||||||
|
public string Filter
|
||||||
|
{
|
||||||
|
get => _filter;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_filter != value)
|
||||||
|
{
|
||||||
|
_filter = value;
|
||||||
|
AplicarFiltros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void AplicarFiltros()
|
||||||
|
{
|
||||||
|
lCuentasCotizacion = cuentasCoti.Where(per =>
|
||||||
|
string.IsNullOrEmpty(Filter) ||
|
||||||
|
Utilidades.RemoveDiacritics(per.DESCRIPCION).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||||
|
).ToList();
|
||||||
|
UserState.CurrentPage = 1;
|
||||||
|
}
|
||||||
|
// Bandera que indica si se está en modo "Ver Todos"
|
||||||
|
private bool verTodosActive = false;
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
verTodosActive = false;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
var resultPersonas = await cliente.GetAsync("/api/CUENTASCOTIZACIONPATRONAL");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
cuentasCoti = JsonConvert.DeserializeObject<List<CUENTASCOTIZACIONPATRONAL>>(resultContent) ?? new List<CUENTASCOTIZACIONPATRONAL>();
|
||||||
|
|
||||||
|
cuentasCoti = cuentasCoti.ToList();
|
||||||
|
|
||||||
|
lCuentasCotizacion = cuentasCoti;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string HashRed(string id)
|
||||||
|
{
|
||||||
|
string link = "/CuentaCotizacion?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
|
id,
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
875421649);
|
||||||
|
return link;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
@using BlazorBootstrap
|
@using BlazorBootstrap
|
||||||
@using bdAntifraude.db
|
@using bdAntifraude.db
|
||||||
@using Microsoft.AspNetCore.Components
|
@using Microsoft.AspNetCore.Components
|
||||||
|
|
||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
@inject IJSRuntime JS
|
@inject IJSRuntime JS
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@@ -16,9 +15,15 @@
|
|||||||
@inject IHttpContextAccessor HttpContextAccessor
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
@inject UserState UserState
|
@inject UserState UserState
|
||||||
|
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
<div class="pagina">
|
<div class="pagina">
|
||||||
<div class="Cabecera">
|
<div class="d-flex">
|
||||||
<h6><small><i class="fas fa-user"></i><b>Fiestas</b></small></h6>
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Fiestas</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(new FIESTAS(), true))" class="btnOAAFAzul">Nuevo </button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (lFiestas == null)
|
@if (lFiestas == null)
|
||||||
@@ -54,6 +59,9 @@
|
|||||||
Responsive="true"
|
Responsive="true"
|
||||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||||
<GridColumns>
|
<GridColumns>
|
||||||
|
<GridColumn TItem="FIESTAS" HeaderText="">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@context, false))" class="btnOAAFAzul">Editar</button>
|
||||||
|
</GridColumn>
|
||||||
<GridColumn TItem="FIESTAS" Style="width:10%" HeaderText="Fecha" PropertyName="FECHA" FilterTextboxWidth="50" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHA">
|
<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)
|
@context.FECHA.Value.ToString().Substring(0,10)
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
@@ -70,11 +78,40 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
<!--Popup de edicion-->
|
||||||
|
<EditForm EditContext="@editContext" OnValidSubmit="GuardarCambiosPopup" OnInvalidSubmit="@MostrarErroresPopup" FormName="fiestasForm">
|
||||||
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
||||||
|
<Modal @ref="popupGestionDatos" title="@tituloPopup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||||
|
<BodyTemplate>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Fecha: </label>
|
||||||
|
<input type="date" class="form-control" id="txtEFecha" @bind-value="@ItemEnEdicion.FECHA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDescripcion" class="fw-bold">Descripcion: </label>
|
||||||
|
<input class="form-control" id="txtEDescripcion" @bind-value="@ItemEnEdicion.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</BodyTemplate>
|
||||||
|
<FooterTemplate>
|
||||||
|
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||||
|
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary">@(EsItemNuevo ? "Añadir" : "Modificar")</Button>
|
||||||
|
</FooterTemplate>
|
||||||
|
</Modal>
|
||||||
|
</EditForm>
|
||||||
@code {
|
@code {
|
||||||
private List<FIESTAS> lFiestas = new List<FIESTAS>();
|
List<FIESTAS> lFiestas = new List<FIESTAS>();
|
||||||
private List<FIESTAS> fiestas = new List<FIESTAS>();
|
private List<FIESTAS> fiestas = new List<FIESTAS>();
|
||||||
private string _filter = "";
|
private string _filter = "";
|
||||||
|
|
||||||
|
private string tituloPopup = "";
|
||||||
|
private Modal popupGestionDatos = default;
|
||||||
|
private bool EsItemNuevo = false;
|
||||||
|
private FIESTAS ItemEnEdicion { get; set; } = new FIESTAS();
|
||||||
|
|
||||||
|
private EditContext? editContext;
|
||||||
|
|
||||||
public string Filter
|
public string Filter
|
||||||
{
|
{
|
||||||
get => _filter;
|
get => _filter;
|
||||||
@@ -95,18 +132,9 @@
|
|||||||
).ToList();
|
).ToList();
|
||||||
UserState.CurrentPage = 1;
|
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"
|
// Bandera que indica si se está en modo "Ver Todos"
|
||||||
private bool verTodosActive = false;
|
private bool verTodosActive = false;
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
|
||||||
private async Task ToggleVerTodos()
|
private async Task ToggleVerTodos()
|
||||||
{
|
{
|
||||||
@@ -114,10 +142,7 @@
|
|||||||
{
|
{
|
||||||
verTodosActive = true;
|
verTodosActive = true;
|
||||||
var token = UserState.Token;
|
var token = UserState.Token;
|
||||||
var client = HttpClientFactory.CreateClient();
|
var client = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
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 resultPersonas = await client.GetAsync("/FIESTAS");
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
@@ -128,10 +153,7 @@
|
|||||||
{
|
{
|
||||||
verTodosActive = false;
|
verTodosActive = false;
|
||||||
var token = UserState.Token;
|
var token = UserState.Token;
|
||||||
var client = HttpClientFactory.CreateClient();
|
var client = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
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 resultPersonas = await client.GetAsync("/api/FIESTAS");
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
@@ -152,12 +174,10 @@
|
|||||||
{
|
{
|
||||||
verTodosActive = false;
|
verTodosActive = false;
|
||||||
var token = UserState.Token;
|
var token = UserState.Token;
|
||||||
var client = HttpClientFactory.CreateClient();
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
editContext = new EditContext(lFiestas);
|
||||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
||||||
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
||||||
|
|
||||||
var resultPersonas = await client.GetAsync("/api/FIESTAS");
|
var resultPersonas = await cliente.GetAsync("/api/FIESTAS");
|
||||||
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
fiestas = JsonConvert.DeserializeObject<List<FIESTAS>>(resultContent)
|
fiestas = JsonConvert.DeserializeObject<List<FIESTAS>>(resultContent)
|
||||||
?? new List<FIESTAS>();
|
?? new List<FIESTAS>();
|
||||||
@@ -169,5 +189,96 @@
|
|||||||
lFiestas = fiestas;
|
lFiestas = fiestas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task abrirPopupModificacion(FIESTAS objeto, bool esNuevo)
|
||||||
|
{
|
||||||
|
ItemEnEdicion = Utilidades.ClonarObjeto(objeto);
|
||||||
|
EsItemNuevo = esNuevo;
|
||||||
|
if (!EsItemNuevo)
|
||||||
|
{
|
||||||
|
tituloPopup = "Modificando Fiesta";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tituloPopup = "Nueva Fiesta";
|
||||||
|
}
|
||||||
|
|
||||||
|
await popupGestionDatos.ShowAsync();
|
||||||
|
}
|
||||||
|
private async Task cerrarPopupModificacion()
|
||||||
|
{
|
||||||
|
await popupGestionDatos.HideAsync();
|
||||||
|
}
|
||||||
|
private async Task GuardarCambiosPopup()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ValidarDatos();
|
||||||
|
|
||||||
|
if (!editContext!.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
string accion = EsItemNuevo ? "create" : "update";
|
||||||
|
await GestionarDatos(accion);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Warning,
|
||||||
|
Message = $"Debe rellenar los campos obligatorios.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = $"Error al guardar.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task GestionarDatos(string accion)
|
||||||
|
{
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
var copia = new List<FIESTAS>(lFiestas);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
switch (accion)
|
||||||
|
{
|
||||||
|
case "update":
|
||||||
|
int indice = copia.FindIndex(x => x.IDFIESTA == ItemEnEdicion.IDFIESTA);
|
||||||
|
if (indice > -1)
|
||||||
|
{
|
||||||
|
copia[indice] = ItemEnEdicion;
|
||||||
|
}
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/FIESTAS/" + ItemEnEdicion.IDFIESTA, ItemEnEdicion, mensajes);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "create":
|
||||||
|
copia.Add(ItemEnEdicion);
|
||||||
|
var responsec = await Utilidades.NuevoObjeto(cliente, "/api/FIESTAS/", ItemEnEdicion, mensajes);
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cerrarPopupModificacion();
|
||||||
|
lFiestas = copia.ToList();
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
private void ValidarDatos()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private void MostrarErroresPopup()
|
||||||
|
{
|
||||||
|
// messageStore?.Clear();
|
||||||
|
// foreach (var field in new[] { nameof(descripcionItem) })
|
||||||
|
// {
|
||||||
|
// ValidarYActualizar(new ChangeEventArgs { Value = typeof(enumeraciones).GetProperty(field)?.GetValue(itemSeleccionado) }, field);
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,476 @@
|
|||||||
|
@page "/TiposTramosSiltra"
|
||||||
|
@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
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="pagina">
|
||||||
|
<div class="Cabecera">
|
||||||
|
<h6><small><i class="fas fa-user"></i><b> Tipos tramos SILTRA</b></small></h6>
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(new TIPOSTRAMOS(), true))" class="btnOAAFAzul">Nuevo </button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (lTiposTramoSiltra == null)
|
||||||
|
{
|
||||||
|
<div id="cargando" class="loadingFrame">
|
||||||
|
<div class="loadingImg"></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else if (!lTiposTramoSiltra.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="TIPOSTRAMOS"
|
||||||
|
Class="table tablaRegPers"
|
||||||
|
Data="@lTiposTramoSiltra"
|
||||||
|
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="TIPOSTRAMOS" HeaderText="">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@context, false))" class="btnOAAFAzul">Editar</button>
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Código" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.CODIGO">
|
||||||
|
@context.CODIGO
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
|
@context.DESCRIPCION
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Código Tramo Acumulado" PropertyName="IDCODIGOTRAMOACUMULA" FilterButtonCSSClass="hidden">
|
||||||
|
@if (@context.IDCODIGOTRAMOACUMULA != null)
|
||||||
|
{
|
||||||
|
lTiposTramoSiltra.First(x => x.IDCODIGOTRAMOACUMULA == @context.IDCODIGOTRAMOACUMULA);
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Solicitado Al Usuario" PropertyName="SOLICITADOALUSUARIO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.SOLICITADOALUSUARIO">
|
||||||
|
@if (context.SOLICITADOALUSUARIO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Regimen Aplicación" PropertyName="IDREGIMENAPLICACION" FilterButtonCSSClass="hidden" >
|
||||||
|
@if (@context.IDREGIMENAPLICACION != null)
|
||||||
|
{
|
||||||
|
lRegimenAplicacion.First(x => x.IDENUMERACION == @context.IDREGIMENAPLICACION);
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Tipo Fichero XML" PropertyName="IDTIPOTRAMOFICHEROXML" FilterButtonCSSClass="hidden">
|
||||||
|
@if (@context.IDTIPOTRAMOFICHEROXML != null)
|
||||||
|
{
|
||||||
|
lTipoFicheroXml.First(x => x.IDENUMERACION == @context.IDTIPOTRAMOFICHEROXML);
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Solicitado Al Usuario" PropertyName="SEMANDAIMPORTEEMPRESA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.SEMANDAIMPORTEEMPRESA">
|
||||||
|
@if (context.SEMANDAIMPORTEEMPRESA)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Solicitado Al Usuario" PropertyName="MODIFICABLE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.MODIFICABLE">
|
||||||
|
@if (context.MODIFICABLE)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="TIPOSTRAMOS" HeaderText="Solicitado Al Usuario" PropertyName="RESTAENACUMULADO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.RESTAENACUMULADO">
|
||||||
|
@if (context.RESTAENACUMULADO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
</GridColumns>
|
||||||
|
</Grid>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vista móvil -->
|
||||||
|
<div class="tablaMov">
|
||||||
|
@foreach (var itm in lTiposTramoSiltra)
|
||||||
|
{
|
||||||
|
var collapseId = $"collapse{itm.IDTIPOTRAMOS}";
|
||||||
|
<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">Código</dt>
|
||||||
|
<dd class="col-sm-9">@itm.CODIGO</dd>
|
||||||
|
<dt class="col-sm-3">Descripcion</dt>
|
||||||
|
<dd class="col-sm-9">@itm.DESCRIPCION</dd>
|
||||||
|
<dt class="col-sm-3">Código Tramo Acumulado</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@if (@itm.IDCODIGOTRAMOACUMULANavigation != null)
|
||||||
|
{
|
||||||
|
@itm.IDCODIGOTRAMOACUMULANavigation.CODIGO
|
||||||
|
}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-sm-3">Solicitado al usuario</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@itm.SOLICITADOALUSUARIO
|
||||||
|
|
||||||
|
@* @if(itm.OBSOLETO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-uncheck"></i>
|
||||||
|
} *@
|
||||||
|
</dd>
|
||||||
|
<dt class="col-sm-3">Regimen Aplicación</dt>
|
||||||
|
<dd class="col-sm-9">@itm.IDREGIMENAPLICACIONNavigation</dd>
|
||||||
|
<dt class="col-sm-3">Tipo Fichero XML</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@if (@itm.IDTIPOTRAMOFICHEROXMLNavigation != null)
|
||||||
|
{
|
||||||
|
@itm.IDTIPOTRAMOFICHEROXMLNavigation.DESCRIPCION
|
||||||
|
}
|
||||||
|
</dd>
|
||||||
|
<dt class="col-sm-3">Se Manda Importe a Empresa</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@itm.SEMANDAIMPORTEEMPRESA
|
||||||
|
|
||||||
|
@* @if(itm.OBSOLETO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-uncheck"></i>
|
||||||
|
} *@
|
||||||
|
</dd>
|
||||||
|
<dt class="col-sm-3">Modificable</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@itm.MODIFICABLE
|
||||||
|
|
||||||
|
@* @if(itm.OBSOLETO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-uncheck"></i>
|
||||||
|
} *@
|
||||||
|
</dd>
|
||||||
|
<dt class="col-sm-3">Resta en Acumulado</dt>
|
||||||
|
<dd class="col-sm-9">
|
||||||
|
@itm.RESTAENACUMULADO
|
||||||
|
|
||||||
|
@* @if(itm.OBSOLETO)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-uncheck"></i>
|
||||||
|
} *@
|
||||||
|
</dd>
|
||||||
|
<dd class="col-sm-12">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@itm, true))" class="btnOAAFAzul">Editar </button>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<EditForm EditContext="@editContext" OnValidSubmit="GuardarCambiosPopup" OnInvalidSubmit="@MostrarErroresPopup" FormName="TiposTramoSiltraForm">
|
||||||
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
||||||
|
<Modal @ref="popupGestionDatos" title="@tituloPopup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||||
|
<BodyTemplate>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Codigo: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.CODIGO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Descripción: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Codigo Tramo Acumulado: </label>
|
||||||
|
<InputSelect @bind-Value="@ItemEnEdicion.IDCODIGOTRAMOACUMULA" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lTiposTramoSiltra != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lTiposTramoSiltra)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDTIPOTRAMOS">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Regimen Aplicación: </label>
|
||||||
|
<InputSelect @bind-Value="ItemEnEdicion.IDREGIMENAPLICACION" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lRegimenAplicacion != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lRegimenAplicacion)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Tipo Fichero XML: </label>
|
||||||
|
<InputSelect @bind-Value="ItemEnEdicion.IDTIPOTRAMOFICHEROXML" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lTipoFicheroXml != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lTipoFicheroXml)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label for="" class="fw-bold">Se Manda Importe a Empresa: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.SEMANDAIMPORTEEMPRESA" @bind-value="@ItemEnEdicion.SEMANDAIMPORTEEMPRESA" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label for="" class="fw-bold">Modificable: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.MODIFICABLE" @bind-value="@ItemEnEdicion.MODIFICABLE" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label for="" class="fw-bold">Resta en Acumulado: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.RESTAENACUMULADO" @bind-value="@ItemEnEdicion.RESTAENACUMULADO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label for="" class="fw-bold">Solicitado Al Usuario: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.SOLICITADOALUSUARIO" @bind-value="@ItemEnEdicion.SOLICITADOALUSUARIO" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</BodyTemplate>
|
||||||
|
<FooterTemplate>
|
||||||
|
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||||
|
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary">@(EsItemNuevo ? "Añadir" : "Modificar")</Button>
|
||||||
|
</FooterTemplate>
|
||||||
|
</Modal>
|
||||||
|
</EditForm>
|
||||||
|
@code {
|
||||||
|
private List<TIPOSTRAMOS> lTiposTramoSiltra = new List<TIPOSTRAMOS>();
|
||||||
|
private List<TIPOSTRAMOS> banco = new List<TIPOSTRAMOS>();
|
||||||
|
|
||||||
|
private string tituloPopup = "";
|
||||||
|
private Modal popupGestionDatos = default;
|
||||||
|
private bool EsItemNuevo = false;
|
||||||
|
private TIPOSTRAMOS ItemEnEdicion { get; set; } = new TIPOSTRAMOS();
|
||||||
|
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
private EditContext? editContext;
|
||||||
|
|
||||||
|
private List<ENUMERACIONES> lTipoFicheroXml = new List<ENUMERACIONES>();
|
||||||
|
private List<ENUMERACIONES> lRegimenAplicacion = new List<ENUMERACIONES>();
|
||||||
|
|
||||||
|
private string _filter = "";
|
||||||
|
public string Filter
|
||||||
|
{
|
||||||
|
get => _filter;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_filter != value)
|
||||||
|
{
|
||||||
|
_filter = value;
|
||||||
|
AplicarFiltros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void AplicarFiltros()
|
||||||
|
{
|
||||||
|
lTiposTramoSiltra = banco.Where(per =>
|
||||||
|
string.IsNullOrEmpty(Filter) ||
|
||||||
|
Utilidades.RemoveDiacritics(per.CODIGO).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
||||||
|
Utilidades.RemoveDiacritics(per.DESCRIPCION.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
||||||
|
).ToList();
|
||||||
|
UserState.CurrentPage = 1;
|
||||||
|
}
|
||||||
|
// 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("/TIPOSTRAMOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
banco = JsonConvert.DeserializeObject<List<TIPOSTRAMOS>>(resultContent)
|
||||||
|
?? new List<TIPOSTRAMOS>();
|
||||||
|
}
|
||||||
|
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/TIPOSTRAMOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
banco = JsonConvert.DeserializeObject<List<TIPOSTRAMOS>>(resultContent)
|
||||||
|
?? new List<TIPOSTRAMOS>();
|
||||||
|
}
|
||||||
|
|
||||||
|
banco = banco
|
||||||
|
.OrderBy(x => x.CODIGO)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
lTiposTramoSiltra = banco;
|
||||||
|
UserState.CurrentPage = 1;
|
||||||
|
Filter = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
verTodosActive = false;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
editContext = new EditContext(lTiposTramoSiltra);
|
||||||
|
var resultPersonas = await cliente.GetAsync("/api/TIPOSTRAMOS");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
banco = JsonConvert.DeserializeObject<List<TIPOSTRAMOS>>(resultContent)
|
||||||
|
?? new List<TIPOSTRAMOS>();
|
||||||
|
|
||||||
|
banco = banco.OrderBy(x => x.CODIGO)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
lTiposTramoSiltra = banco;
|
||||||
|
|
||||||
|
lTipoFicheroXml = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/TIPTRAXML");
|
||||||
|
lRegimenAplicacion = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/REGAPL");
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task abrirPopupModificacion(TIPOSTRAMOS objeto, bool esNuevo)
|
||||||
|
{
|
||||||
|
ItemEnEdicion = Utilidades.ClonarObjeto(objeto);
|
||||||
|
EsItemNuevo = esNuevo;
|
||||||
|
if (!EsItemNuevo)
|
||||||
|
{
|
||||||
|
tituloPopup = "Modificando Tipo Tramo Siltra";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tituloPopup = "Nuevo Tipo Tramo Siltra";
|
||||||
|
}
|
||||||
|
|
||||||
|
await popupGestionDatos.ShowAsync();
|
||||||
|
}
|
||||||
|
private async Task cerrarPopupModificacion()
|
||||||
|
{
|
||||||
|
await popupGestionDatos.HideAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
// GUARDAR
|
||||||
|
private async Task GuardarCambiosPopup()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ValidarDatos();
|
||||||
|
|
||||||
|
if (!editContext!.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
string accion = EsItemNuevo ? "create" : "update";
|
||||||
|
await GestionarDatos(accion);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Warning,
|
||||||
|
Message = $"Debe rellenar los campos obligatorios.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = $"Error al guardar.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task GestionarDatos(string accion)
|
||||||
|
{
|
||||||
|
var copia = new List<TIPOSTRAMOS>(lTiposTramoSiltra);
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
switch (accion)
|
||||||
|
{
|
||||||
|
case "update":
|
||||||
|
int indice = copia.FindIndex(x => x.IDTIPOTRAMOS == ItemEnEdicion.IDTIPOTRAMOS);
|
||||||
|
if (indice > -1)
|
||||||
|
{
|
||||||
|
copia[indice] = ItemEnEdicion;
|
||||||
|
}
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/TIPOSTRAMOS/" + ItemEnEdicion.IDTIPOTRAMOS, ItemEnEdicion, mensajes);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "create":
|
||||||
|
copia.Add(ItemEnEdicion);
|
||||||
|
var responsec = await Utilidades.NuevoObjeto(cliente, "/api/TIPOSTRAMOS/", ItemEnEdicion, mensajes);
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cerrarPopupModificacion();
|
||||||
|
lTiposTramoSiltra = copia.OrderBy(x => x.CODIGO).ToList();
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
private void ValidarDatos()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private void MostrarErroresPopup()
|
||||||
|
{
|
||||||
|
// messageStore?.Clear();
|
||||||
|
// foreach (var field in new[] { nameof(descripcionItem) })
|
||||||
|
// {
|
||||||
|
// ValidarYActualizar(new ChangeEventArgs { Value = typeof(enumeraciones).GetProperty(field)?.GetValue(itemSeleccionado) }, field);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,363 @@
|
|||||||
|
@page "/ValorNomina"
|
||||||
|
@page "/ValorNomina/{cl}"
|
||||||
|
@using BlazorBootstrap
|
||||||
|
@using GestionPersonalWeb.Components.Pages.FicherosMaestros.TipoPuestoTrabajoComponents
|
||||||
|
@using Newtonsoft.Json
|
||||||
|
@using GestionPersonalWeb.Components.Layout
|
||||||
|
@using Microsoft.AspNetCore.WebUtilities
|
||||||
|
@using GestionPersonalWeb.Components.Pages.InfoPersComponents
|
||||||
|
@using GestionPersonalWeb.Models
|
||||||
|
@using System.Linq.Expressions
|
||||||
|
@using Serialize.Linq.Serializers
|
||||||
|
@using System.Net.Http.Headers
|
||||||
|
@using bdAntifraude.clases
|
||||||
|
@using bdAntifraude.db
|
||||||
|
@using System.Reflection
|
||||||
|
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
||||||
|
@inject IJSRuntime JSRuntime
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IHttpClientFactory HttpClientFactory
|
||||||
|
@inject IHttpContextAccessor HttpContextAccessor
|
||||||
|
@inject UserState UserState
|
||||||
|
@inject ProtectedSessionStorage ProtectedSessionStore
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
|
|
||||||
|
@* <div class="Cabecera">
|
||||||
|
<h6><small><i class="fas fa-user"></i><b> Tipo puesto de trabajo: @puestoTrabajo.DESCRIPCION </b></small></h6>
|
||||||
|
</div> *@
|
||||||
|
<style>
|
||||||
|
.caj {
|
||||||
|
padding: 20px;
|
||||||
|
border: solid 1px grey
|
||||||
|
}
|
||||||
|
.caja {
|
||||||
|
padding: 20px;
|
||||||
|
border: solid 1px grey;
|
||||||
|
margin:5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="datos-personales-container mt-3">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div><input type="button" class="btnOAAFAzul mb-2" value="Guardar" @onclick="GuardarPuestoTrabajo" /></div>
|
||||||
|
<div class="caj">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Fecha Inicio: </label>
|
||||||
|
<input class="form-control" type="date" id="txtdni" @bind-value="@oValorNomina.FECHAINCIO" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Fecha Fin: </label>
|
||||||
|
<input class="form-control" type="date" id="txtdni" @bind-value="@oValorNomina.FECHAFIN" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3 mb-5" style="">
|
||||||
|
<div class="col-md-12 mb-3">
|
||||||
|
<h6><b> Valor Nomina </b></h6>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b> Sueldos </b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOA1" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOA2" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOB" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOC1" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOC2" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Sueldos Extra</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOA1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOA2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOBX" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOC1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOC2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.SUELDOEX" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Trienio Administración</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMA1" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMA2" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMB" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMC1" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMC2" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADME" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Trienio Administración Extra</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMA1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMA2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMBX" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMC1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMC2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIADMEX" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Trienio Oficina Antifraude</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARA1" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARA2" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARB" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARC1" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARC2" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Trienio Oficina Antifraude Extra</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARA1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARA2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARBX" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARC1X" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPARC2X" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.TRIPAREX" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Complemento Carrera Tramo I</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA1" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA2" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRB" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC1" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC2" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Complemento Carrera Tramo II</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA1II" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA2II" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRBII" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC1II" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC2II" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARREII" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Complemento Carrera Tramo III</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA1III" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA2III" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRBIII" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC1III" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC2III" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARREIII" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Complemento Carrera Tramo IV</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA1IV" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA2IV" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRBIV" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC1IV" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC2IV" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARREIV" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="caja">
|
||||||
|
<h6><b>Complemento Carrera Tramo V</b></h6>
|
||||||
|
<label for="txtdni" class="fw-bold">A1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA1V" />
|
||||||
|
<label for="txtdni" class="fw-bold">A2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRA2V" />
|
||||||
|
<label for="txtdni" class="fw-bold">B: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRBV" />
|
||||||
|
<label for="txtdni" class="fw-bold">C1: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC1V" />
|
||||||
|
<label for="txtdni" class="fw-bold">C2: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARRC2V" />
|
||||||
|
<label for="txtdni" class="fw-bold">E: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@oValorNomina.COMCARREV" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string? cl { get; set; } = "";
|
||||||
|
private static bdAntifraude.db.VALORESNOMINA oValorNomina = new VALORESNOMINA();
|
||||||
|
private EditContext editContext = new EditContext(oValorNomina);
|
||||||
|
|
||||||
|
private HttpClient cliente = new HttpClient();
|
||||||
|
private ValidationMessageStore? messageStore;
|
||||||
|
private string errorMessage = "";
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
public bool mostrar { get; set; } = true;
|
||||||
|
public bool mostrarBtn { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue))
|
||||||
|
{
|
||||||
|
cl = clValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(cl))
|
||||||
|
{
|
||||||
|
oValorNomina = new VALORESNOMINA();
|
||||||
|
mostrarBtn = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ListaSexos = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SEXO");
|
||||||
|
string idDesencriptado = Utilidades.Desencriptar(cl);
|
||||||
|
int id = int.Parse(idDesencriptado);
|
||||||
|
|
||||||
|
var response = await cliente.GetAsync($"/api/VALORESNOMINA/{id}");
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception($"Error al obtener los datos del Tipo de Trabajo. Código: {response.StatusCode}");
|
||||||
|
}
|
||||||
|
var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
|
oValorNomina = JsonConvert.DeserializeObject<VALORESNOMINA>(resultContent) ?? throw new Exception("Error al deserializar los datos.");
|
||||||
|
}
|
||||||
|
editContext = new EditContext(oValorNomina);
|
||||||
|
messageStore = new ValidationMessageStore(editContext);
|
||||||
|
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorMessage = ex.Message;
|
||||||
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GuardarPuestoTrabajo()
|
||||||
|
{
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
if (!editContext.GetValidationMessages().Any())
|
||||||
|
{
|
||||||
|
if (oValorNomina.IDVALNOMINA == 0)//Nuevo
|
||||||
|
{
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/VALORESNOMINA", oValorNomina, mensajes);
|
||||||
|
if (response != null)
|
||||||
|
{
|
||||||
|
oValorNomina = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
else//Guardar
|
||||||
|
{
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/VALORESNOMINA/" + oValorNomina.IDVALNOMINA, oValorNomina, mensajes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = Utilidades.ListaErroresHtml(editContext.GetValidationMessages()),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,5 +1,104 @@
|
|||||||
<h3>ValoresNomina</h3>
|
@page "/ValoresNomina"
|
||||||
|
@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
|
||||||
|
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="pagina">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Valores Nomina</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<a href="/ValorNomina" class="btnOAAFAzul" style="text-decoration:none">Nuevo </a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (lValoresNomina == null)
|
||||||
|
{
|
||||||
|
<div id="cargando" class="loadingFrame">
|
||||||
|
<div class="loadingImg"></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else if (!lValoresNomina.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 style="overflow-x:auto;" class="">
|
||||||
|
<Grid TItem="VALORESNOMINA"
|
||||||
|
Class="table tablaRegPers"
|
||||||
|
Data="@lValoresNomina"
|
||||||
|
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="VALORESNOMINA" HeaderText="Fecha Inicio" PropertyName="FECHAINCIO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHAINCIO">
|
||||||
|
<NavLink class="btn btn-link" href="@HashRed(context.IDVALNOMINA.ToString())">@context.FECHAINCIO</NavLink>
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="VALORESNOMINA" HeaderText="Fecha Fin" PropertyName="FECHAFIN" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHAFIN">
|
||||||
|
@context.FECHAFIN
|
||||||
|
</GridColumn>
|
||||||
|
</GridColumns>
|
||||||
|
</Grid>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vista móvil -->
|
||||||
|
}
|
||||||
|
</div>
|
||||||
@code {
|
@code {
|
||||||
|
List<VALORESNOMINA> lValoresNomina = new List<VALORESNOMINA>();
|
||||||
|
private List<VALORESNOMINA> cuentasCoti = new List<VALORESNOMINA>();
|
||||||
|
|
||||||
|
// Bandera que indica si se está en modo "Ver Todos"
|
||||||
|
private bool verTodosActive = false;
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
verTodosActive = false;
|
||||||
|
var token = UserState.Token;
|
||||||
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
var resultPersonas = await cliente.GetAsync("/api/VALORESNOMINA");
|
||||||
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
||||||
|
cuentasCoti = JsonConvert.DeserializeObject<List<VALORESNOMINA>>(resultContent) ?? new List<VALORESNOMINA>();
|
||||||
|
|
||||||
|
cuentasCoti = cuentasCoti.ToList();
|
||||||
|
|
||||||
|
lValoresNomina = cuentasCoti;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string HashRed(string id)
|
||||||
|
{
|
||||||
|
string link = "/ValorNomina?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
|
id,
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
875421649);
|
||||||
|
return link;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
using bdAntifraude.db;
|
using bdAntifraude.db;
|
||||||
|
using bdAntifraude.dbcontext;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace SwaggerAntifraude.Controllers
|
namespace SwaggerAntifraude.Controllers
|
||||||
{
|
{
|
||||||
@@ -11,5 +14,30 @@ namespace SwaggerAntifraude.Controllers
|
|||||||
: base()
|
: base()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public override async Task<IActionResult> GetAll()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||||
|
{
|
||||||
|
var entities = await context.TIPOSTRAMOS
|
||||||
|
.Include(x => x.IDTIPOTRAMOFICHEROXMLNavigation)
|
||||||
|
.Include(x => x.IDCODIGOTRAMOACUMULANavigation)
|
||||||
|
.Include(x => x.IDREGIMENAPLICACIONNavigation)
|
||||||
|
.AsNoTracking()
|
||||||
|
.ToListAsync();
|
||||||
|
//.Include(v => v.IDSERVICIOADSCRITONavigation)
|
||||||
|
//.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
|
||||||
|
return Ok(entities);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
using bdAntifraude.db;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace SwaggerAntifraude.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class VALORESNOMINAController : GenericoController<VALORESNOMINA, int>
|
||||||
|
{
|
||||||
|
public VALORESNOMINAController()
|
||||||
|
: base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user