Creacion del Fichero Maestro "Tipos puestos trabajo" y sus ventanas
This commit is contained in:
@@ -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">
|
||||
<button @onclick="@(() => abrirPopupModificacion(new CONCEPTOSTIPOSPUESTOSTRABAJO(), true))" class="btnOAAFAzul">Nuevo </button>
|
||||
<div class="cabecera">
|
||||
<h6 style="padding-top: 13px;padding-left: 15px;">
|
||||
<b>Conceptos Tipos Puestos de Trabajo</b>
|
||||
</h6>
|
||||
</div>
|
||||
</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="" class="fw-bold">Descripción: </label>
|
||||
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.DESCRIPCION" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<label for="" class="fw-bold">Importe: </label>
|
||||
<input class="form-control" id="txtEImporte" @bind-value="@ItemEnEdicion.IMPORTE" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label for="" 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="" class="fw-bold">Aplicación Presupuestaria: </label>
|
||||
<input class="form-control" id="txtEAP" @bind-value="@ItemEnEdicion.APLICACIONPRESUPUESTARIA" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<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-6">
|
||||
<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>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<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-6">
|
||||
<label for="" class="fw-bold">Deducciones: </label>
|
||||
<input type="checkbox" class="form-check" id="chkEDeducciones" checked="@ItemEnEdicion.DEDUCCIONES" @bind-value="@ItemEnEdicion.DEDUCCIONES" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label for="" class="fw-bold">Extra: </label>
|
||||
<input type="checkbox" class="form-check" id="chkEEXtra" checked="@ItemEnEdicion.EXTRA" @bind-value="@ItemEnEdicion.EXTRA" />
|
||||
</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
|
||||
|
||||
<div class="pagina">
|
||||
<div class="Cabecera">
|
||||
<h6><small><i class="fas fa-user"></i><b> Tipos puesto de trabajo</b></small></h6>
|
||||
<div class="d-flex">
|
||||
<a href="/TipoPuestoTrabajo" class="btnOAAFAzul">Nuevo </a>
|
||||
<div class="cabecera">
|
||||
<h6 style="padding-top: 13px;padding-left: 15px;">
|
||||
<b>Conceptos Tipos Puestos de Trabajo</b>
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (lPuestos == null)
|
||||
@@ -54,6 +59,9 @@
|
||||
Responsive="true"
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
<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">
|
||||
<NavLink class="btn btn-link" href="@HashRed(context.IDTIPOPUESTO.ToString())">@context.DESCRIPCION</NavLink>
|
||||
</GridColumn>
|
||||
@@ -186,7 +194,7 @@
|
||||
// }
|
||||
private string HashRed(string id)
|
||||
{
|
||||
string link = "/infoPers?cl=" + tsUtilidades.crypt.FEncS(
|
||||
string link = "/TipoPuestoTrabajo?cl=" + tsUtilidades.crypt.FEncS(
|
||||
id,
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
if (persona.IDFICHEROFOTO != null)
|
||||
{
|
||||
var responsef = await Utilidades.ActualizarObjeto(cliente, "/api/FICHEROS/" + fi.IDFICHERO, fi);
|
||||
persona.IDFICHEROFOTO = responsef.IDFICHERO;
|
||||
//persona.IDFICHEROFOTO = responsef.IDFICHERO;
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
using System.Net.Http.Headers;
|
||||
using Newtonsoft.Json;
|
||||
using System.Linq.Expressions;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
using tsDocumentos;
|
||||
using Microsoft.JSInterop;
|
||||
using BlazorBootstrap;
|
||||
using ClosedXML.Excel;
|
||||
//using System.Drawing;
|
||||
using ClosedXML.Excel;
|
||||
using DevExpress.DataAccess.Native.Web;
|
||||
using Microsoft.AspNetCore.Components.Forms;
|
||||
using Microsoft.JSInterop;
|
||||
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
|
||||
@@ -111,7 +114,7 @@ namespace GestionPersonalWeb.Models
|
||||
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
|
||||
{
|
||||
@@ -122,22 +125,77 @@ namespace GestionPersonalWeb.Models
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
if (mensajes != null)
|
||||
{
|
||||
mensajes.Add(new ToastMessage
|
||||
{
|
||||
Type = ToastType.Success,
|
||||
Message = $"Guardado Correctamente.",
|
||||
});
|
||||
}
|
||||
var resultContent = await response.Content.ReadAsStringAsync();
|
||||
return JsonConvert.DeserializeObject<T>(resultContent);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mensajes != null)
|
||||
{
|
||||
mensajes.Add(new ToastMessage
|
||||
{
|
||||
Type = ToastType.Danger,
|
||||
Message = $"{response}",
|
||||
AutoHide = false
|
||||
});
|
||||
}
|
||||
return default(T);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var mess = ex.ToString();
|
||||
if (mensajes != null)
|
||||
{
|
||||
mensajes.Add(new ToastMessage
|
||||
{
|
||||
Type = ToastType.Success,
|
||||
Message = $"{mess}",
|
||||
AutoHide = false
|
||||
});
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
@@ -149,19 +207,40 @@ namespace GestionPersonalWeb.Models
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var resultContent = await response.Content.ReadAsStringAsync();
|
||||
return JsonConvert.DeserializeObject<T>(resultContent);
|
||||
//var resultContent = await response.Content.ReadAsStringAsync();
|
||||
//return JsonConvert.DeserializeObject<T>(resultContent);
|
||||
|
||||
if (mensajes != null)
|
||||
{
|
||||
mensajes.Add(new ToastMessage
|
||||
{
|
||||
Type = ToastType.Success,
|
||||
Message = $"Guardado Correctamente.",
|
||||
});
|
||||
}
|
||||
return "Ok";
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}");
|
||||
return default(T);
|
||||
//Console.WriteLine($"Error al actualizar: {response.StatusCode}, {await response.Content.ReadAsStringAsync()}");
|
||||
//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)
|
||||
{
|
||||
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)
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
var entities = await context.TIPOSPUESTOSTRABAJO
|
||||
.Include(x => x.IDTIPOPERSONANavigation)
|
||||
.Include(x=> x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x=> x.IDCONCEPTOGENERALNavigation)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
@@ -47,13 +48,12 @@ namespace SwaggerAntifraude.Controllers
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.NOMINAS
|
||||
.Include(x => x.IDTIPONavigation)
|
||||
.Include(x => x.IDSITUACIONNOMINANavigation)
|
||||
//.Include(x => x.NOMINATRABAJADORCABECERA)
|
||||
var entities = context.TIPOSPUESTOSTRABAJO
|
||||
.Include(x => x.IDTIPOPERSONANavigation)
|
||||
.Include(x => x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x => x.IDCONCEPTOGENERALNavigation)
|
||||
//.ThenInclude(pr => pr.IDPERSONANavigation)
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDNOMINAS == id);
|
||||
.FirstOrDefault(v => v.IDTIPOPUESTO == id);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user