255 lines
9.1 KiB
Plaintext
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);
|
|
}
|
|
} |