@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>
    <div class="mt-3 mb-3"><b>Innovacion de los instrumentos</b></div>
    <p class="col-6">
        @*  @if (!nuevaRedaccion)
        { *@
        <InputNumber TValue="double" Value="@objetoURBAN.TrabajoProfesional.valorInstrumentos"
                     ValueExpression="() => objetoURBAN.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>
    }
    <table class="tablaAlter mt-4" style="width: 100%;">
        <tr>
            <td class="tdAlter" style="width:50%;">Horas Trabajo Profesional </td>
            <td class="tdAlineadoDerecha">@objetoURBAN.TrabajoProfesional.horasTrabProfesional.MilesYDecimales() h</td>
        </tr>
    </table>

</div>

<div style="position:relative;margin-bottom: 15px;">
    <div style="justify-content: end; display: flex;">
    </div>

</div>

@code {
    [CascadingParameter]
    public TrabProfUrban _Parent { get; set; }
    [Parameter]
    public URBAN objetoURBAN { get; set; } = new URBAN();

    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; } = "";

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

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


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


        if (string.IsNullOrEmpty(idSimulador))
        {
            Seleccionar(listadoInstrumentos.First());
        }
        else
        {
            Seleccionar(listadoInstrumentos.FirstOrDefault(x => x.Seleccionado == true));
        }
    }

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

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

    private async void Seleccionar(enumeracionesCASA item)
    {
        if (item != null)
        {
            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;
            }

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