Files
Antifraude.Net/Antifraude.Net/GestionPersonalWeb/Components/Pages/InfoPersComponents/HuelgasGrid.razor

224 lines
8.9 KiB
Plaintext

@using System.Net.Http.Headers
@using System.Linq.Expressions
@using Newtonsoft.Json
@using System.Text
@using Serialize.Linq.Serializers
@using GestionPersonalWeb.Models
@using BlazorBootstrap
@using bdAntifraude.db
@using Microsoft.AspNetCore.Components
@rendermode InteractiveServer
@inject IJSRuntime JS
@inject NavigationManager NavigationManager
@inject IHttpClientFactory HttpClientFactory
@inject IHttpContextAccessor HttpContextAccessor
@inject UserState UserState
<div class="tablaTabLateral">
<input type="button" value="Nueva Huelga" @onclick="@(() => abrirPopupModificacion(new HUELGAS(), true))" class="mb-2 btnOAAFBlack" />
<div style="overflow-x:auto;" class="tablaDesk">
<Grid TItem="HUELGAS"
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="HUELGAS" HeaderText="Fecha Inicio">
@context.FECHAINICIO?.ToString("dd/MM/yyyy")
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Fecha Fin">
@context.FECHAFIN?.ToString("dd/MM/yyyy")
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Horas">
@context.HORAS
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Nómina Origen de Datos">
@context.IDNOMINAORIGENDATOSNavigation?.DESCRIPCION
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Nómina Aplicación">
@context.IDNOMINAAPLICACIONNavigation?.DESCRIPCION
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Observaciones">
@context.OBSERVACIONES
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Nómina Normal">
@if (context.NOMINANORMAL)
{
<i class="fa-regular fa-square-check"></i>
}
</GridColumn>
<GridColumn TItem="HUELGAS" HeaderText="Nómina Seguridad Social">
@if (context.NOMINASEGURIDADSOCIAL)
{
<i class="fa-regular fa-square-check"></i>
}
</GridColumn>
</GridColumns>
</Grid>
</div>
</div>
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
<BodyTemplate>
<div class="row">
<div class="col-md-6 mb-2">
<label class="fw-bold">Fecha inicio</label>
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAINICIO" />
</div>
<div class="col-md-6 mb-2">
<label class="fw-bold">Fecha fin</label>
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAFIN" />
</div>
<div class="col-md-12 mb-2">
<label for="txtEDesc" class="fw-bold">Nómina Origen de Datos: </label>
<input list="listOD" id="selCon" @bind-value="@itmNomOD" type="text" style="width:100%" class="form-control" placeholder="Nómina Origen de Datos" />
<datalist id="listOD">
@foreach (NOMINAS con in lNominas)
{
<option data-value="@con.IDNOMINAS">@con.DESCRIPCION</option>
}
</datalist>
</div>
<div class="col-md-12 mb-2">
<label for="txtEDesc" class="fw-bold">Nómina Aplicación: </label>
<input list="listCon" id="selCon" @bind-value="@itmNomAp" type="text" style="width:100%" class="form-control" placeholder="Nómina Aplicación" />
<datalist id="listCon">
@foreach (NOMINAS con in lNominas)
{
<option data-value="@con.IDNOMINAS">@con.DESCRIPCION</option>
}
</datalist>
</div>
<div class="col-md-12 mb-2">
<label for="txtEDesc" class="fw-bold">Observaciones: </label>
<input class="form-control" type="text" @bind-value="ItemEnEdicion.OBSERVACIONES" />
</div>
<div class="col-md-12" style="display:flex; justify-content:space-between">
<label for="txtEDesc" class="fw-bold">Nomina normal: </label>
<input class="" type="checkbox" id="chbNominaNormal" checked="@ItemEnEdicion.NOMINANORMAL" />
<label for="txtEDesc" class="fw-bold">Nomina seguridad social: </label>
<input class="" type="checkbox" id="chbNominaSS" checked="@ItemEnEdicion.NOMINASEGURIDADSOCIAL" />
</div>
</div>
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
@if (ItemEnEdicion.IDHUELGA != 0)
{
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
}
else
{
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
}
</FooterTemplate>
</Modal>
@code {
[Parameter]
public PERSONAS Persona { get; set; } = new PERSONAS();
private Modal popupGestionDatos = default;
private HttpClient cliente = new HttpClient();
private string itmNomOD { get; set; }
private string itmNomAp { get; set; }
[Parameter]
public EventCallback OnPersonaActualizada { get; set; }
private List<HUELGAS> itmList = new List<HUELGAS>();
private List<NOMINAS> lNominas = new List<NOMINAS>();
private HUELGAS ItemEnEdicion { get; set; } = new HUELGAS();
protected override async Task OnInitializedAsync()
{
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
await CargarListas();
}
private async Task CargarListas()
{
itmList.Clear();
try
{
var listnom = Persona.HUELGAS;
foreach (HUELGAS i in listnom) { itmList.Add(i); }
var lNomi = await Utilidades.ObtenerObjeto<List<NOMINAS>>(cliente, "/api/NOMINAS");
lNominas = lNomi.OrderBy(x => x.FECHAINICIO).ToList();
}
catch (Exception e)
{
Console.WriteLine($"Error al obtener los datos: {e.Message}");
}
}
private async Task GestionarDatos(bool tipo)
{
var inci = ItemEnEdicion;
inci.IDNOMINAAPLICACION = lNominas.FirstOrDefault(x => x.DESCRIPCION == itmNomAp).IDNOMINAS;
inci.IDNOMINAORIGENDATOS = lNominas.FirstOrDefault(x => x.DESCRIPCION == itmNomOD).IDNOMINAS;
if (tipo == true)
{
inci.IDHUELGA = 0;
}
inci.IDPERSONA = Persona.IDPERSONA;
string chbNominaNormal = "chbNominaNormal";
inci.NOMINANORMAL = await JS.InvokeAsync<bool>("obtenerCheck", chbNominaNormal);
string chbNominaSS = "chbNominaSS";
inci.NOMINASEGURIDADSOCIAL = await JS.InvokeAsync<bool>("obtenerCheck", chbNominaSS);
if (inci.IDHUELGA != 0)
{
var response = await Utilidades.ActualizarObjeto(cliente, "/api/HUELGAS/" + inci.IDHUELGA, inci);
}
else
{
var response = await Utilidades.NuevoObjeto(cliente, "/api/HUELGAS/", inci);
}
await cerrarPopupModificacion();
var response1 = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{Persona.NIF}");
if (!response1.IsSuccessStatusCode)
{
throw new Exception($"Error al obtener los datos de la persona. Código: {response1.StatusCode}");
}
var resultContent = await response1.Content.ReadAsStringAsync();
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
await CargarListas();
}
private async Task abrirPopupModificacion(HUELGAS objeto, bool esNuevo)
{
if (objeto.IDHUELGA != 0)
{
itmNomOD = objeto.IDNOMINAORIGENDATOSNavigation.DESCRIPCION;
itmNomAp = objeto.IDNOMINAAPLICACIONNavigation?.DESCRIPCION;
}
else
{
itmNomAp = "";
itmNomOD = "";
}
ItemEnEdicion = objeto;
await popupGestionDatos.ShowAsync();
}
private async Task cerrarPopupModificacion()
{
await popupGestionDatos.HideAsync();
}
}