@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 Enfermedad" @onclick="@(() => abrirPopupModificacion(new ENFERMEDADES(), true))" class="mb-2 btnOAAFBlack" />
<div style="overflow-x:auto;" class="tablaDesk">
      <Grid TItem="ENFERMEDADES"
            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="ENFERMEDADES" HeaderText="">
                    <button @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
                </GridColumn>
              <GridColumn TItem="ENFERMEDADES" HeaderText="Fecha Inicio">
                  @context.FECHAINICIO?.ToString("dd/MM/yyyy")
              </GridColumn>
            <GridColumn TItem="ENFERMEDADES" HeaderText="Fecha Fin">
                @context.FECHAFIN?.ToString("dd/MM/yyyy")
            </GridColumn>
            <GridColumn TItem="ENFERMEDADES" HeaderText="Base">
                @context.BASE
            </GridColumn>
            <GridColumn TItem="ENFERMEDADES" HeaderText="Tipo">
                @if(@context.IDTIPONavigation != null){@context.IDTIPONavigation.DESCRIPCION}
            </GridColumn>
            <GridColumn TItem="ENFERMEDADES" HeaderText="Continuidad">
                  @if (context.CONTINUIDAD)
                  {
                      <i class="fa-regular fa-square-check"></i>
                  }
              </GridColumn>
            <GridColumn TItem="ENFERMEDADES" HeaderText="Nómina Normal">
                @if (context.NOMINANORMAL)
                {
                    <i class="fa-regular fa-square-check"></i>
                }
            </GridColumn>
            <GridColumn TItem="ENFERMEDADES" 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">Base: </label>
                <input class="form-control" type="number" @bind-value="@ItemEnEdicion.BASE" />
            </div>
            <div class="col-md-12 mb-2">
                <input list="listTip" id="selTip" @bind-value="@itmTipo" type="text" style="width:100%" class="form-control" placeholder="Tipo" />
                <datalist id="listTip">
                    @foreach (ENUMERACIONES con in lTipo)
                    {
                        <option data-value="@con.IDENUMERACION">@con.DESCRIPCION</option>
                    }
                </datalist>
            </div>
            <div class="col-md-12" style="display:flex; justify-content:space-between">
                <label for="txtEDesc" class="fw-bold">Continuidad: </label>
                <input class="" type="checkbox" id="chbCont" checked="@ItemEnEdicion.CONTINUIDAD" />

                <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.IDENFERMEDADES != 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 HttpClient cliente = new HttpClient();
    private Modal popupGestionDatos = default;
    [Parameter]
    public EventCallback OnPersonaActualizada { get; set; }
    private string itmTipo { get; set; }
    private List<ENFERMEDADES> itmList = new List<ENFERMEDADES>();
    private List<ENUMERACIONES> lTipo = new List<ENUMERACIONES>();
    private ENFERMEDADES ItemEnEdicion { get; set; } = new ENFERMEDADES();


    //TIPENF
    //   

    private async Task abrirPopupModificacion(ENFERMEDADES objeto, bool esNuevo)
    {
        ItemEnEdicion = objeto;
        if (objeto.IDENFERMEDADES != 0)
        {
            itmTipo = objeto.IDTIPONavigation.DESCRIPCION;
            // itmNomina = objeto.IDNOMINANavigation.DESCRIPCION;
            // itmConcepto = objeto.IDCONCEPTONOMINANavigation.DESCRIPCION;
            // FECHANOM = DateTime.ParseExact(objeto.AÑONOMINA.ToString() + "-" + objeto.MESNOMINA.ToString() + "-01 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
            //                            System.Globalization.CultureInfo.InvariantCulture);
        }
        else
        {
            // itmNomina = "";
            // itmConcepto = "";
            // FECHANOM = DateTime.ParseExact("0001-01-01 00:00:00,000", "yyyy-MM-dd HH:mm:ss,fff",
            //                            System.Globalization.CultureInfo.InvariantCulture);
        }
        await popupGestionDatos.ShowAsync();
    }
    private async Task cerrarPopupModificacion()
    {
        await popupGestionDatos.HideAsync();
    }
    protected override async Task OnInitializedAsync()
    {
        cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
        await CargarListas();
    }
    private async Task CargarListas()
    {
        itmList.Clear();
        lTipo.Clear();
        try
        {
            foreach (ENFERMEDADES enf in Persona.ENFERMEDADES)

            {
                itmList.Add(enf);
            }
            lTipo = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/TIPENF");
            StateHasChanged();
        }
        catch (Exception e)
        {
            Console.WriteLine($"Error al obtener los datos: {e.Message}");
        }
    }
    private async Task GestionarDatos(bool tipo)
    {
        var inci = ItemEnEdicion;
        if (tipo == true)
        {
            inci.IDENFERMEDADES = 0;
        }
        inci.IDPERSONA = Persona.IDPERSONA;

        string chbCont = "chbCont";
        inci.CONTINUIDAD = await JS.InvokeAsync<bool>("obtenerCheck", chbCont);
        string chbNominaNormal = "chbNominaNormal";
        inci.NOMINANORMAL = await JS.InvokeAsync<bool>("obtenerCheck", chbNominaNormal);
        string chbNominaSS = "chbNominaSS";
        inci.NOMINASEGURIDADSOCIAL = await JS.InvokeAsync<bool>("obtenerCheck", chbNominaSS);


        inci.IDTIPO = lTipo.FirstOrDefault(x => x.DESCRIPCION == itmTipo).IDENUMERACION;
        if (inci.IDENFERMEDADES != 0)
        {
            var response = await Utilidades.ActualizarObjeto(cliente, "/api/ENFERMEDADES/" + inci.IDENFERMEDADES, inci);
        }
        else
        {
            var response = await Utilidades.NuevoObjeto(cliente, "/api/ENFERMEDADES/", 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();
     

    }
}