@page "/TrabajoProfesional"
@rendermode InteractiveServer
@inject NavigationManager Navigation
@using HerramientaCASA.Components.Pages.HerramientaCASATabs.TrabajoProfesionalComponents
@using Microsoft.AspNetCore.WebUtilities

<div class="row p-0 m-0">
    <div class="col-md-12 d-flex" style="gap: 40px;">
        <RadioInput style="margin-right: 10px;"  Label="Cálculo por superficie y uso" 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="col-md-12 mt-3 mb-5">
            <CascadingValue Value="this">
                <UsosTipologiaGrid objetoCASA="objetoCASA"></UsosTipologiaGrid>
            </CascadingValue>
        </div>
        <div class="col-md-4">
            <CascadingValue Value="this">
                <FasesTrabajoProfesionalGrid objetoCASA="objetoCASA"></FasesTrabajoProfesionalGrid>
            </CascadingValue>
        </div>
        <div class="col-md-8">

            <CascadingValue Value="this">
                <CoeficientesCorrectoresGrid objetoCASA="objetoCASA"></CoeficientesCorrectoresGrid>
            </CascadingValue>
        </div>
                <div class="col-md-4 ">
                    <CascadingValue Value="this">
                        <TablaHorasGrid inputsEditables="false" objetoCASA="objetoCASA"></TablaHorasGrid>
                    </CascadingValue>
                </div>
                <div class="col-md-4 ">
                    <CascadingValue Value="this">
                        <TablaHorasGrid inputsEditables="true" objetoCASA="objetoCASA"></TablaHorasGrid>
                    </CascadingValue>
        </div>
    }
    @if (modificarHoras)
    {
        <div class="col-md-3">
            <CascadingValue Value="this">
                <FasesTrabajoProfesionalGrid objetoCASA="objetoCASA"></FasesTrabajoProfesionalGrid>
            </CascadingValue>
        </div>
        <div class="col-md-5">
            <CascadingValue Value="this">
                <TablaHorasGrid inputsEditables="true" objetoCASA="objetoCASA"></TablaHorasGrid>
            </CascadingValue>
        </div>
    }
</div>



@code {
    [Parameter]
    public bdHerramientaCACOA.CASA objetoCASA { get; set; } = new CASA();

    public bool modificarTabla = true;
    public bool modificarHoras = false;
    public tsHerramientasCACOA bd;
    public double horasTPEOriginal = 0;

    public double ultimaHoraDocumentacion = 0;
    public double ultimaHoraObra = 0;

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

        modificarTabla = objetoCASA.TrabajoProfesional.EsPorUsos;

        if (!modificarTabla)
        {
            modificarHorasChanged(true);
        }
    }
    public void RefreshState()
    {
        this.StateHasChanged();
    }

    public async void calcularModificarHora()
    {
      //  ultimaHoraDocumentacion = objetoCASA.TrabajoProfesional.HorasTPEDocumentacion;
      //  ultimaHoraObra = objetoCASA.TrabajoProfesional.HorasTPEDireccion;

        objetoCASA.CalcularHorasTPEManual(objetoCASA.TrabajoProfesional.HorasTPEDocumentacion, objetoCASA.TrabajoProfesional.HorasTPEDireccion);
     //   horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
        RefreshState();
    }


    public void restablecerHoras()
    {
        objetoCASA.TrabajoProfesional.HorasTPEDocumentacion= ultimaHoraDocumentacion;
        objetoCASA.TrabajoProfesional.HorasTPEDireccion = ultimaHoraObra;

        objetoCASA.CalcularHorasTPEManual(objetoCASA.TrabajoProfesional.HorasTPEDocumentacion, objetoCASA.TrabajoProfesional.HorasTPEDireccion);
        horasTPEOriginal = objetoCASA.TrabajoProfesional.HorasTPE;
        RefreshState();
    }

    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();
        }

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


        modificarHoras = res;
        modificarTabla = !res;
        objetoCASA.TrabajoProfesional.EsPorUsos = false;
        await InvokeAsync(StateHasChanged);
    }
}
