@inject NavigationManager Navigation
@layout ConfiguracionLayout
@rendermode InteractiveServer
@using BlazorBootstrap
@using System.Globalization
@using ClosedXML.Excel
@using Microsoft.EntityFrameworkCore
@using bdHerramientaCACOA.db
@inject IJSRuntime JS

@using ClosedXML.Excel

<div>
   

    @if (totalProyectosTipo != 0)
    {
        <div class="col-12 text-end">
            <button @onclick="ExportarExcelCasa" class="btnBlue col-1 " style="background-color: #65b7c3 !important;"> <i class="fas fa-print pe-2"></i>Generar Excel</button>
        </div>
        <div class="mt-2" style="padding:50px;">
            <div class="mb-4">
            <label class="fw-bold">Total simulaciones herramienta CASA: <span>@totalProyectosTipo</span> </label>
        </div>
            <div class="row">

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Nº total trabajadores:</label>
                    <label class="tituloLbl">@estadisticasTotales.numeroTrabajadores.MilesYDecimales()</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Coste anual total:</label>
                    <label class="tituloLbl">@estadisticasTotales.costeAnualTotal.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Horas de producción:</label>
                    <label class="tituloLbl">@estadisticasTotales.horasProduccion.MilesYDecimales() h</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Costes directos:</label>
                    <label class="tituloLbl">@estadisticasTotales.costesDirectos.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Costes indirectos:</label>
                    <label class="tituloLbl">@estadisticasTotales.costesIndirectos.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Costes variables:</label>
                    <label class="tituloLbl">@estadisticasTotales.costesVariables.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Costes despacho:</label>
                    <label class="tituloLbl">@estadisticasTotales.costeDespacho.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Total superficie:</label>
                    <label class="tituloLbl">@estadisticasTotales.totalSuperficie.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">% fases:</label>
                    <label class="tituloLbl">@estadisticasTotales.porcentajeFases %</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Horas documentación:</label>
                    <label class="tituloLbl">@estadisticasTotales.horasDocumentacion.MilesYDecimales() h</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Horas dirección obra:</label>
                    <label class="tituloLbl">@estadisticasTotales.horasDireccionObra.MilesYDecimales() h</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Horas trabajo:</label>
                    <label class="tituloLbl">@estadisticasTotales.horasTrabajo.MilesYDecimales() h</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">% externalización:</label>
                    <label class="tituloLbl">@estadisticasTotales.porcentajeExternalizacion %</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Coste externalización:</label>
                    <label class="tituloLbl">@estadisticasTotales.costeExternalizacion.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Plazo presentación:</label>
                    <label class="tituloLbl">@estadisticasTotales.plazoPresentacion</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Coste de producción:</label>
                    <label class="tituloLbl">@estadisticasTotales.costeProduccion.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Beneficio:</label>
                    <label class="tituloLbl">@estadisticasTotales.beneficio.MilesYDecimales() %</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Precio trabajo:</label>
                    <label class="tituloLbl">@estadisticasTotales.precioTrabajo.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Total otros trabajos:</label>
                    <label class="tituloLbl">@estadisticasTotales.totalOtrosTrabajos.MilesYDecimales() €</label>
                </div>

                <div class="col-2 formatoCampos pt-2">
                    <label class="tituloLbl">Precio encargo:</label>
                    <label class="tituloLbl">@estadisticasTotales.precioEncargo.MilesYDecimales() €</label>
                </div>
            </div>
        </div>
    }
    else
    {
        <div class="mt-5">
            <label class="tituloLbl">No hay datos entre esas fechas.</label>
        </div>
    }

</div>

@code {

    [Parameter]
    public List<estadisticas> ListadoHerraCASA { get; set; } = new List<estadisticas>();
    [Parameter]
    public List<estadisticasfactores> ListadoFactoresCASA { get; set; } = new List<estadisticasfactores>();
    [Parameter]
    public List<estadisticasusos> ListadoUsosCASA { get; set; } = new List<estadisticasusos>();

    private int totalProyectosTipo = 0;

    public EstadistiaHerraCasaVM estadisticasTotales = new EstadistiaHerraCasaVM();

    [CascadingParameter]
    public ConfiguracionPages.EstadisticasConf _Parent { get; set; }

    public tsHerramientasCACOA bd;


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

    protected override void OnParametersSet()
    {
        inicializarListado();
    }

    private void hacerCalculos(List<bdHerramientaCACOA.db.estadisticas> listadoEstadistica)
    {

        estadisticasTotales.numeroTrabajadores = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.numeroTrabajadores), totalProyectosTipo);
        estadisticasTotales.costeAnualTotal = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalCosteAnual), totalProyectosTipo);
        estadisticasTotales.horasProduccion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.horasProduccion), totalProyectosTipo);
        estadisticasTotales.costesDirectos = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeDirecto), totalProyectosTipo);
        estadisticasTotales.costesIndirectos = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeIndirecto), totalProyectosTipo);
        estadisticasTotales.costesVariables = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeVariable), totalProyectosTipo);
        estadisticasTotales.costeDespacho = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeHoraDespachoProf), totalProyectosTipo);
        estadisticasTotales.totalSuperficie= UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalSupeficie), totalProyectosTipo);
        estadisticasTotales.porcentajeFases = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalFases), totalProyectosTipo);
        estadisticasTotales.horasDocumentacion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.horasTPEDocumentacion), totalProyectosTipo);
        estadisticasTotales.horasDireccionObra = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.horasTPEDireccionObra), totalProyectosTipo);
        estadisticasTotales.horasTrabajo = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.horasTPE), totalProyectosTipo);
        estadisticasTotales.porcentajeExternalizacion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.porcentajeExternalizacion), totalProyectosTipo);
        estadisticasTotales.costeExternalizacion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeHoraExternalizacion), totalProyectosTipo);
        estadisticasTotales.plazoPresentacion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.plazoPresentacion), totalProyectosTipo);
        estadisticasTotales.costeProduccion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeProduccion), totalProyectosTipo);
        estadisticasTotales.beneficio = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.porcentajeBeneficio), totalProyectosTipo);
        estadisticasTotales.precioTrabajo = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.precioTrabajo), totalProyectosTipo);
        estadisticasTotales.totalOtrosTrabajos = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalOtrosTrabajos), totalProyectosTipo);
        estadisticasTotales.precioEncargo= UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.precioEncargo), totalProyectosTipo);
    }


    private void inicializarListado()
    {
        totalProyectosTipo = ListadoHerraCASA.Count();

        hacerCalculos(ListadoHerraCASA);
    }









    private async Task ExportarExcelCasa()
    {
        var bytes =  UtilidadesCASA.GenerarExcelCasa(bd,ListadoHerraCASA, ListadoUsosCASA, ListadoFactoresCASA);

        _Parent.generarExcel(bytes);
    }
}