@page "/NomPers"
@* @page "/NomPers/{cl}" *@
@using System.Net.Http.Headers
@using System.Linq.Expressions
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using Microsoft.AspNetCore.WebUtilities
@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 ProtectedSessionStorage ProtectedSessionStore
@inject UserState UserState

<div class="row mb-3 mt-4" style=" padding: 20px;border:solid 1px grey">
    <div class="col-md-6">
        <label for="txtApellidos" class="fw-bold widthLabel li-height50">Apellidos: </label>
        <input class="form-control" readonly="readonly"  id="txtApellidos" @bind-value="@Persona.APELLIDOS" />
    </div>
    <div class="col-md-6">
        <label for="txtNombre" class="fw-bold widthLabel li-height50">Nombre: </label>
        <input class="form-control" readonly="readonly" id="txtNombre" @bind-value="@Persona.NOMBRE" />
    </div>
    <div class="col-md-4">
        <label for="txtNIF" class="fw-bold widthLabel li-height50">DNI: </label>
        <input class="form-control" readonly="readonly" id="txtNIF" @bind-value="@Persona.NIF" />
    </div>
    <div class="col-md-4">
        <label for="txtsexo" class="fw-bold  widthLabel li-height50">Sexo: </label>
        <InputSelect readonly="readonly" @bind-Value="Persona.IDSEXO" class="form-select">
            <option value="">Seleccionar</option>
            @if (lSexo != null)
            {
                @foreach (var enumera in lSexo)
                {
                    <option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
                }
            }
        </InputSelect>
    </div>
    <div class="col-md-4">
        <label for="txtTiCont" class="fw-bold widthLabel li-height50">Tipo Contrato: </label>
        <InputSelect readonly="readonly" @bind-Value="Persona.IDCONTRATO" class="form-select">
            <option value="">Seleccionar</option>
            @if (lTipoContra != null)
            {
                @foreach (var enumera in lTipoContra)
                {
                    <option value="@enumera.IDCONTRATO"> @enumera.CODIGO - @enumera.DESCRIPCION</option>
                }
            }
        </InputSelect>
        @* <input class="form-control" id="txtTiCont"   value="@persona.IDCONTRATONavigation?.DESCRIPCION" /> *@
    </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>
    <Tabs @ref=tabsDtsPer style="margin-top:25px; font-size:12px; gap:0;" OnShown="@(args => OnTabShownAsync(args))">
        <Tab Title="Nómina" Name="tabNomina">
            <Content>
                <div class="row">
                    <div class="col-md-4">
                        <label for="txtCodigo" class="fw-bold widthLabel li-height50">Código: </label>
                        @if (Nomina.IDNOMINANavigation != null)
                        {
                            <input class="form-control"   id="txtCodigo" @bind-value="@Nomina.IDNOMINANavigation.DESCRIPCION" />
                        }
                        else
                        {
                            <input class="form-control"   id="txtCodigo" />
                        }
                    </div>
                    <div class="col-md-2">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Fecha: </label>
                        <input type="date" class="form-control"   id="txtFecha" @bind-value="@Nomina.FECHA" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Nº Pluriempleo: </label>
                        <input class="form-control"   id="txtFecha" @bind-value="@Nomina.NUMEROPLURIEMPLEO" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Grupo: </label>
                        @if (Nomina.IDGRUPOFUNCIONARIONavigation != null)
                        {
                            <input class="form-control"   id="txtFecha" @bind-value="@Nomina.IDGRUPOFUNCIONARIONavigation.DESCRIPCION" />
                        }
                        else
                        {
                            <input class="form-control"   id="txtFecha" />
                        }
                    </div>
                    <div class="col-md-2">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Nivel: </label>
                        <input class="form-control"   id="txtFecha" @bind-value="@Nomina.NIVEL" />
                    </div>
                   @*  <div class="col-md-4"></div> *@
                    <div class="col-md-11">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Observaciones: </label>
                        <input class="form-control"   id="txtFecha" @bind-value="@Nomina.OBSERVACIONES" />
                    </div>
                    <div class="col-md-1 d-flex gap-2 align-items-end">
                        <label for="txtFecha" class="fw-bold widthLabel align-content-end">Acumulada: </label>
                        <input type="checkbox" class=""   id="txtFecha" @bind-value="@Nomina.ACUMULADA" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtFecha" class="fw-bold widthLabel  li-height50">Sindicato 1: </label>
                        <InputSelect @bind-Value="Nomina.IDSINDICATO1" class="form-select">
                            <option value="">Seleccionar</option>
                            @if (lSindicato != null)
                            {
                                @foreach (var enumera in lSindicato)
                                {
                                    <option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
                                }
                            }
                        </InputSelect>
                    </div>
                    <div class="col-md-3">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 1: </label>
                        @if (Nomina.IDSINDICATO1Navigation != null)
                        {
                            <input class="form-control"   id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO1Navigation.VALORNUMERICO1" />
                        }
                        else
                        {
                            <input class="form-control" />
                        }
                    </div>
                    <div class="col-md-3">
                        <label for="txtFecha" class="fw-bold widthLabel  li-height50">Sindicato 2: </label>
                        <InputSelect @bind-Value="Nomina.IDSINDICATO2" class="form-select">
                            <option value="">Seleccionar</option>
                            @if (lSindicato != null)
                            {
                                @foreach (var enumera in lSindicato)
                                {
                                    <option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
                                }
                            }
                        </InputSelect>
                    </div>
                    <div class="col-md-3">
                        <label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 2: </label>
                        @if (Nomina.IDSINDICATO2Navigation != null)
                        {
                            <input class="form-control"   id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO2Navigation.VALORNUMERICO1" />
                        }
                        else
                        {
                            <input class="form-control"   />
                        }
                    </div>

                </div>
            </Content>
        </Tab>
        <Tab Title="Porcentajes" Name="tabPorcentajes">
            <Content>
                <div class="row">
                    <div class="col-md-4">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Pluriempleo: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.PLURIEMPLEO" />
                    </div>
                    <div class="col-md-4">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Reducción Jornada: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.REDUCCIONJORNADA" />
                    </div>
                    <div class="col-md-4">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Trabajo Tiempo Parcial: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TRABAJOTIEMPOPARCIAL" />
                    </div>
                </div>
            </Content>
        </Tab>
        <Tab Title="Totales" Name="tabTotales">
            <Content>
                <div class="row">
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total devengado: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALDEVENGADO" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total liquido: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALLIQUIDO" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total Seguridad Social: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALSEGURIDADSOCIAL" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total haberes: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALHABERES" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total pago en especie: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALPAGOESPECIE" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total deducciones: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALDEDUCCIONES" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Otras deducciones: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.OTRASDEDUCCIONES" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total IRPF: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALIRPF" />
                    </div>
                </div>
            </Content>
        </Tab>
        <Tab Title="Días" Name="tabDias">
            <Content>
                <div class="row">
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días efectivos: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASEFECTIVOS" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días enfermos: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASENFERMOS" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días accidentes: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASACCIDENTES" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días permisos sin retribuir: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASPERMISOSSINRETRIBUIR" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días maternidad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASMATERNIDAD" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días base pago directo: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASBASEPAGODIRECTO" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días falta: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASFALTA" />
                    </div>
                    <div class="col-md-3">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días de paga liquidados: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASDEPAGALIQUIDADOS" />
                    </div>
                </div>
            </Content>
        </Tab>
        <Tab Title="Seguridad Social" Name="tabSeguridadSocial">
            <Content>
                <div class="row">
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Concepto: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALSEGURIDADSOCIALCONCEPTO" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Prorrata paga extra: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.PRORRATAPAGAEXTRA" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Prorrata productividad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.PRORRATAPRODUCTIVIDAD" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base CC activo: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASECCACTI" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base días permiso no retribuido: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEDPNR" />
                    </div>
                    <div class="col-md-2">
                    </div>
                    @* --------------------------------- *@
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Total seguridad social pago en especie: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALSEGURIDADSOCIALPAGOENESPECIE" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Epigrafe 126: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALEPIGRAFE126" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Maternidad/Paternidad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALMATERNIDADPATERNIDAD" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base D y FP activo: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEDYFPACTI" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Permisos sin retribuir: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.TOTALPERMISOSINRETRIBUIR" />
                    </div>
                    <div class="col-md-2">
                    </div>
                    @* --------------------------------- *@
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días accidentes: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASACCIDENTES" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base accidentes: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEACCIDENTES" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base pago directo: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEPAGODIRECTO" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base CC enfermedad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASECCENF" />
                    </div>
                    <div class="col-md-4">
                    </div>
                    @* --------------------------------- *@
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días enfermedad al 60: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASENFERMEDADAL60" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base enfermedad al 60: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEENFERMEDADAL60" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base S.S. 100%: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASESEGURIDADSOCIAL100X100" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base D y FP enfermedad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEDYFPENF" />
                    </div>
                    <div class="col-md-4">
                    </div>
                    @* --------------------------------- *@
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días enfermedad al 75: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASENFERMEDADAL75" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Días enfermedad al 75: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.DIASENFERMEDADAL75" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Base maternidad: </label>
                        <input class="form-control"   id="txtNIF" @bind-value="@Nomina.BASEMATE" />
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Mutua: </label>
                        <InputSelect @bind-Value="Nomina.IDMUTUA" class="form-select">
                            <option value="">Seleccionar</option>
                            @if (lMutua != null)
                            {
                                @foreach (var enumera in lMutua)
                                {
                                    <option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
                                }
                            }
                        </InputSelect>
                    </div>
                    <div class="col-md-2">
                        <label for="txtNIF" class="fw-bold widthLabel li-height50">Mutua 2: </label>
                        <InputSelect @bind-Value="Nomina.IDMUTUA2" class="form-select">
                            <option value="">Seleccionar</option>
                            @if (lMutua != null)
                            {
                                @foreach (var enumera in lMutua)
                                {
                                    <option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
                                }
                            }
                        </InputSelect>
                    </div>
                    <div class="col-md-2">
                    </div>
                </div>
            </Content>
        </Tab>
    </Tabs>
</div>
<div>
    <Tabs @ref=tabsDtsNom style="margin-top:25px; font-size:12px; gap:0;" OnShown="@(args => OnTabShownAsync(args))">
        <Tab Title="Conceptos" Name="tabConceptos">
            <Content>
                <div>
                    <Grid TItem="NOMINATRABAJADORLINEA"
                          Class="table tablaRegPers"
                          Data="lConceptos"
                          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="NOMINATRABAJADORLINEA" HeaderText="Descripción concepto">
                                @context.DESCRIPCIONCONCEPTO
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Cantidad">
                                @context.CANTIDAD
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Importe">
                                @context.IMPORTE
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Retribuciones">
                                @context.TOTALRETRIBUCIONES
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Deducciones">
                                @context.TOTALDEDUCCIONES
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Concepto al 100">
                                @context.CONCEPTOAL100
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Aplicacion presupuestaria">
                                @context.APLICACIONPRESUPUESTARIA
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Reducción jornada">                               
                                @if (context.REDUCCIONJORNADA == 1)
                                {
                                    <i class="fa-regular fa-square-check"></i>
                                }
                                else { }
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Trabajo a tiempo parcial">                                
                                @if (context.TRABAJOATIEMPOPARCIAL == 1)
                                {
                                    <i class="fa-regular fa-square-check"></i>
                                }
                                else { }
                            </GridColumn>
                        </GridColumns>

                    </Grid>
                </div>
            </Content>
        </Tab>
        <Tab Title="Pagos en especie" Name="tabPagosEspecie">
            <Content>
                <div>
                    <Grid TItem="NOMINATRABAJADORPAGOESPECIE"
                          Class="table tablaRegPers"
                          Data="lPagoEspecie"
                          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="NOMINATRABAJADORPAGOESPECIE" HeaderText="Descripción">
                                @context.DESCRIPCION
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Importe">
                                @context.IMPORTE    
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Cuota">
                                @context.CUOTA
                            </GridColumn>
                            <GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Seguridad Social">
                                @context.SEGURIDADSOCIAL
                            </GridColumn>
                        </GridColumns>

                    </Grid>
                </div>
            </Content>
        </Tab>
        <Tab Title="Incidencias" Name="tabIncidencias">
            <Content>
                <div>
                    <Grid TItem="INCIDENCIAS"
                          Class="table tablaRegPers"
                          Data="lIncidencias"
                          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="INCIDENCIAS" HeaderText="Concepto">
                                @context.IDCONCEPTONOMINANavigation.DESCRIPCION
                            </GridColumn>
                            <GridColumn TItem="INCIDENCIAS" HeaderText="Cantidad">
                                @context.CANTIDAD
                            </GridColumn>
                            <GridColumn TItem="INCIDENCIAS" HeaderText="Importe">
                                @context.IMPORTE
                            </GridColumn>
                            <GridColumn TItem="INCIDENCIAS" HeaderText="IRPF">
                                @context.IRPF
                            </GridColumn>
                       
                        </GridColumns>

                    </Grid>
                </div>
            </Content>
        </Tab>
        <Tab Title="Periodos SILTRA" Name="tabSiltra">
            <Content>
                <div>
                    <Grid TItem="PERIODOSSILTRA"
                          Class="table tablaRegPers"
                          Data="lSiltra"
                          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="PERIODOSSILTRA" HeaderText="Fecha inicio">
                                <NavLink class="btn btn-link" href="@HashRed(context.IDPERIODOSILTRA.ToString())">@context.FECHAINICIO.ToString().Substring(0,10)</NavLink>                         
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Fecha fin">
                                @context.FECHAFIN
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Días">
                                @context.DIAS
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Contrato">
                                @context.IDCONTRATONavigation?.DESCRIPCION
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Grupo tarifa">
                                @context.GRUPOTARIFA
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="CNAE">
                                @context.CNAE
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Reducción jornada">
                                @context.REDUCCIONJORNADA
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Tipo periodo tramo">
                                @context.TIPOPERIODOSTRAMOS
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Tipo liquidación">
                                @context.TIPOLIQUIDACION
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Nº días IRPF">
                                @context.NUMERODIASIRPF
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Importe IRPF">
                                @context.IMPORTEIRPF
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Estado">
                                @context.IDESTADONavigation?.DESCRIPCION
                            </GridColumn>
                            <GridColumn TItem="PERIODOSSILTRA" HeaderText="Número liquidación">
                                @context.NUMEROLIQUIDACION
                            </GridColumn>
                        </GridColumns>

                    </Grid>
                </div>
            </Content>
        </Tab>
    </Tabs>
</div>



@code {
    [Parameter]
    public PERSONAS Persona { get; set; } = new PERSONAS();
    public static NOMINATRABAJADORCABECERA Nomina { get; set; } = new NOMINATRABAJADORCABECERA();
    private HttpClient cliente = new HttpClient();
    [Parameter]
    public EventCallback OnPersonaActualizada { get; set; }
    private List<ENUMERACIONES> lSexo = new List<ENUMERACIONES>();
    private List<CONTRATOS> lTipoContra = new List<CONTRATOS>();
    private List<ENUMERACIONES> lSindicato = new List<ENUMERACIONES>();
    private List<ENUMERACIONES> lMutua = new List<ENUMERACIONES>();
    private List<NOMINATRABAJADORLINEA> lConceptos = new List<NOMINATRABAJADORLINEA>();
    private List<NOMINATRABAJADORPAGOESPECIE> lPagoEspecie= new List<NOMINATRABAJADORPAGOESPECIE>();
    private List<INCIDENCIAS> lIncidencias= new List<INCIDENCIAS>();
    private List<PERIODOSSILTRA> lSiltra= new List<PERIODOSSILTRA>();
    private ValidationMessageStore? messageStore;
    private string errorMessage = "";
    public string nifDesencriptado { get; set; }
    public int NominaDesencriptada { get; set; }
    public string? cl { get; set; } = "";
    public string? cn { get; set; } = "";
    private Tabs tabsDtsPer { 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)
    {
        var panelActivo = args.ActiveTabName;

        await ProtectedSessionStore.SetAsync("ultiTabNom", panelActivo);

    }
    protected override async Task OnInitializedAsync()
    {
        try
        {
            var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);

            if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue))
            {
                cl = clValue;
            }      
            cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);

            string clDesencriptado = tsUtilidades.crypt.FEncS(cl,
                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
                -875421649);

            var clCn = clDesencriptado.Split("-");
            nifDesencriptado = clCn[0];
            NominaDesencriptada = Int32.Parse(clCn[1]);
            // int NominaDesencriptada = Int32.Parse(tsUtilidades.crypt.FEncS(cn,
            //     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
            //     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
            //     -875421649));




            var response = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{nifDesencriptado}");
            if (!response.IsSuccessStatusCode)
            {
                throw new Exception($"Error al obtener los datos de la persona. Código: {response.StatusCode}");
            }

            var resultContent = await response.Content.ReadAsStringAsync();
            Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
            Nomina = Persona.NOMINATRABAJADORCABECERA?.FirstOrDefault(x => x.IDNOMINA == NominaDesencriptada);
            lConceptos = new List<NOMINATRABAJADORLINEA>();
            foreach (var lin in Nomina.NOMINATRABAJADORLINEA){lConceptos.Add(lin);}
            lPagoEspecie = new List<NOMINATRABAJADORPAGOESPECIE>();
            foreach(var pag in Nomina.NOMINATRABAJADORPAGOESPECIE){lPagoEspecie.Add(pag);}
            lIncidencias = new List<INCIDENCIAS>();
            foreach (var pag in Nomina.INCIDENCIAS) { lIncidencias.Add(pag); }
            lSiltra = new List<PERIODOSSILTRA>();
            foreach (var pag in Nomina.PERIODOSSILTRA) { lSiltra.Add(pag); }
            // lblNombre = persona.NOMBRE + " " + Persona.APELLIDOS;



            await CargarSelects();
        }
        catch (Exception ex)
        {
            errorMessage = ex.Message;
            Console.WriteLine($"Error durante la inicialización: {ex.Message}");
        }
    }
    private string HashRed(string id)
    {
        string link = "/PeriodoSiltra?cl=" + tsUtilidades.crypt.FEncS(
            id,
            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
            875421649);
        return link;
    }
    private async Task CargarSelects()
    {
        try
        {

            lSexo = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SEXO");
            lSindicato = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SIND");
            lMutua = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/MUT");
            // lTipoContra = await Utilidades.ObtenerObjeto<List<CONTRATOS>>(cliente, "/api/CONTRATOS");
            var responseTipCon = await cliente.GetAsync("/api/CONTRATOS/");
            if (responseTipCon.IsSuccessStatusCode) { lTipoContra = JsonConvert.DeserializeObject<List<CONTRATOS>>(await responseTipCon.Content.ReadAsStringAsync()); }

            StateHasChanged();
        }
        catch (Exception ex)
        {
            errorMessage = ex.Message;
            Console.WriteLine($"Error durante la inicialización: {ex.Message}");
        }

    }
    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,

            });

        }

    }


}
