302 lines
11 KiB
Plaintext
302 lines
11 KiB
Plaintext
@page "/Estadisticas"
|
|
|
|
@inject NavigationManager Navigation
|
|
@layout ConfiguracionLayout
|
|
@using Microsoft.AspNetCore.WebUtilities
|
|
|
|
@using BlazorBootstrap
|
|
@using System.Globalization
|
|
@using bdHerramientaCACOA.db
|
|
@rendermode InteractiveServer
|
|
@inject IJSRuntime JS
|
|
|
|
@using ClosedXML.Excel
|
|
@using Microsoft.EntityFrameworkCore
|
|
|
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
|
|
|
|
|
<div class="row container-fluid mt-4" 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>
|
|
|
|
<div class="container-fluid pt-3">
|
|
|
|
<Tabs>
|
|
<Tab Title="Estadisticas CASA - Edificación" Active>
|
|
<Content>
|
|
<div class="CajaTab p-2">
|
|
<CascadingValue Value="this">
|
|
<HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaHerraCASATab ListadoHerraCASA="@listadoHerramientaEstadistica" ListadoFactoresCASA="listadoHerramientaEstadisticaFactores" ListadoUsosCASA="listadoHerramientaEstadisticaUsos"></HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaHerraCASATab>
|
|
</CascadingValue>
|
|
</div>
|
|
</Content>
|
|
|
|
</Tab>
|
|
|
|
<Tab Title="Estadisticas Licitaciones Edificación">
|
|
<Content>
|
|
<div class="CajaTab p-2">
|
|
<CascadingValue Value="this">
|
|
<HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaLiciCASATab ListadoLiciCASA="@listadoLicitacionesEstadistica" ListadoUsosLicitacion="listadoLicitacionUsos"></HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaLiciCASATab>
|
|
</CascadingValue>
|
|
|
|
</div>
|
|
</Content>
|
|
</Tab>
|
|
|
|
<Tab Title="Estadisticas CASA - Urbanismo">
|
|
<Content>
|
|
<div class="CajaTab p-2">
|
|
<CascadingValue Value="this">
|
|
|
|
<HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaHerraURBANTab ListadoHerraURBAN="@listadoHerramientaEstadisticaUrban"></HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaHerraURBANTab>
|
|
</CascadingValue>
|
|
|
|
</div>
|
|
</Content>
|
|
</Tab>
|
|
|
|
<Tab Title="Estadisticas Licitación Urbanismo">
|
|
<Content>
|
|
<div class="CajaTab p-2">
|
|
<CascadingValue Value="this">
|
|
|
|
<HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaLiciURBANTab ListadoLiciURBAN="@listadoLicitacionesEstadisticaUrban"></HerramientaCASA.Components.Pages.ConfiguracionPages.EstadisticasTabs.EstadisticaLiciURBANTab>
|
|
</CascadingValue>
|
|
|
|
</div>
|
|
</Content>
|
|
</Tab>
|
|
</Tabs>
|
|
</div>
|
|
|
|
|
|
@code {
|
|
|
|
public List<estadisticas> listadoHerramientaEstadistica { get; set; } = new List<estadisticas>();
|
|
public List<estadisticas> listadoLicitacionesEstadistica { get; set; } = new List<estadisticas>();
|
|
|
|
public List<estadisticas> listadoHerramientaEstadisticaUrban { get; set; } = new List<estadisticas>();
|
|
public List<estadisticas> listadoLicitacionesEstadisticaUrban { get; set; } = new List<estadisticas>();
|
|
|
|
public List<estadisticasusos> listadoHerramientaEstadisticaUsos { get; set; } = new List<estadisticasusos>();
|
|
public List<estadisticasusos> listadoLicitacionUsos { get; set; } = new List<estadisticasusos>();
|
|
public List<estadisticasfactores> listadoHerramientaEstadisticaFactores { get; set; } = new List<estadisticasfactores>();
|
|
|
|
public DateTime? fechaInicio { get; set; } = null;
|
|
public DateTime? fechaFinal { get; set; } = null;
|
|
|
|
public EstadistiaHerraCasaVM estadisticasTotales = new EstadistiaHerraCasaVM();
|
|
private int totalProyectosTipo = 0;
|
|
|
|
private string mensajeError = "";
|
|
|
|
public tsHerramientasCACOA bd;
|
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
|
|
|
|
|
private async Task OnFechaInicioChanged(DateTime? value)
|
|
{
|
|
fechaInicio = value;
|
|
|
|
if (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal))
|
|
{
|
|
if (UtilidadesCASA.comprobarFechas((DateTime)fechaInicio, (DateTime)fechaFinal))
|
|
{
|
|
inicializarListado();
|
|
mensajeError = "";
|
|
}
|
|
else
|
|
{
|
|
mensajeError = "La fecha final no puede ser menor que la fecha inicial.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
inicializarListado();
|
|
mensajeError = "";
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
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 async Task OnFechaFinalChanged(DateTime? value)
|
|
{
|
|
fechaFinal = value;
|
|
|
|
if (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal))
|
|
{
|
|
|
|
if (UtilidadesCASA.comprobarFechas((DateTime)fechaInicio, (DateTime)fechaFinal))
|
|
{
|
|
inicializarListado();
|
|
mensajeError = "";
|
|
}
|
|
else
|
|
{
|
|
mensajeError = "La fecha final no puede ser menor que la fecha inicial.";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
inicializarListado();
|
|
mensajeError = "";
|
|
}
|
|
}
|
|
|
|
|
|
public async Task generarExcel(byte[] arrayListados)
|
|
{
|
|
try
|
|
{
|
|
bool fechaValida = false;
|
|
|
|
string nombreExcel = "";
|
|
|
|
|
|
if ((fechaInicio == null && fechaFinal == null) || (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal) && UtilidadesCASA.comprobarFechas((DateTime)fechaInicio, (DateTime)fechaFinal)))
|
|
{
|
|
fechaValida = true;
|
|
}
|
|
|
|
if (fechaValida)
|
|
{
|
|
|
|
if (UtilidadesCASA.comprobarFechasNulas(fechaInicio, fechaFinal))
|
|
{
|
|
nombreExcel = "Simulaciones_" + (fechaInicio ?? DateTime.Now).Date.ToString() + (fechaFinal ?? DateTime.Now).Date.ToString() + ".xlsx";
|
|
}
|
|
else
|
|
{
|
|
nombreExcel = "SimulacionesTotales_" + DateTime.Now.ToString() + ".xlsx";
|
|
}
|
|
var wb = new XLWorkbook();
|
|
wb.Properties.Author = "Tecnosis";
|
|
wb.Properties.Title = "Datos entre fechas";
|
|
wb.Properties.Subject = "";
|
|
|
|
var ws = wb.Worksheets.Add("Total datos");
|
|
|
|
var bytes = arrayListados;
|
|
|
|
await JS.InvokeVoidAsync("descargarExcel", nombreExcel, Convert.ToBase64String(bytes));
|
|
|
|
mensajes.Add(new ToastMessage
|
|
{
|
|
Type = ToastType.Primary,
|
|
Message = $"Descarga completada.",
|
|
});
|
|
}
|
|
else
|
|
{
|
|
mensajes.Add(new ToastMessage
|
|
{
|
|
Type = ToastType.Warning,
|
|
Message = $"Fechas incorrectas.",
|
|
});
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
mensajes.Add(new ToastMessage
|
|
{
|
|
Type = ToastType.Danger,
|
|
Message = $"Error al generar el excel.",
|
|
});
|
|
throw new Exception("Ocurrió un error en la descarga del excel -> " + ex.Message);
|
|
}
|
|
}
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
|
|
|
|
inicializarListado();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void inicializarListado()
|
|
{
|
|
|
|
if (fechaInicio == null)
|
|
{
|
|
listadoHerramientaEstadistica = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 31).ToList();
|
|
listadoLicitacionesEstadistica = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 32).ToList();
|
|
|
|
listadoHerramientaEstadisticaUrban = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 34).ToList();
|
|
listadoLicitacionesEstadisticaUrban = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 35).ToList();
|
|
|
|
}
|
|
else
|
|
{
|
|
var listadoHerraCASA = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 31).ToList();
|
|
var listadoLicitacionCASA = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 32).ToList();
|
|
|
|
listadoHerramientaEstadistica = listadoHerraCASA.Where(x => (x.idSimulacionNavigation.FechaCreacion >= fechaInicio) && (x.idSimulacionNavigation.FechaModificacion ?? x.idSimulacionNavigation.FechaCreacion).Date <= fechaFinal).ToList();
|
|
listadoLicitacionesEstadistica = listadoHerraCASA.Where(x => (x.idSimulacionNavigation.FechaCreacion >= fechaInicio) && (x.idSimulacionNavigation.FechaModificacion ?? x.idSimulacionNavigation.FechaCreacion).Date <= fechaFinal).ToList();
|
|
|
|
var listadoPorTipoURBAN = bd.estadisticas.Include(x => x.idSimulacionNavigation).Where(x => x.idSimulacionNavigation.idTipoSimulacion == 34 || x.idSimulacionNavigation.idTipoSimulacion == 35).ToList();
|
|
|
|
listadoHerramientaEstadisticaUrban = listadoPorTipoURBAN.Where(x => (x.idSimulacionNavigation.FechaCreacion >= fechaInicio) && (x.idSimulacionNavigation.FechaModificacion ?? x.idSimulacionNavigation.FechaCreacion).Date <= fechaFinal).ToList();
|
|
|
|
}
|
|
|
|
listadoHerramientaEstadisticaUsos = bd.estadisticasusos.AsEnumerable().Where(x => listadoHerramientaEstadistica.Any(y => y.idSimulacion == x.idSimulacion)).ToList();
|
|
listadoLicitacionUsos = bd.estadisticasusos.AsEnumerable().Where(x => listadoLicitacionesEstadistica.Any(y => y.idSimulacion == x.idSimulacion)).ToList();
|
|
|
|
listadoHerramientaEstadisticaFactores = bd.estadisticasfactores.AsEnumerable().Where(x => listadoHerramientaEstadistica.Any(y => y.idSimulacion == x.idsimulacion)).ToList();
|
|
}
|
|
}
|