@using System.Globalization
@using HerramientaCASA.Components.Pages.Comun


<div class="row">
    <!--style="width:47%;"-->
    <div class="col-md-6 mt-3" >
        <div style="margin-bottom: 10px;">
            <b>Costes Asociados a los Servicios de Arquitectura</b>
        </div>
        <table class="tablaAlter" style="width:100%">
            <tr>
                <td class="tdAlter TotalesTabla"> COSTES  DE PRODUCCIÓN DEL TRABAJO PROFESIONAL: </td>

                <td class="tdAlter TotalesTabla tdAlineadoDerecha" style="width: 30%; font-weight:bold;">
                    @objetoCASA.CostesProduccion.CostesProduccionTrabProf.MilesYDecimales() €
                </td>
            </tr>
            <tr>
                <td class="TotalesTabla">
                    
                    <div class="puntoInfo">

            @if (!string.IsNullOrEmpty(objetoCASA.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 29).Descripcion))
            {
                @UtilidadesCASA.CreateTooltip(objetoCASA.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 29).Descripcion)
            }
                    <b>Beneficio</b> (antes de impuestos) 
                </div></td>
                <td class="tdAlineadoDerecha TotalesTabla">
                    <div class="d-flex" style="gap:3px;">
                        <InputNumber TValue="double" Locale="es-ES" Min="0" class="inputForm formatoMoneda inputTabla" Value="@objetoCASA.CostesProduccion.Beneficio" ValueExpression="() => objetoCASA.CostesProduccion.Beneficio" ValueChanged="(value) => BeneficioCambiado(value)"></InputNumber> %
                    </div>
                </td>
            </tr>
            <tr>
                <td colspan="2" class="text-end fw-bold TotalesTabla tablaCACOA">
                    Precio del trabajo profesional:  <span>@objetoCASA.CostesProduccion.PrecioTrabProf.MilesYDecimales() € </span>
                </td>
            </tr>
        </table>
    </div>
    <div class="col-md-6">
        <div style="position:relative;margin-bottom: 15px;">

             <CascadingValue Value="this">
                <OtrosTrabajos objetoCASA="objetoCASA"></OtrosTrabajos>
            </CascadingValue>
        </div>

        <div style="margin-top:32px">

            <table class="table tablaCACOA tablaCACOA2 mb-0" style="width: 100%;">
                <tfoot>
                    <tr>
                        <td colspan="2" class="text-end fw-bold TotalesTabla" style="font-size:14px;">
                            Precio del encargo:  <span>@objetoCASA.CostesProduccion.PrecioDelEncargo.MilesYDecimales() € </span>
                        </td>
                    </tr>
                </tfoot>
            </table>
        </div>
    </div>
</div>


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

    List<CASA.OtrosTrabajos> listOtrosTrabajos = new List<CASA.OtrosTrabajos>();
    private bool esCalcular = true;
    private bool esPorcentajeCostes = false;

    private double porcentajeCostes;
    private double sumaTotal;
    private bool editarElemento;

    [SupplyParameterFromForm]
    private CASA.OtrosTrabajos itemSeleccionado { get; set; } = new CASA.OtrosTrabajos();

    private string tituloPopup = "";
    private Modal popupGestionDatos = default!;
    private Modal popupConfirmarBorrado = default!;

    private bool nuevoElemento;
    private ValidationMessageStore? messageStore;

    private EditContext editContext;


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

    [CascadingParameter]
    public CostesProduccion _Parent { get; set; }

    protected override async Task OnInitializedAsync()
    {
        editContext = new EditContext(itemSeleccionado);
        messageStore = new ValidationMessageStore(editContext);

        listOtrosTrabajos = objetoCASA.CostesProduccion.OtrosTrabajos.ToList();
    }

    private async void BeneficioCambiado(double e)
    {
        objetoCASA.CostesProduccion.Beneficio = e;
        objetoCASA.CalcularCostesProduccion();

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

    public void RefreshState()
    {
        this.StateHasChanged();
    }
}
