@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


<Grid TItem="ENFERMEDADES"
      Class="table tablaRegPers"
      Data="listEnf"
      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="ENFERMEDADES" HeaderText="Nombre">
            @context.IDPERSONANavigation?.APELLIDOSNOMBRE
        </GridColumn>       
        <GridColumn TItem="ENFERMEDADES" HeaderText="Fecha Inicio">
            @context.FECHAINICIO
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Fecha Fin">
            @context.FECHAFIN
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Base">
            @context.BASE
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Tipo">
            @context.IDTIPONavigation.DESCRIPCION
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Continuidad">
            @if (context.CONTINUIDAD == true)
            {
                <i class="fa-regular fa-square-check"></i>
            }
            else { }
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Nómina Normal">
            @if (context.NOMINANORMAL == true)
            {
                <i class="fa-regular fa-square-check"></i>
            }
            else { }
        </GridColumn>
        <GridColumn TItem="ENFERMEDADES" HeaderText="Nómina Seguridad Social">
            @if (context.NOMINASEGURIDADSOCIAL== true)
            {
                <i class="fa-regular fa-square-check"></i>
            }
            else { }
        </GridColumn>
    </GridColumns>

</Grid>

@code {
    [Parameter]
    public NOMINAS Nomina { get; set; } = new NOMINAS();
    public int? idNom { get; set; }
    [Parameter]
    public EventCallback OnPersonaActualizada { get; set; }

    private List<ENFERMEDADES> listEnf = new List<ENFERMEDADES>();

    protected override async Task OnInitializedAsync()
    {
        if (Nomina?.IDNOMINAS != null && Nomina.IDNOMINAS > 0)
        {
            await ObtListaNom();
        }
        else
        {
            Console.WriteLine("Persona no está completamente cargada.");
        }
    }
    private async Task ObtListaNom()
    {
        try
        {
            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"));
            idNom = Nomina.IDNOMINAS;
            Expression<Func<ENFERMEDADES, bool>> filtro = x => (Nomina.FECHAFIN >= x.FECHAINICIO && x.FECHAFIN.HasValue == false) ||  (x.FECHAINICIO <= Nomina.FECHAFIN && x.FECHAFIN >= Nomina.FECHAINICIO);
            var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
            var TDExpression = serializer.SerializeText(filtro);
            var TDjsonContent = JsonConvert.SerializeObject(new { Expression = TDExpression });
            var TDcontent = new StringContent(TDjsonContent, Encoding.UTF8, "application/json");
            var TDresponse = await client.PostAsync("/api/OTRASRETRIBUCIONES/filtrar", TDcontent);
            var TDCont = await TDresponse.Content.ReadAsStringAsync();
            listEnf = JsonConvert.DeserializeObject<List<ENFERMEDADES>>(TDCont) ?? new List<ENFERMEDADES>();

            // listOR = listOR
            //    .
            //    .ToList();


        }

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


        // listPersonas = personas;
    }


}
