@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">

  <Accordion>
  @foreach (var año in annos.Take(annos.Count))
  {
      // 1) Filtramos todas las incidencias de ese año
      var listadoAño = itmList
          .Where(x => x.AÑONOMINA == año)
          .ToList();

      // 2) Sacamos los meses distintos, ordenados desc.
      var meses = listadoAño
          .Where(x => x.MESNOMINA.HasValue)
          .Select(x => x.MESNOMINA.Value)
          .Distinct()
          .OrderByDescending(m => m)
          .ToList();
            var titulo = "Año Nómina: " + @año;
            <AccordionItem Title="@titulo">
          <Content>
              <Accordion>
                  @foreach (var mes in meses)
                  {
                      // Listado filtrado por mes y año
                      var listadoMes = listadoAño
                          .Where(x => x.MESNOMINA == mes)
                          .ToList();
                      var nombreMes = nombMeses[mes - 1];
                      var tituloMes = $"{mes}-{nombreMes}";

                      <AccordionItem Title="@tituloMes">
                          <Content>
                              <div style="overflow-x:auto;" class="tablaDesk">
                                  <Grid TItem="INCIDENCIAS"
                                        Class="table tablaRegPers"
                                        Data="listadoMes"
                                        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="Nómina">
                                              @context.IDNOMINANavigation.DESCRIPCION
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Concepto">
                                              @context.IDCONCEPTONOMINANavigation.DESCRIPCION
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Sustituye Concepto">
                                              @if (context.SUSTITUYECONCEPTO)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Cotiza Seguridad Social">
                                              @if (context.COTIZASEGURIDADSOCIAL)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Texto">
                                              @context.TEXTO
                                          </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>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="IRPF Ficha">
                                              @if (context.IRPFFICHA)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="No para IRPF">
                                              @if (context.NOPARAIRPF)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Nómina Normal">
                                              @if (context.NOMINANORMAL)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Nómina Seguridad Social">
                                              @if (context.NOMINASEGURIDADSOCIAL)
                                              {
                                                  <i class="fa-regular fa-square-check"></i>
                                              }
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Nómina Origen">
                                              @context.IDNOMINANavigation.DESCRIPCION
                                          </GridColumn>
                                          <GridColumn TItem="INCIDENCIAS" HeaderText="Apl. Presupuestaria">
                                              @context.APLICACIONPRESUPUESTARIA
                                          </GridColumn>
                                      </GridColumns>
                                  </Grid>
                              </div>
                          </Content>
                      </AccordionItem>
                  }
              </Accordion>
          </Content>
      </AccordionItem>
  }
</Accordion>


   
</div>

@code {
    [Parameter]
    public PERSONAS Persona { get; set; } = new PERSONAS();
    public int? idNom { get; set; }
    private string titulo { get; set; }
    private HttpClient cliente = new HttpClient();
    [Parameter]
    public EventCallback OnPersonaActualizada { get; set; }
    private List<int?> annos = new List<int?>();
    // private List<int?> meses = new List<int?>();
    private List<INCIDENCIAS> itmList = new List<INCIDENCIAS>();
    private List<String> nombMeses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
    protected override async Task OnInitializedAsync()
    {
        try
        {

            // cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
            // Expression<Func<INCIDENCIAS, bool>> filtro = x => x.IDPERSONA == Persona.IDPERSONA;
            // itmList = await Utilidades.ObtenerObjeto<List<INCIDENCIAS>>(cliente, "/api/INCIDENCIAS/filtrar", filtro);


            var listnom = Persona.INCIDENCIAS.Where(x => x.ESDELIQUIDACION == false).ToList();
            foreach (INCIDENCIAS i in listnom)
            {
                itmList.Add(i);
            }


            for (var i = 0; i < itmList.Count; i++)
            {
                int? year = itmList[i].AÑONOMINA;
                if (year.HasValue)
                {
                    if (annos.Contains(year) == false)
                    {
                        annos.Add(year);
                    }
                }
            }
            annos = annos.OrderDescending().ToList();

        }
        catch (Exception e)
        {
            Console.WriteLine($"Error al obtener los datos: {e.Message}");
        }
    }
}
