@using HerramientaCASA.Model
@using Microsoft.EntityFrameworkCore
@using bdHerramientaCACOA.db
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage ProtectedLocalStore

@inject UserState UserState

<Modal @ref="popupConfirmarBorrado" title="" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
    <BodyTemplate>
        <div class="col-12 formatoCampos">
            ¿Estás seguro que desea eliminarlo?
        </div>
    </BodyTemplate>
    <FooterTemplate>
        <Button Color="ButtonColor.Secondary" @onclick="cerrarPopupConfirmarBorrado">Cerrar</Button>
        <Button @onclick="@(() => BorrarItem())" Color="ButtonColor.Danger">Eliminar</Button>
    </FooterTemplate>
</Modal>


<div class="container-fluid">
    <Grid TItem="simulaciones"
          Class="tablaCACOA table"
          Data="listadoSimulaciones"
          AllowFiltering="false"
          PageSize="10"
          Height="100"
          EmptyText="No hay registros."
          PageSizeSelectorVisible="false"
          Responsive="true">

        <GridColumns>
            <GridColumn TItem="simulaciones" HeaderTextAlignment="Alignment.Center" Class="columna40Ancho" HeaderText="Descripción">
                <a href="@Redirigir(context.idSimulacion,context.idTipoSimulacion)" class="enlaceCACOA">@context.Descripcion</a>
            </GridColumn>
       @*      <GridColumn TItem="simulaciones" HeaderText="Tipo simulación">
                @context.idTipoSimulacionNavigation.Descripcion
            </GridColumn>
          *@
            <GridColumn TItem="simulaciones" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Fecha Creación">
                @context.FechaCreacion @* .ToString("dd-MM-yyyy") *@
            </GridColumn>
            <GridColumn TItem="simulaciones" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Fecha Modificación">
                @context.FechaModificacion
            </GridColumn>

            <GridColumn TItem="simulaciones" Class="botonesTabla" HeaderText="">
                    <span @onclick="@(() => abrirPopupConfirmarBorrado(@context))" style="cursor: pointer;">
                        <Icon CustomIconName="fas fa-trash"></Icon>
                    </span>
                </GridColumn>
        </GridColumns>
    </Grid>

</div>

@code {
    [Parameter]
    public string TipoSimulacion { get; set; } = "";
    private Modal popupConfirmarBorrado = default!;
    public tsHerramientasCACOA bd;
    private string mensajeError = "";
    List<simulaciones> listadoSimulaciones = new List<simulaciones>();
    private simulaciones itemSeleccionado { get; set; } = new simulaciones();

    private int idUser = 0;


    protected override async Task OnInitializedAsync()
    {
        bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: true);

        var obtenerID = await ProtectedLocalStore.GetAsync<int>("idUsuario");
        idUser = obtenerID.Value;

        listadoSimulaciones = bd.simulaciones.Include(x => x.idTipoSimulacionNavigation).Include(x => x.idFicheroJSONNavigation).Where(x => x.idCodigo == idUser && x.idTipoSimulacionNavigation.Codigo == "TIPOHERRAMIENTA." + TipoSimulacion).ToList();
    }

    private string Redirigir(int id, int idTipoSimulacion)
    {
        string link = "";

        switch (obtenerTipoSimulacion(idTipoSimulacion))
        {
            case "CASA":
                link = "/HerramientaCASAS?idSimulador=" + tsUtilidades.crypt.FEncS(id.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
                break;
            case "BAJAS":
                link = "/Bajas?idSimulador=" + tsUtilidades.crypt.FEncS(id.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
                break;
            case "LICITACION CASA":
                link = "/LicitacionCASA?idSimulador=" + tsUtilidades.crypt.FEncS(id.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
                break;
            case "URBAND":
                link = "/HerramientaURBAN?idSimulador=" + tsUtilidades.crypt.FEncS(id.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
                break;
            case "URBAND SIMPLIFICADA":
                link = "/LicitacionesURBAN?idSimulador=" + tsUtilidades.crypt.FEncS(id.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
                break;
        }
        return link;
    }

    private string obtenerTipoSimulacion(int idTipoSimulacion)
    {
        string tipo = bd.enumeraciones.First(x => x.idEnumeracion == idTipoSimulacion).Descripcion;
        return tipo;
    }


    private async Task BorrarItem()
    {
        bd.simulaciones.Remove(itemSeleccionado);
        bd.SaveChanges();
        // Se tiene que crear otro contexto para que no falle
        bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: true);
        listadoSimulaciones = bd.simulaciones.Include(x => x.idTipoSimulacionNavigation).Include(x => x.idFicheroJSONNavigation).Where(x => x.idCodigo == idUser && x.idTipoSimulacionNavigation.Codigo == "TIPOHERRAMIENTA." + TipoSimulacion).ToList();
        StateHasChanged();
        cerrarPopupConfirmarBorrado();
    }


    //////// PopUp eliminar registro
    private async Task abrirPopupConfirmarBorrado( simulaciones objeto)
    {
        itemSeleccionado = objeto;
        await popupConfirmarBorrado.ShowAsync();
    }
    private async Task cerrarPopupConfirmarBorrado()
    {
        await popupConfirmarBorrado.HideAsync();
    }
}
