@using BlazorBootstrap
@using System.Text.Json
@using Microsoft.AspNetCore.WebUtilities
@using bdHerramientaCACOA.HerramientaURBAN
@using bdHerramientaCACOA.db
@using static bdHerramientaCACOA.CASA
@inject NavigationManager Navigation

<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />

<div style="height:100%">
    <div>
        <div class="mt-3 mb-3"><b>Innovacion de los instrumentos</b></div>
        <p class="col-6">
            @* @if (!nuevaRedaccion)
            { *@
            <InputNumber TValue="double" Value="@objetoLicitacionUrban.TrabajoProfesional.valorInstrumentos"
                         ValueExpression="() => objetoLicitacionUrban.TrabajoProfesional.valorInstrumentos"
                         ValueChanged="(value) => ValorModificado(value)"
                         step="any"
                         class="inputForm text-end" /> <span>%</span>
            @*    }
            else
            {
            <label>100 %</label>
            } *@

        </p>
        @foreach (var enu in listadoInstrumentos)
        {
            <div class="form-check" style="gap:10px;">
                <input name="instrumentos" checked="@enu.Seleccionado" type="radio" id="@enu.idEnumeracion" class="form-check-input" value="@enu.ValorNumerico1" @onchange="() => Seleccionar(enu)">

                <label class="form-check-label" for="@enu.idEnumeracion">@enu.Descripcion</label>
            </div>
        }
   
    </div>
    <div>
        <table class="tablaAlter mt-4" style="width: 100%;">
            <tr>
                <td class="tdAlter" style="width:50%;">Horas Trabajo Profesional </td>
                <td class="tdAlineadoDerecha">@objetoLicitacionUrban.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h</td>
            </tr>
        </table>
    </div>
</div>

@code {
    [CascadingParameter]
    public HerramientaCASA.Components.Pages.LicitacionUrban.DocumentosLicitacion _Parent { get; set; }
    [Parameter]
    public bdHerramientaCACOA.LicitacionesURBAN objetoLicitacionUrban { get; set; } = new bdHerramientaCACOA.LicitacionesURBAN();

    private bool nuevaRedaccion = false;
    private enumeracionesCASA itemSeleccinado;

    public List<CASA.enumeracionesCASA> listadoInstrumentos { get; set; } = new List<CASA.enumeracionesCASA>();

    private CASA.FasesTrabajo itemSeleccionado = new CASA.FasesTrabajo();


    List<ToastMessage> mensajes = new List<ToastMessage>();

    [Parameter]
    public string? idSimulador { get; set; } = "";


    public void Recargar()
    {
        // Vuelve a cargar los instrumentos y selecciona el actual
        listadoInstrumentos = objetoLicitacionUrban.Enumerados.ListaInstrumentos.ToList();
        var seleccionado = listadoInstrumentos.FirstOrDefault(x => x.idEnumeracion == objetoLicitacionUrban.TrabajoProfesional.idInstrumento);
        Seleccionar(seleccionado ?? listadoInstrumentos.First());
        objetoLicitacionUrban.CalcularHorasTrabajoProfesional();
        StateHasChanged();
    }


    protected override async Task OnInitializedAsync()
    {
        var url = Navigation.ToAbsoluteUri(Navigation.Uri);

        if (QueryHelpers.ParseQuery(url.Query).TryGetValue("idSimulador", out var clValue))
        {
            idSimulador = clValue;
        }

        listadoInstrumentos = objetoLicitacionUrban.Enumerados.ListaInstrumentos.ToList();

        if (string.IsNullOrEmpty(idSimulador))
        {
            Seleccionar(listadoInstrumentos.First());
        }
        else
        {
            Seleccionar(listadoInstrumentos.First(x => x.Seleccionado == true));
        }
        await InvokeAsync(StateHasChanged);
        _Parent.RefreshState();
    }

    private async void ValorModificado(double valor)
    {
        objetoLicitacionUrban.TrabajoProfesional.valorInstrumentos = Convert.ToDouble(valor);
        objetoLicitacionUrban.TrabajoProfesional.idInstrumento = itemSeleccinado.idEnumeracion;
        itemSeleccinado.ValorNumerico1 = Convert.ToDouble(valor);

        objetoLicitacionUrban.CalcularHorasTrabajoProfesional();
        await InvokeAsync(StateHasChanged);
        _Parent.RefreshState();
    }

    private async void Seleccionar(enumeracionesCASA item)
    {

        if (item.Codigo.Contains("NUEVARED"))
        {
            nuevaRedaccion = true;
        }
        else
        {
            nuevaRedaccion = false;
        }

        itemSeleccinado = item;
        itemSeleccinado.Seleccionado = true;

        foreach (var intru in listadoInstrumentos.Where(x=>x.idEnumeracion != item.idEnumeracion))
        {
            intru.Seleccionado = false;
        }

        objetoLicitacionUrban.TrabajoProfesional.valorInstrumentos = Convert.ToDouble(item.ValorNumerico1);
        objetoLicitacionUrban.TrabajoProfesional.idInstrumento = item.idEnumeracion;
        objetoLicitacionUrban.CalcularHorasTrabajoProfesional();
        await InvokeAsync(StateHasChanged);
        _Parent.RefreshState();
    }
}
