@page "/"
@using HerramientaCASA.Model
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedSessionStorage ProtectedSessionStore
@rendermode InteractiveServer
@layout LoginLayout
@inject IHttpContextAccessor HttpContextAccessor
@inject NavigationManager Navigation
@inject UserState UserState


<div class="fondo">
    <div class="back">
        <div class="div-center">
            <div class="content">
                <img src="Content/Imagenes/CACOA-6.png" height="49" />
                <h4 class="mt-2">Acceso a la Herramienta</h4>
                <hr />
                <EditForm Model="login" FormName="loginForm" OnValidSubmit="Acceder" >
                    <DataAnnotationsValidator></DataAnnotationsValidator>

                    <div class="form-group">
                        <label for="exampleInputEmail1">Clave de acceso</label>
                        <input type="number" class="form-control" @bind-value="@login.codigo" placeholder="0000000000000" />
                        <ValidationMessage For="() => login.codigo" />
                    </div>
                    <div class="form-group">
                        <label>Password</label>
                        <div class="input-group">
                            <PasswordInput Class="form-control" @bind-Value="@login.password" />
                        </div>
                        <ValidationMessage For="() => login.password" />
                    </div>
                    <div class="form-check" style="gap:10px;">
                        <input type="checkbox" class="form-check-input" id="Recuerdame"  />
                        <label class="form-check-label" for="Recuerdame">Recordarme</label>
                    </div>
                    <div class="form-group">
                        <small class="form-text text-muted">Si es la primera vez que utiliza la herramienta, <a href="NuevoAcceso" class="mt-2">cree una nueva clave de acceso</a></small>
                    </div>

                    <div class="form-group">
                        <p class="form-text text-muted" style="color:red !important">@mensajeError</p>
                    </div>
                    <button type="submit" class="btnBlue"> Acceder </button>
                </EditForm>
            </div>
        </div>
    </div>
</div>

@code {

    public tsHerramientasCACOA bd;
    private LoginVM login = new LoginVM();
    private string mensajeError = "";

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

        await ProtectedSessionStore.SetAsync("idUsuario", 0);
        await ProtectedSessionStore.SetAsync("EsAdmin", false);

        // Limpiar almacenamiento local o sesión si se está utilizando
        // if (HttpContextAccessor?.HttpContext?.Session != null)
        // {
        //     HttpContextAccessor.HttpContext.Session.Clear();
        // }
    }

    private async Task Acceder()
    {
        //if (login.codigo == -534610 && login.password == "sRg1406.")
        if (login.codigo == -1 && login.password == "-1")
        {
            await ProtectedSessionStore.SetAsync("idUsuario", -1);
            await ProtectedSessionStore.SetAsync("EsAdmin", true);

            Navigation.NavigateTo("/PanelControlConf", forceLoad: true);
        }
        else
        {
            var usuario = bd.usuarios.FirstOrDefault(x => x.Codigo == login.codigo && x.Contrasena == login.password);

            if (usuario == null)
            {
                mensajeError = "Usuario no encontrado en la base de datos.";
            }
            else
            {

                await ProtectedSessionStore.SetAsync("idUsuario", usuario.idUsuario);
                await ProtectedSessionStore.SetAsync("EsAdmin", false);


                Navigation.NavigateTo("/PanelControl", forceLoad: true);
            }
        }
    }
}
