@page "/TrabProfUrban"
@rendermode InteractiveServer
@inject NavigationManager Navigation
@using HerramientaCASA.Components.Pages.HerramientaURBANTabs.TrabajoProfURBAN
@using bdHerramientaCACOA.HerramientaURBAN
<div class="col-md-12 d-flex mt-3" style="gap: 40px;">
    <RadioInput style="margin-right: 10px;" Label="Cálculo completo" Value="modificarTabla" ValueExpression="() => modificarTabla" ValueChanged="(value) => modificarTablaChanged(value)" />
    <RadioInput style="margin-right: 10px;" Label="Cálculo por tiempo" Value="modificarHoras" ValueExpression="() => modificarHoras" ValueChanged="(value) => modificarHorasChanged(value)" />
</div>
@if (modificarTabla)
{
    <div class="row p-0 m-0">
        <div class="col-md-12 mt-3 mb-3">
            <CascadingValue Value="this">
                <DocumentosURBAN objetoURBAN="objetoURBAN"></DocumentosURBAN>
            </CascadingValue>
        </div>
    </div>

    <div class="row p-0 m-0">
        <div class="col-md-4">
            <CascadingValue Value="this">
                <FasesURBAN @ref=fasesRef objetoURBAN="objetoURBAN"></FasesURBAN>
            </CascadingValue>
        </div>
        <div class="col-md-4">
            <CascadingValue Value="this">
                <InstrumentosURBAN objetoURBAN="objetoURBAN"></InstrumentosURBAN>
            </CascadingValue>
        </div>
    </div>
}
else
{
    <div class="row p-0 m-0">
        <div class="col-md-3">
            <CascadingValue Value="this">
                <FasesURBAN @ref=fasesRef objetoURBAN="objetoURBAN"></FasesURBAN>
            </CascadingValue>
            
        </div>

        <div class="col-md-5 mt-4">
            <table class="tablaAlter mt-4" style="width: 100%;">
                <tr>
                    <td class="TotalesTabla tdAlter" style="width:50%;">HORAS TRABAJO PROFESIONAL URBANISMO: </td>
                    <td class="TotalesTabla  tdAlineadoDerecha">
                        <div class=" d-flex">
                            <InputNumber TValue="double" @onblur="CalcularWea" @bind-Value="@objetoURBAN.TrabajoProfesional.horasTrabProfesional" Min="0" class="inputForm inputTabla tdAlineadoDerecha" />h
                        </div>
                    </td>
                </tr>
            </table>
        </div>
        </div>
}

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

    public tsHerramientasCACOA bd;
    public bool modificarTabla = true;
    public bool modificarHoras = false;

    private FasesURBAN fasesRef;


   // List<URBAN.DocumentacionURBAN> listadoAuxiliarDocusOpci = new List<URBAN.DocumentacionURBAN>();

    protected override async Task OnInitializedAsync()
    {
        bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
    }
    public void RefreshState()
    {
        this.StateHasChanged();
    }

    private async void modificarTablaChanged(bool res)
    {
        //     objetoCASA.TrabajoProfesional.HorasTPE = 0;
        //     objetoCASA.TrabajoProfesional.HorasTPEDocumentacion = 0;
        //     objetoCASA.TrabajoProfesional.HorasTPEDireccion = 0;

        //     if (objetoCASA.TrabajoProfesional.Usos.ToList().Count() != 0)
        //     {
        //         objetoCASA.CalcularHorasTPE();
        //     }

        /////// Se puso para cuando se cambie a esto que no cuente lo de la otra parte.
        // objetoURBAN.TrabajoProfesional.DocumentacionOpcional = listadoAuxiliarDocusOpci.ToList();

        // fasesRef.restablecerValores();

        modificarTabla = res;
        modificarHoras = !res;
        objetoURBAN.TrabajoProfesional.EsPorUsos = true;
        //objetoLicitaciones.CalcularHorasSuperficie();
        await InvokeAsync(StateHasChanged);
    }
    private async void modificarHorasChanged(bool res)
    {
        //  horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
        // ultimaHoraDocumentacion = objetoCASA.TrabajoProfesional.HorasTPEDocumentacion;
        // ultimaHoraObra = objetoCASA.TrabajoProfesional.HorasTPEDireccion;

        /////// Se puso para cuando se cambie a esto que no cuente lo de la otra parte.
        // listadoAuxiliarDocusOpci = new List<URBAN.DocumentacionURBAN>(objetoURBAN.TrabajoProfesional.DocumentacionOpcional);

        // objetoURBAN.TrabajoProfesional.DocumentacionOpcional.Clear();

        // await InvokeAsync(StateHasChanged);

        // if (fasesRef != null)
        // {
        //     fasesRef.restablecerValores();
        // }

        modificarHoras = res;
        modificarTabla = !res;
        objetoURBAN.TrabajoProfesional.EsPorUsos = false;
        //objetoLicitaciones.CalcularHorasSuperficie();
        await InvokeAsync(StateHasChanged);
    }

    private async void CalcularWea()
    {
        objetoURBAN.CalcularCostesProduccion();
    }
}
