Merge branch 'main' of https://gitea.tecnosis.net/Antifraude/Antifraude.Net
This commit is contained in:
@@ -92,7 +92,7 @@
|
|||||||
<nav class="navbar navbar-expand navbar-dark justify-content-between " style="margin-inline: 20px;">
|
<nav class="navbar navbar-expand navbar-dark justify-content-between " style="margin-inline: 20px;">
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<a class="navbar-brand" href="/RPT">
|
<a class="navbar-brand" href="/trabajadores">
|
||||||
<img style="margin-inline: auto; padding: 15px; padding-right: 40px; padding-left: 40px; height: 100px;" src="/Content/imagenes/2-oaaf-logo-negativoBN.png" alt="Logo Oficina Andaluza Antifraude">
|
<img style="margin-inline: auto; padding: 15px; padding-right: 40px; padding-left: 40px; height: 100px;" src="/Content/imagenes/2-oaaf-logo-negativoBN.png" alt="Logo Oficina Andaluza Antifraude">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -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,13 +54,16 @@
|
|||||||
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>
|
||||||
<GridColumn TItem="BANCOS" HeaderText="Nombre" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NOMBRE">
|
<GridColumn TItem="BANCOS" HeaderText="Nombre" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NOMBRE">
|
||||||
@context.NOMBRE
|
@context.NOMBRE
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
<GridColumn TItem="BANCOS" HeaderText="BIC" PropertyName="BIC" FilterButtonCSSClass="hidden" SortKeySelector="item => item.BIC">
|
<GridColumn TItem="BANCOS" HeaderText="BIC" PropertyName="BIC" FilterButtonCSSClass="hidden" SortKeySelector="item => item.BIC">
|
||||||
@context.BIC
|
@context.BIC
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
<GridColumn TItem="BANCOS" HeaderText="Obsoleto" PropertyName="OBSOLETO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.OBSOLETO">
|
<GridColumn TItem="BANCOS" HeaderText="Obsoleto" PropertyName="OBSOLETO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.OBSOLETO">
|
||||||
@@ -69,24 +72,24 @@
|
|||||||
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 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,234 @@
|
|||||||
|
@page "/TipoPuestoTrabajo"
|
||||||
|
@page "/TipoPuestoTrabajo/{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 Puesto Trabajo" @onclick="GuardarPuestoTrabajo" /></div>
|
||||||
|
<div class="">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Descripción: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@puestoTrabajo.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtsexo" class="fw-bold">Grupo: </label>
|
||||||
|
<InputSelect @bind-Value="puestoTrabajo.IDGRUPOFUNCIONARIO" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lGrupos != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lGrupos)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Grupo Tarifa: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@puestoTrabajo.GRUPOTARIFA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtsexo" class="fw-bold">TipoPersonal: </label>
|
||||||
|
<InputSelect @bind-Value="puestoTrabajo.IDTIPOPERSONA" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lTipoPersonal != null)
|
||||||
|
{
|
||||||
|
@foreach (var enumera in lTipoPersonal)
|
||||||
|
{
|
||||||
|
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Nivel: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@puestoTrabajo.NIVEL" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Código Antiguo: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@puestoTrabajo.CODIGOANTIGUO" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtdni" class="fw-bold">Epigrafe: </label>
|
||||||
|
<input class="form-control" id="txtdni" @bind-value="@puestoTrabajo.EPIGRAFE" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@if (puestoTrabajo.IDTIPOPUESTO != 0)
|
||||||
|
{
|
||||||
|
<ConceptosTipoTrabajoGrid PuestoTrabajo="puestoTrabajo"></ConceptosTipoTrabajoGrid>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string? cl { get; set; } = "";
|
||||||
|
private static bdAntifraude.db.TIPOSPUESTOSTRABAJO puestoTrabajo = new TIPOSPUESTOSTRABAJO();
|
||||||
|
private List<ENUMERACIONES> lGrupos = new List<ENUMERACIONES>();
|
||||||
|
private List<ENUMERACIONES> lTipoPersonal = new List<ENUMERACIONES>();
|
||||||
|
private EditContext editContext = new EditContext(puestoTrabajo);
|
||||||
|
private Tabs tabsPuesTrab { get; set; } = new Tabs();
|
||||||
|
|
||||||
|
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))
|
||||||
|
{
|
||||||
|
puestoTrabajo = new TIPOSPUESTOSTRABAJO();
|
||||||
|
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/TIPOSPUESTOSTRABAJO/{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();
|
||||||
|
puestoTrabajo = JsonConvert.DeserializeObject<TIPOSPUESTOSTRABAJO>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||||
|
}
|
||||||
|
editContext = new EditContext(puestoTrabajo);
|
||||||
|
messageStore = new ValidationMessageStore(editContext);
|
||||||
|
|
||||||
|
mostrar = false;
|
||||||
|
await CargarSelects();
|
||||||
|
}
|
||||||
|
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 (puestoTrabajo.IDTIPOPUESTO == 0)//Nuevo
|
||||||
|
{
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/TIPOSPUESTOSTRABAJO", puestoTrabajo,mensajes);
|
||||||
|
if (response != null)
|
||||||
|
{
|
||||||
|
puestoTrabajo = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await InvokeAsync(StateHasChanged);
|
||||||
|
}
|
||||||
|
else//Guardar
|
||||||
|
{
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/TIPOSPUESTOSTRABAJO/" + puestoTrabajo.IDTIPOPUESTO, puestoTrabajo,mensajes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = Utilidades.ListaErroresHtml(editContext.GetValidationMessages()),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task CargarSelects()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
lTipoPersonal = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/TIPPER");
|
||||||
|
lGrupos = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/GRUPOFUNCIONARIO");
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
errorMessage = ex.Message;
|
||||||
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
|
mostrar = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,297 @@
|
|||||||
|
@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
|
||||||
|
|
||||||
|
<!--Tabla de datos-->
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
|
<div class="">
|
||||||
|
<div class="d-flex">
|
||||||
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Conceptos Tipos Puestos de Trabajo</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(new CONCEPTOSTIPOSPUESTOSTRABAJO(), true))" class="btnOAAFAzul">Nuevo </button>
|
||||||
|
</div>
|
||||||
|
<div style="overflow-x:auto;" class="tablaDesk">
|
||||||
|
<Grid TItem="CONCEPTOSTIPOSPUESTOSTRABAJO"
|
||||||
|
Class="table tablaRegPers"
|
||||||
|
Data="itmList"
|
||||||
|
AllowFiltering="false"
|
||||||
|
PageSize="10"
|
||||||
|
AllowPaging="true"
|
||||||
|
AllowSorting="true"
|
||||||
|
EmptyText="No se han encontrado datos"
|
||||||
|
Height="100"
|
||||||
|
PageSizeSelectorVisible="false"
|
||||||
|
PageSizeSelectorItems="@(new int[] { 5, 10, 20, 50 })"
|
||||||
|
Responsive="true"
|
||||||
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||||
|
|
||||||
|
<GridColumns>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="">
|
||||||
|
<button @onclick="@(() => abrirPopupModificacion(@context, false))" class="btnOAAFAzul">Editar</button>
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Concepto General">
|
||||||
|
@lConceptosGenerales.First(x => x.IDCONCEPTOSGENERALES == context.IDCONCEPTOGENERAL).DESCRIPCION
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Descripcion">
|
||||||
|
@context.DESCRIPCION
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Importe">
|
||||||
|
@context.IMPORTE
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Concepto aplicación presupuestaria">
|
||||||
|
@context.CONCEPTOAPLPRES
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Aplicación presupuestaria">
|
||||||
|
@context.APLICACIONPRESUPUESTARIA
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Cotiza seguridad social" TextAlignment="Alignment.Center">
|
||||||
|
@if (context.COTIZASEGURIDADSOCIAL)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Cotiza IRPF" TextAlignment="Alignment.Center">
|
||||||
|
@if (context.COTIZAIRPF)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Retribuciones" TextAlignment="Alignment.Center">
|
||||||
|
@if (context.RETRIBUCIONES)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Deducciones" TextAlignment="Alignment.Center">
|
||||||
|
@if (context.DEDUCCIONES)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
<GridColumn TItem="CONCEPTOSTIPOSPUESTOSTRABAJO" HeaderText="Extra" TextAlignment="Alignment.Center">
|
||||||
|
@if (context.EXTRA)
|
||||||
|
{
|
||||||
|
<i class="fa-regular fa-square-check"></i>
|
||||||
|
}
|
||||||
|
</GridColumn>
|
||||||
|
</GridColumns>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--Popup de edicion-->
|
||||||
|
<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-6">
|
||||||
|
<label for="" class="fw-bold">Concepto General: </label>
|
||||||
|
<InputSelect @bind-Value="ItemEnEdicion.IDCONCEPTOGENERAL" class="form-select">
|
||||||
|
<option value="">Seleccionar</option>
|
||||||
|
@if (lConceptosGenerales != null)
|
||||||
|
{
|
||||||
|
@foreach (var concepto in lConceptosGenerales)
|
||||||
|
{
|
||||||
|
<option value="@concepto.IDCONCEPTOSGENERALES">@concepto.DESCRIPCION</option>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<label for="txtEDesc" class="fw-bold">Descripción: </label>
|
||||||
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.DESCRIPCION" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mt-3">
|
||||||
|
<div class="col-md-4" style="display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-end;">
|
||||||
|
<label for="txtEImporte" class="fw-bold" >Importe: </label>
|
||||||
|
<input class="form-control" id="txtEImporte" @bind-value="@ItemEnEdicion.IMPORTE" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtEConceptoAP" class="fw-bold">Concepto Apl. Pres.: </label>
|
||||||
|
<input class="form-control" id="txtEConceptoAP" @bind-value="@ItemEnEdicion.CONCEPTOAPLPRES" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="txtEAP" class="fw-bold">Aplicación Presupuestaria: </label>
|
||||||
|
<input class="form-control" id="txtEAP" @bind-value="@ItemEnEdicion.APLICACIONPRESUPUESTARIA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mt-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Cotiza Seg. Social: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.COTIZASEGURIDADSOCIAL" @bind-value="@ItemEnEdicion.COTIZASEGURIDADSOCIAL" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Cotiza IRPF: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkECotizaIRPF" checked="@ItemEnEdicion.COTIZAIRPF" @bind-value="@ItemEnEdicion.COTIZAIRPF" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Extra: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkEEXtra" checked="@ItemEnEdicion.EXTRA" @bind-value="@ItemEnEdicion.EXTRA" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Retribuciones: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkERetribuciones" checked="@ItemEnEdicion.RETRIBUCIONES" @bind-value="@ItemEnEdicion.RETRIBUCIONES" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label for="" class="fw-bold">Deducciones: </label>
|
||||||
|
<input type="checkbox" class="form-check" id="chkEDeducciones" checked="@ItemEnEdicion.DEDUCCIONES" @bind-value="@ItemEnEdicion.DEDUCCIONES" />
|
||||||
|
</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 {
|
||||||
|
[Parameter]
|
||||||
|
public TIPOSPUESTOSTRABAJO PuestoTrabajo { get; set; } = new TIPOSPUESTOSTRABAJO();
|
||||||
|
private HttpClient cliente = new HttpClient();
|
||||||
|
private List<CONCEPTOSTIPOSPUESTOSTRABAJO> itmList = new List<CONCEPTOSTIPOSPUESTOSTRABAJO>();
|
||||||
|
private List<CONCEPTOSGENERALES> lConceptosGenerales = new List<CONCEPTOSGENERALES>();
|
||||||
|
|
||||||
|
private string tituloPopup = "";
|
||||||
|
private Modal popupGestionDatos = default;
|
||||||
|
private bool EsItemNuevo = false;
|
||||||
|
private CONCEPTOSTIPOSPUESTOSTRABAJO ItemEnEdicion { get; set; } = new CONCEPTOSTIPOSPUESTOSTRABAJO();
|
||||||
|
|
||||||
|
private EditContext? editContext;
|
||||||
|
List<CONCEPTOSTIPOSPUESTOSTRABAJO> listnom = new List<CONCEPTOSTIPOSPUESTOSTRABAJO>();
|
||||||
|
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
listnom= PuestoTrabajo.CONCEPTOSTIPOSPUESTOSTRABAJO.ToList();
|
||||||
|
foreach (CONCEPTOSTIPOSPUESTOSTRABAJO i in listnom) { itmList.Add(i); }
|
||||||
|
editContext=new EditContext(listnom);
|
||||||
|
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
lConceptosGenerales = await Utilidades.ObtenerObjeto<List<CONCEPTOSGENERALES>>(cliente, "/api/CONCEPTOSGENERALES/");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task abrirPopupModificacion( CONCEPTOSTIPOSPUESTOSTRABAJO objeto, bool esNuevo)
|
||||||
|
{
|
||||||
|
ItemEnEdicion = Utilidades.ClonarObjeto(objeto);
|
||||||
|
EsItemNuevo = esNuevo;
|
||||||
|
if (!EsItemNuevo)
|
||||||
|
{
|
||||||
|
tituloPopup = "Modificando Concepto Tipo Trabajo";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tituloPopup = "Nuevo Concepto Tipo Trabajo";
|
||||||
|
}
|
||||||
|
|
||||||
|
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<CONCEPTOSTIPOSPUESTOSTRABAJO>(itmList);
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|
||||||
|
switch (accion)
|
||||||
|
{
|
||||||
|
case "update":
|
||||||
|
int indice = copia.FindIndex(x => x.IDCONCEPTOSTIPOSPUESTOTRABAJO == ItemEnEdicion.IDCONCEPTOSTIPOSPUESTOTRABAJO);
|
||||||
|
if (indice > -1)
|
||||||
|
{
|
||||||
|
copia[indice] = ItemEnEdicion;
|
||||||
|
}
|
||||||
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/CONCEPTOSTIPOSPUESTOSTRABAJO/" + ItemEnEdicion.IDCONCEPTOSTIPOSPUESTOTRABAJO, ItemEnEdicion, mensajes);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "create":
|
||||||
|
ItemEnEdicion.IDTIPOPUESTOSTRABAJO = PuestoTrabajo.IDTIPOPUESTO;
|
||||||
|
copia.Add(ItemEnEdicion);
|
||||||
|
var responsec = await Utilidades.NuevoObjeto(cliente, "/api/CONCEPTOSTIPOSPUESTOSTRABAJO/", ItemEnEdicion,mensajes);
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cerrarPopupModificacion();
|
||||||
|
itmList = 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);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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> Tipos puesto de trabajo</b></small></h6>
|
<div class="cabecera">
|
||||||
|
<h6 style="padding-top: 13px;padding-right: 15px;">
|
||||||
|
<b>Conceptos Tipos Puestos de Trabajo</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<a href="/TipoPuestoTrabajo" class="btnOAAFAzul" style="text-decoration:none">Nuevo </a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (lPuestos == null)
|
@if (lPuestos == 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="TIPOSPUESTOSTRABAJO" HeaderText="IdTipoPuesto" PropertyName="IDTIPOPUESTO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NIVEL">
|
||||||
|
@context.IDTIPOPUESTO
|
||||||
|
</GridColumn> *@
|
||||||
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Descripción" PropertyName="DESCRIPCION" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DESCRIPCION">
|
||||||
<NavLink class="btn btn-link" href="@HashRed(context.IDTIPOPUESTO.ToString())">@context.DESCRIPCION</NavLink>
|
<NavLink class="btn btn-link" href="@HashRed(context.IDTIPOPUESTO.ToString())">@context.DESCRIPCION</NavLink>
|
||||||
</GridColumn>
|
</GridColumn>
|
||||||
@@ -186,7 +194,7 @@
|
|||||||
// }
|
// }
|
||||||
private string HashRed(string id)
|
private string HashRed(string id)
|
||||||
{
|
{
|
||||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
string link = "/TipoPuestoTrabajo?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
id,
|
id,
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -383,7 +383,7 @@
|
|||||||
if (persona.IDFICHEROFOTO != null)
|
if (persona.IDFICHEROFOTO != null)
|
||||||
{
|
{
|
||||||
var responsef = await Utilidades.ActualizarObjeto(cliente, "/api/FICHEROS/" + fi.IDFICHERO, fi);
|
var responsef = await Utilidades.ActualizarObjeto(cliente, "/api/FICHEROS/" + fi.IDFICHERO, fi);
|
||||||
persona.IDFICHEROFOTO = responsef.IDFICHERO;
|
//persona.IDFICHEROFOTO = responsef.IDFICHERO;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -404,7 +404,9 @@
|
|||||||
}
|
}
|
||||||
else//Actualizar
|
else//Actualizar
|
||||||
{
|
{
|
||||||
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + persona.IDPERSONA, persona);
|
var personaGuardar = persona;
|
||||||
|
personaGuardar.NOMINATRABAJADORCABECERA = null;
|
||||||
|
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + personaGuardar.IDPERSONA, personaGuardar);
|
||||||
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue)) { cl = clValue; }
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue)) { cl = clValue; }
|
||||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
|||||||
@@ -22,19 +22,19 @@
|
|||||||
<div class="row mb-3 mt-4" style=" padding: 20px;border:solid 1px grey">
|
<div class="row mb-3 mt-4" style=" padding: 20px;border:solid 1px grey">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label for="txtApellidos" class="fw-bold widthLabel li-height50">Apellidos: </label>
|
<label for="txtApellidos" class="fw-bold widthLabel li-height50">Apellidos: </label>
|
||||||
<input class="form-control" id="txtApellidos" @bind-value="@Persona.APELLIDOS" />
|
<input class="form-control" readonly="readonly" id="txtApellidos" @bind-value="@Persona.APELLIDOS" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label for="txtNombre" class="fw-bold widthLabel li-height50">Nombre: </label>
|
<label for="txtNombre" class="fw-bold widthLabel li-height50">Nombre: </label>
|
||||||
<input class="form-control" id="txtNombre" @bind-value="@Persona.NOMBRE" />
|
<input class="form-control" readonly="readonly" id="txtNombre" @bind-value="@Persona.NOMBRE" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label for="txtNIF" class="fw-bold widthLabel li-height50">DNI: </label>
|
<label for="txtNIF" class="fw-bold widthLabel li-height50">DNI: </label>
|
||||||
<input class="form-control" id="txtNIF" @bind-value="@Persona.NIF" />
|
<input class="form-control" readonly="readonly" id="txtNIF" @bind-value="@Persona.NIF" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label for="txtsexo" class="fw-bold widthLabel li-height50">Sexo: </label>
|
<label for="txtsexo" class="fw-bold widthLabel li-height50">Sexo: </label>
|
||||||
<InputSelect @bind-Value="Persona.IDSEXO" class="form-select">
|
<InputSelect readonly="readonly" @bind-Value="Persona.IDSEXO" class="form-select">
|
||||||
<option value="">Seleccionar</option>
|
<option value="">Seleccionar</option>
|
||||||
@if (lSexo != null)
|
@if (lSexo != null)
|
||||||
{
|
{
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label for="txtTiCont" class="fw-bold widthLabel li-height50">Tipo Contrato: </label>
|
<label for="txtTiCont" class="fw-bold widthLabel li-height50">Tipo Contrato: </label>
|
||||||
<InputSelect @bind-Value="Persona.IDCONTRATO" class="form-select">
|
<InputSelect readonly="readonly" @bind-Value="Persona.IDCONTRATO" class="form-select">
|
||||||
<option value="">Seleccionar</option>
|
<option value="">Seleccionar</option>
|
||||||
@if (lTipoContra != null)
|
@if (lTipoContra != null)
|
||||||
{
|
{
|
||||||
@@ -60,6 +60,20 @@
|
|||||||
@* <input class="form-control" id="txtTiCont" value="@persona.IDCONTRATONavigation?.DESCRIPCION" /> *@
|
@* <input class="form-control" id="txtTiCont" value="@persona.IDCONTRATONavigation?.DESCRIPCION" /> *@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<input type="button" value="Guardar Nómina" class="btnOAAFAzul" @onclick="GuardarNomina" />
|
||||||
|
|
||||||
|
<Modal @ref="popupConfirmacion" Title="Confirmar Guardar persona" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||||
|
<BodyTemplate>
|
||||||
|
<p>Se van a dar de alta o modificar datos de la persona seleccionada ¿desea continuar?</p>
|
||||||
|
</BodyTemplate>
|
||||||
|
<FooterTemplate>
|
||||||
|
<Button Color="ButtonColor.Secondary" @onclick="CerrarConfirmacion">Cancelar</Button>
|
||||||
|
|
||||||
|
<Button @onclick="GuardarNomina" Color="ButtonColor.Primary">Aceptar</Button>
|
||||||
|
|
||||||
|
</FooterTemplate>
|
||||||
|
</Modal>
|
||||||
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
||||||
<div>
|
<div>
|
||||||
<Tabs @ref=tabsDtsPer style="margin-top:25px; font-size:12px; gap:0;" OnShown="@(args => OnTabShownAsync(args))">
|
<Tabs @ref=tabsDtsPer style="margin-top:25px; font-size:12px; gap:0;" OnShown="@(args => OnTabShownAsync(args))">
|
||||||
<Tab Title="Nómina" Name="tabNomina">
|
<Tab Title="Nómina" Name="tabNomina">
|
||||||
@@ -125,11 +139,11 @@
|
|||||||
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 1: </label>
|
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 1: </label>
|
||||||
@if (Nomina.IDSINDICATO1Navigation != null)
|
@if (Nomina.IDSINDICATO1Navigation != null)
|
||||||
{
|
{
|
||||||
<input class="form-control" id="txtFecha" @bind-value="@Nomina.IDSINDICATO1Navigation.VALORNUMERICO1" />
|
<input class="form-control" id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO1Navigation.VALORNUMERICO1" />
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<input class="form-control" />
|
<input class="form-control" />
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
@@ -149,7 +163,7 @@
|
|||||||
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 2: </label>
|
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 2: </label>
|
||||||
@if (Nomina.IDSINDICATO2Navigation != null)
|
@if (Nomina.IDSINDICATO2Navigation != null)
|
||||||
{
|
{
|
||||||
<input class="form-control" id="txtFecha" @bind-value="@Nomina.IDSINDICATO2Navigation.VALORNUMERICO1" />
|
<input class="form-control" id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO2Navigation.VALORNUMERICO1" />
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -591,7 +605,7 @@
|
|||||||
@code {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||||
public NOMINATRABAJADORCABECERA Nomina { get; set; } = new NOMINATRABAJADORCABECERA();
|
public static NOMINATRABAJADORCABECERA Nomina { get; set; } = new NOMINATRABAJADORCABECERA();
|
||||||
private HttpClient cliente = new HttpClient();
|
private HttpClient cliente = new HttpClient();
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback OnPersonaActualizada { get; set; }
|
public EventCallback OnPersonaActualizada { get; set; }
|
||||||
@@ -605,10 +619,23 @@
|
|||||||
private List<PERIODOSSILTRA> lSiltra= new List<PERIODOSSILTRA>();
|
private List<PERIODOSSILTRA> lSiltra= new List<PERIODOSSILTRA>();
|
||||||
private ValidationMessageStore? messageStore;
|
private ValidationMessageStore? messageStore;
|
||||||
private string errorMessage = "";
|
private string errorMessage = "";
|
||||||
|
public string nifDesencriptado { get; set; }
|
||||||
|
public int NominaDesencriptada { get; set; }
|
||||||
public string? cl { get; set; } = "";
|
public string? cl { get; set; } = "";
|
||||||
public string? cn { get; set; } = "";
|
public string? cn { get; set; } = "";
|
||||||
private Tabs tabsDtsPer { get; set; } = new Tabs();
|
private Tabs tabsDtsPer { get; set; } = new Tabs();
|
||||||
private Tabs tabsDtsNom { get; set; } = new Tabs();
|
private Tabs tabsDtsNom { get; set; } = new Tabs();
|
||||||
|
private Modal popupConfirmacion = default!;
|
||||||
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
||||||
|
private EditContext editContext = new EditContext(Nomina);
|
||||||
|
private async Task abrirGuardar()
|
||||||
|
{
|
||||||
|
await popupConfirmacion.ShowAsync();
|
||||||
|
}
|
||||||
|
private async Task CerrarConfirmacion()
|
||||||
|
{
|
||||||
|
await popupConfirmacion.HideAsync();
|
||||||
|
}
|
||||||
private async Task OnTabShownAsync(TabsEventArgs args)
|
private async Task OnTabShownAsync(TabsEventArgs args)
|
||||||
{
|
{
|
||||||
var panelActivo = args.ActiveTabName;
|
var panelActivo = args.ActiveTabName;
|
||||||
@@ -626,21 +653,16 @@
|
|||||||
{
|
{
|
||||||
cl = clValue;
|
cl = clValue;
|
||||||
}
|
}
|
||||||
// if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cn", out var cnValue))
|
|
||||||
// {
|
|
||||||
// cn = cnValue;
|
|
||||||
// }
|
|
||||||
|
|
||||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
// ListaSexos = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SEXO");
|
|
||||||
string clDesencriptado = tsUtilidades.crypt.FEncS(cl,
|
string clDesencriptado = tsUtilidades.crypt.FEncS(cl,
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
-875421649);
|
-875421649);
|
||||||
|
|
||||||
var clCn = clDesencriptado.Split("-");
|
var clCn = clDesencriptado.Split("-");
|
||||||
var nifDesencriptado = clCn[0];
|
nifDesencriptado = clCn[0];
|
||||||
var NominaDesencriptada = Int32.Parse(clCn[1]);
|
NominaDesencriptada = Int32.Parse(clCn[1]);
|
||||||
// int NominaDesencriptada = Int32.Parse(tsUtilidades.crypt.FEncS(cn,
|
// int NominaDesencriptada = Int32.Parse(tsUtilidades.crypt.FEncS(cn,
|
||||||
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
@@ -678,8 +700,6 @@
|
|||||||
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private string HashRed(string id)
|
private string HashRed(string id)
|
||||||
{
|
{
|
||||||
string link = "/PeriodoSiltra?cl=" + tsUtilidades.crypt.FEncS(
|
string link = "/PeriodoSiltra?cl=" + tsUtilidades.crypt.FEncS(
|
||||||
@@ -689,8 +709,6 @@
|
|||||||
875421649);
|
875421649);
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task CargarSelects()
|
private async Task CargarSelects()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -712,6 +730,66 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
private async Task GuardarNomina()
|
||||||
|
{
|
||||||
|
CerrarConfirmacion();
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
// ValidarTodos();
|
||||||
|
if (!editContext.GetValidationMessages().Any())
|
||||||
|
|
||||||
|
{
|
||||||
|
if (Nomina.IDNOMINATRABAJADOR== 0)//Nuevo
|
||||||
|
{
|
||||||
|
|
||||||
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/NOMINATRABAJADORCABECERA", Nomina);
|
||||||
|
string link = "/NomPers?cl=" + tsUtilidades.crypt.FEncS(response.IDNOMINATRABAJADOR.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
|
||||||
|
NavigationManager.NavigateTo(link, forceLoad: true);
|
||||||
|
|
||||||
|
}
|
||||||
|
else//Actualizar
|
||||||
|
{
|
||||||
|
// Nomina.IMPORTESEGURO = null;
|
||||||
|
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/NOMINATRABAJADORCABECERA/" + Nomina.IDNOMINATRABAJADOR, Nomina);
|
||||||
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||||
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue)) { cl = clValue; }
|
||||||
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||||
|
var responsePers = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{nifDesencriptado}");
|
||||||
|
if (!responsePers.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception($"Error al obtener los datos de la persona. Código: {responsePers.StatusCode}");
|
||||||
|
}
|
||||||
|
|
||||||
|
var resultContentPers = await responsePers.Content.ReadAsStringAsync();
|
||||||
|
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContentPers) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||||
|
Nomina = Persona.NOMINATRABAJADORCABECERA?.FirstOrDefault(x => x.IDNOMINA == NominaDesencriptada);
|
||||||
|
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Primary,
|
||||||
|
Message = $"Guardado correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var html = "";
|
||||||
|
html += "Revise los errores antes de guardar:";
|
||||||
|
foreach (string m in editContext.GetValidationMessages())
|
||||||
|
{
|
||||||
|
html += "\n" + m + ". ";
|
||||||
|
}
|
||||||
|
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
|
||||||
|
Message = html,
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
using System.Net.Http.Headers;
|
using BlazorBootstrap;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using System.Linq.Expressions;
|
|
||||||
using Serialize.Linq.Serializers;
|
|
||||||
using System.Text;
|
|
||||||
using System.Globalization;
|
|
||||||
using tsDocumentos;
|
|
||||||
using Microsoft.JSInterop;
|
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
//using System.Drawing;
|
//using System.Drawing;
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
|
using DevExpress.DataAccess.Native.Web;
|
||||||
|
using Microsoft.AspNetCore.Components.Forms;
|
||||||
|
using Microsoft.JSInterop;
|
||||||
using MigraDocCore.DocumentObjectModel;
|
using MigraDocCore.DocumentObjectModel;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Serialize.Linq.Serializers;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Text;
|
||||||
|
using tsDocumentos;
|
||||||
|
|
||||||
|
|
||||||
namespace GestionPersonalWeb.Models
|
namespace GestionPersonalWeb.Models
|
||||||
@@ -111,7 +114,7 @@ namespace GestionPersonalWeb.Models
|
|||||||
return default(T);
|
return default(T);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static async Task<T> NuevoObjeto<T>(HttpClient cliente, String uri, T objeto)
|
public static async Task<T> NuevoObjeto<T>(HttpClient cliente, String uri, T objeto, List<ToastMessage> mensajes = null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -122,25 +125,80 @@ namespace GestionPersonalWeb.Models
|
|||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
|
if (mensajes != null)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
var resultContent = await response.Content.ReadAsStringAsync();
|
var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
return JsonConvert.DeserializeObject<T>(resultContent);
|
return JsonConvert.DeserializeObject<T>(resultContent);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (mensajes != null)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = $"{response}",
|
||||||
|
AutoHide = false
|
||||||
|
});
|
||||||
|
}
|
||||||
return default(T);
|
return default(T);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var mess = ex.ToString();
|
var mess = ex.ToString();
|
||||||
|
if (mensajes != null)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"{mess}",
|
||||||
|
AutoHide = false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return default(T);
|
return default(T);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public static async Task<T> ActualizarObjeto<T>(HttpClient cliente, String uri, T objeto)
|
//public static async Task<T> ActualizarObjeto<T>(HttpClient cliente, String uri, T objeto)
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// // Limpiar propiedades de navegación
|
||||||
|
// VaciarPropiedadesDeNavegacion(objeto);
|
||||||
|
|
||||||
|
// // Realizar la solicitud PUT
|
||||||
|
// var response = await cliente.PutAsJsonAsync(uri, objeto);
|
||||||
|
|
||||||
|
// if (response.IsSuccessStatusCode)
|
||||||
|
// {
|
||||||
|
// var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
|
// return JsonConvert.DeserializeObject<T>(resultContent);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Console.WriteLine($"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}");
|
||||||
|
// return default(T);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// catch (Exception ex)
|
||||||
|
// {
|
||||||
|
// var mess = ex.ToString();
|
||||||
|
// return default(T);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
public static async Task<String> ActualizarObjeto<T>(HttpClient cliente, String uri, T objeto, List<ToastMessage> mensajes = null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Limpiar propiedades de navegación
|
// Limpiar propiedades de navegación
|
||||||
VaciarPropiedadesDeNavegacion(objeto);
|
VaciarPropiedadesDeNavegacion(objeto);
|
||||||
|
|
||||||
@@ -149,19 +207,40 @@ namespace GestionPersonalWeb.Models
|
|||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
var resultContent = await response.Content.ReadAsStringAsync();
|
//var resultContent = await response.Content.ReadAsStringAsync();
|
||||||
return JsonConvert.DeserializeObject<T>(resultContent);
|
//return JsonConvert.DeserializeObject<T>(resultContent);
|
||||||
|
|
||||||
|
if (mensajes != null)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Success,
|
||||||
|
Message = $"Guardado Correctamente.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return "Ok";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}");
|
//Console.WriteLine($"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}");
|
||||||
return default(T);
|
//return default(T);
|
||||||
|
|
||||||
|
if (mensajes != null)
|
||||||
|
{
|
||||||
|
mensajes.Add(new ToastMessage
|
||||||
|
{
|
||||||
|
Type = ToastType.Danger,
|
||||||
|
Message = $"{response}",
|
||||||
|
AutoHide = false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return $"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var mess = ex.ToString();
|
var mess = ex.ToString();
|
||||||
return default(T);
|
return mess;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static async Task ExportarExcelEnBrowser<T>(IJSRuntime js, IEnumerable<T> datos, byte[] logoBytes, XLColor headerColor, string nombreFichero)
|
public static async Task ExportarExcelEnBrowser<T>(IJSRuntime js, IEnumerable<T> datos, byte[] logoBytes, XLColor headerColor, string nombreFichero)
|
||||||
@@ -201,6 +280,35 @@ namespace GestionPersonalWeb.Models
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string Encriptar(object valor) {
|
||||||
|
return tsUtilidades.crypt.FEncS(valor.ToString(),
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
875421649);
|
||||||
|
}
|
||||||
|
public static string Desencriptar(object valor) {
|
||||||
|
return tsUtilidades.crypt.FEncS(valor.ToString(),
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||||
|
-875421649);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ListaErroresHtml(IEnumerable<String> lista) {
|
||||||
|
var html = "";
|
||||||
|
html += "Revise los errores antes de guardar:";
|
||||||
|
foreach (string m in lista)
|
||||||
|
{
|
||||||
|
html += "\n" + m + ". ";
|
||||||
|
}
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T ClonarObjeto<T>(T objeto)
|
||||||
|
{
|
||||||
|
var json = System.Text.Json.JsonSerializer.Serialize(objeto);
|
||||||
|
return System.Text.Json.JsonSerializer.Deserialize<T>(json);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@page "/ListadoPersonas"
|
@page "/ListadoPersonas"
|
||||||
@using System.Net.Http.Headers
|
@using System.Net.Http.Headers
|
||||||
@using System.Linq.Expressions
|
@using System.Linq.Expressions
|
||||||
@using Newtonsoft.Json
|
@using Newtonsoft.Json
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using bdAntifraude.db;
|
||||||
|
using bdAntifraude.dbcontext;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Serialize.Linq.Serializers;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using SwaggerAntifraude.Controllers;
|
||||||
|
|
||||||
|
namespace SwaggerAntifraude.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class CONCEPTOSTIPOSPUESTOSTRABAJOController : GenericoController<CONCEPTOSTIPOSPUESTOSTRABAJO, int>
|
||||||
|
{
|
||||||
|
public CONCEPTOSTIPOSPUESTOSTRABAJOController()
|
||||||
|
: base()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public override async Task<IActionResult> GetAll()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||||
|
{
|
||||||
|
var entities = await context.CONCEPTOSTIPOSPUESTOSTRABAJO
|
||||||
|
//.Include(x => x.IDTIPOPERSONANavigation)
|
||||||
|
.AsNoTracking()
|
||||||
|
.ToListAsync();
|
||||||
|
return Ok(entities);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize(Policy = "LecturaPolicy")]
|
||||||
|
[HttpGet("{id}")]
|
||||||
|
public override IActionResult GetById(int id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||||
|
{
|
||||||
|
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||||
|
var entities = context.CONCEPTOSTIPOSPUESTOSTRABAJO
|
||||||
|
.AsNoTracking()
|
||||||
|
.FirstOrDefault(v => v.IDCONCEPTOSTIPOSPUESTOTRABAJO == id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (entities == null)
|
||||||
|
return NotFound();
|
||||||
|
|
||||||
|
return Ok(entities);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,10 +26,10 @@ namespace SwaggerAntifraude.Controllers
|
|||||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||||
{
|
{
|
||||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||||
var entities = context.PERIODOSSILTRA
|
var entities = context.NOMINATRABAJADORCABECERA
|
||||||
.Include(x => x.TRAMOSSILTRA)
|
.Include(x => x.IDPERSONANavigation)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.FirstOrDefault(v => v.IDPERIODOSILTRA == id);
|
.FirstOrDefault(v => v.IDNOMINATRABAJADOR == id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace SwaggerAntifraude.Controllers
|
|||||||
{
|
{
|
||||||
var entities = await context.TIPOSPUESTOSTRABAJO
|
var entities = await context.TIPOSPUESTOSTRABAJO
|
||||||
.Include(x => x.IDTIPOPERSONANavigation)
|
.Include(x => x.IDTIPOPERSONANavigation)
|
||||||
|
.Include(x=> x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x=> x.IDCONCEPTOGENERALNavigation)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
return Ok(entities);
|
return Ok(entities);
|
||||||
@@ -47,13 +48,12 @@ namespace SwaggerAntifraude.Controllers
|
|||||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||||
{
|
{
|
||||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||||
var entities = context.NOMINAS
|
var entities = context.TIPOSPUESTOSTRABAJO
|
||||||
.Include(x => x.IDTIPONavigation)
|
.Include(x => x.IDTIPOPERSONANavigation)
|
||||||
.Include(x => x.IDSITUACIONNOMINANavigation)
|
.Include(x => x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x => x.IDCONCEPTOGENERALNavigation)
|
||||||
//.Include(x => x.NOMINATRABAJADORCABECERA)
|
|
||||||
//.ThenInclude(pr => pr.IDPERSONANavigation)
|
//.ThenInclude(pr => pr.IDPERSONANavigation)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.FirstOrDefault(v => v.IDNOMINAS == id);
|
.FirstOrDefault(v => v.IDTIPOPUESTO == id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1631,11 +1631,19 @@ namespace bdAntifraude.db
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public double IMPORTESEGURO
|
public double? IMPORTESEGURO
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return (double)(this.IDPERSONANavigation.SEGUROACCIDENTE);
|
if (this.IDPERSONANavigation != null)
|
||||||
|
{
|
||||||
|
return (double)(this.IDPERSONANavigation.SEGUROACCIDENTE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user