Files
HerramientaCASA/HerramientaCASA/Components/Pages/ConfiguracionPages/EstadisticasTabs/EstadisticaLiciCASATab.razor

255 lines
9.1 KiB
Plaintext

@inject NavigationManager Navigation
@layout ConfiguracionLayout
@rendermode InteractiveServer
@using BlazorBootstrap
@using System.Globalization
@using Microsoft.EntityFrameworkCore
@using bdHerramientaCACOA.db
<div>
<div class="row" style="justify-content:space-between">
<div class="form-group mt-4 col-6">
<label>Fecha inicio:</label>
<InputDate TValue="DateTime?"
Value="fechaInicio"
ValueChanged="OnFechaInicioChanged"
ValueExpression="@(() => fechaInicio)" />
<label>Fecha final:</label>
<InputDate TValue="DateTime?"
Value="fechaFinal"
ValueChanged="OnFechaFinalChanged"
ValueExpression="@(() => fechaFinal)" />
</div>
<div class="mt-2">
@if (!string.IsNullOrEmpty(mensajeError))
{
<label class="text-danger fw-semibold">
@mensajeError
</label>
}
</div>
</div>
@if (totalProyectosTipo != 0)
{
<div class="mt-5" style="padding:50px;">
<div class="mb-4">
<label class="fw-bold">Total simulaciones licitación CASA: <span>@totalProyectosTipo</span> </label>
</div>
<div class="row">
<div class="col-2 formatoCampos pt-2">
<label class="tituloLbl">Total coste hora despacho profesional:</label>
<label class="tituloLbl">@estadisticasTotales.costeHoraDespachoProf.MilesYDecimales() €</label>
</div>
<div class="col-2 formatoCampos pt-2">
<label class="tituloLbl">Total fases:</label>
<label class="tituloLbl">@estadisticasTotales.totalFases %</label>
</div>
<div class="col-2 formatoCampos pt-2">
<label class="tituloLbl">Total horas TPE:</label>
<label class="tituloLbl">@estadisticasTotales.horasTPE.MilesYDecimales() h</label>
</div>
<div class="col-2 formatoCampos pt-2">
<label class="tituloLbl">Total plazo presentación:</label>
<label class="tituloLbl">@estadisticasTotales.plazoPresentacion</label>
</div>
<div class="col-2 formatoCampos pt-2">
<label class="tituloLbl">Total coste producción:</label>
<label class="tituloLbl">@estadisticasTotales.costeProduccion.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>
</div>
}
else
{
<div class="mt-5">
<label class="tituloLbl">No hay datos entre esas fechas.</label>
</div>
}
<Grid TItem="estadisticas"
Class="tablaCACOA table"
Data="listadoHerramientaEstadistica"
AllowFiltering="false"
PageSize="10"
FixedHeader="true"
Height="750"
Unit="Unit.Px"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total coste hora despacho profesional">
<span>@context.costeHoraDespachoProf</span>
</GridColumn>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total fases">
<span>@context.totalFases</span>
</GridColumn>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total horas trabajo profesional">
<span>@context.horasTPE</span>
</GridColumn>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total plazos">
<span>@context.plazoPresentacion</span>
</GridColumn>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total costes de producción">
<span>@context.costeProduccion</span>
</GridColumn>
<GridColumn TItem="estadisticas" HeaderTextAlignment="Alignment.Center" Class="text-end" HeaderText="Total otros trabajos">
<span>@context.totalOtrosTrabajos</span>
</GridColumn>
</GridColumns>
</Grid>
</div>
@code {
public List<estadisticas> listadoHerramientaEstadistica { get; set; } = new List<estadisticas>();
public List<estadisticas> listadoHerramientaEstadisticaAux { get; set; } = new List<estadisticas>();
public DateTime? fechaInicio { get; set; } = null;
public DateTime? fechaFinal { get; set; } = null;
public estadisticas estadisticasTotales = new estadisticas();
private int totalProyectosTipo = 0;
private string mensajeError = "";
private async Task OnFechaInicioChanged(DateTime? value)
{
fechaInicio = value;
if (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal))
{
inicializarListado();
}
else
{
if (UtilidadesCASA.comprobarFechas((DateTime)fechaInicio, (DateTime)fechaFinal))
{
AplicarFiltros();
mensajeError = "";
}
else
{
mensajeError = "La fecha final no puede ser menor que la fecha inicial.";
}
}
}
private async Task OnFechaFinalChanged(DateTime? value)
{
fechaFinal = value;
if (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal))
{
inicializarListado();
}
else
{
if (UtilidadesCASA.comprobarFechas((DateTime)fechaInicio, (DateTime)fechaFinal))
{
AplicarFiltros();
mensajeError = "";
}
else
{
mensajeError = "La fecha final no puede ser menor que la fecha inicial.";
}
}
}
public tsHerramientasCACOA bd;
protected override async Task OnInitializedAsync()
{
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
inicializarListado();
}
private void AplicarFiltros()
{
// Filtra la lista en función de los criterios ingresados
listadoHerramientaEstadistica = new List<bdHerramientaCACOA.db.estadisticas>();
foreach (bdHerramientaCACOA.db.estadisticas item in listadoHerramientaEstadisticaAux)
{
if (IsVisible(item) == true)
{
listadoHerramientaEstadistica.Add(item);
}
}
totalProyectosTipo = listadoHerramientaEstadistica.Count();
hacerCalculos(listadoHerramientaEstadistica);
}
public bool IsVisible(bdHerramientaCACOA.db.estadisticas listado)
{
DateTime? ultimaFecha;
if (listado.idSimulacionNavigation.FechaModificacion != null)
{
ultimaFecha = listado.idSimulacionNavigation.FechaModificacion;
}
else
{
ultimaFecha = listado.idSimulacionNavigation.FechaCreacion;
}
if (fechaFinal != null && listado.idSimulacionNavigation.FechaCreacion.Date >= fechaInicio?.Date && ultimaFecha?.Date <= fechaFinal?.Date)
{
return true;
}
return false;
}
private void hacerCalculos(List<bdHerramientaCACOA.db.estadisticas> listadoEstadistica)
{
estadisticasTotales.costeHoraDespachoProf = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeHoraDespachoProf), totalProyectosTipo);
estadisticasTotales.totalFases = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalFases), totalProyectosTipo);
estadisticasTotales.horasTPE = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.horasTPE), totalProyectosTipo);
estadisticasTotales.plazoPresentacion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.plazoPresentacion), totalProyectosTipo);
estadisticasTotales.costeProduccion = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.costeProduccion), totalProyectosTipo);
estadisticasTotales.totalOtrosTrabajos = UtilidadesCASA.comprobarNull(listadoEstadistica.Sum(x => x.totalOtrosTrabajos), totalProyectosTipo);
}
private void inicializarListado()
{
listadoHerramientaEstadistica = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 32).ToList();
listadoHerramientaEstadisticaAux = listadoHerramientaEstadistica;
totalProyectosTipo = listadoHerramientaEstadistica.Count();
hacerCalculos(listadoHerramientaEstadistica);
}
}