Files
HerramientaCASA/HerramientaCASA/Components/Pages/LicitacionUrban/DocumentosLicitacion.razor
Perea c1cc98993f agregado puntos de informacion
agregado tabla estadisticas
2025-09-08 14:12:02 +02:00

307 lines
12 KiB
Plaintext

@using bdHerramientaCACOA.HerramientaURBAN
@using bdHerramientaCACOA.HerramientaUrban
@using bdHerramientaCACOA.db
@using static bdHerramientaCACOA.HerramientaURBAN.URBAN
<div class="row">
<div class="col-6 formatoCampos pt-2">
<label class="tituloLbl">Tipo de Documento:</label>
<InputSelect @bind-Value="@itemSeleccionado.idTipoDocumentacion" class="inputForm" @oninput="e => ValidarYActualizar(e, nameof(itemSeleccionado.idTipoDocumentacion))">
@foreach (var grupoTipologia in objetoLicitacionUrban.Enumerados.TiposDeDocumentos)
{
<option value="@grupoTipologia.idEnumeracion">@grupoTipologia.ValorAlfabetico1</option>
}
</InputSelect>
</div>
<div class="col-6 formatoCampos pt-2">
<label class="tituloLbl">Documento:</label>
<InputSelect @bind-Value="@itemSeleccionado.idTipoProyecto" class="inputForm" @oninput="e => ValidarYActualizar(e, nameof(itemSeleccionado.idTipoProyecto))">
@foreach (var tipoProy in tipoProyectoAux)
{
<option value="@tipoProy.idtipoproyectos">@tipoProy.Descripcion</option>
}
</InputSelect>
</div>
</div>
<div class="row mt-3">
<div class="col-4">
<label class="tituloLbl">
@if (!string.IsNullOrEmpty(objetoLicitacionUrban.Enumerados.PuntosInformacion.FirstOrDefault(x => x.idPuntosInformacion == 55).Descripcion))
{
@UtilidadesCASA.CreateTooltip(objetoLicitacionUrban.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 55).Descripcion)
}
Documentación Mínima:</label>
<Grid TItem="URBAN.DocumentacionURBAN"
Class="tablaCACOA table"
Data="objetoLicitacionUrban.TrabajoProfesional.DocumentacionMinima"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="URBAN.DocumentacionURBAN" HeaderTextAlignment="Alignment.Center" HeaderText="Descripción" PropertyName="Documentacion">
@context.Descripcion
</GridColumn>
</GridColumns>
</Grid>
</div>
<div class="col-4">
<label class="tituloLbl">
@if (!string.IsNullOrEmpty(objetoLicitacionUrban.Enumerados.PuntosInformacion.FirstOrDefault(x => x.idPuntosInformacion == 56).Descripcion))
{
@UtilidadesCASA.CreateTooltip(objetoLicitacionUrban.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 56).Descripcion)
}
Documentación Opcional:</label>
<Grid TItem="URBAN.DocumentacionURBAN"
Class="tablaCACOA table"
Data="objetoLicitacionUrban.TrabajoProfesional.DocumentacionOpcional"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="URBAN.DocumentacionURBAN" HeaderTextAlignment="Alignment.Center" HeaderText="Descripción" PropertyName="Documencación" Class="colorA">
@context.Descripcion
</GridColumn>
<GridColumn TItem="URBAN.DocumentacionURBAN" HeaderTextAlignment="Alignment.Center" HeaderText="Añadida">
<div class="d-flex justify-content-center checkTabla">
<CheckboxInput Class="align-content-center checkGordo" Value=@context.Checkeada TValue="double" ValueExpression="() => context.Checkeada" ValueChanged="(value) => opcionalCambiado(value,context)"></CheckboxInput>
</div>
</GridColumn>
</GridColumns>
</Grid>
</div>
<div class="col-4">
<label class="tituloLbl">
@if (!string.IsNullOrEmpty(objetoLicitacionUrban.Enumerados.PuntosInformacion.FirstOrDefault(x => x.idPuntosInformacion == 57).Descripcion))
{
@UtilidadesCASA.CreateTooltip(objetoLicitacionUrban.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 57).Descripcion)
}
Datos Necesarios:</label>
<Grid TItem="URBAN.DocumentacionURBAN"
Class="tablaCACOA table"
Data="objetoLicitacionUrban.TrabajoProfesional.DatosNecesarios"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="URBAN.DocumentacionURBAN" HeaderTextAlignment="Alignment.Center" HeaderText="Descripción" PropertyName="Documencación" Class="colorA">
@context.Descripcion
</GridColumn>
<GridColumn TItem="URBAN.DocumentacionURBAN" HeaderTextAlignment="Alignment.Center" HeaderText="Valor">
@if (context.esCheckbox)
{
<div class="d-flex justify-content-center checkTabla">
<CheckboxInput Class="align-content-center checkGordo" Value=@context.Checkeada TValue="double" ValueExpression="() => context.Checkeada" ValueChanged="(value) => DatoNecesarioCheckeado(value,context)"></CheckboxInput>
</div>
}
else
{
<div class="d-flex">
<InputNumber Min="0" class="inputForm inputTabla tdAlineadoDerecha pe-0 me-1" Value=@context.ValorNecesario TValue="double" ValueExpression="() => context.ValorNecesario" ValueChanged="(value) => DatoNecesarioCambiado(value,context)"></InputNumber>
@* <NumberInput TValue="double" Min="0" @onchange="cambiarNumero" @bind-Value="context.ValorNecesario" class="inputForm"></NumberInput> *@
</div>
}
</GridColumn>
</GridColumns>
</Grid>
<CascadingValue Value="this" IsFixed="false">
@* <InstrumentosLicitacionesUrban objetoLicitacionUrban="objetoLicitacionUrban"></InstrumentosLicitacionesUrban> *@
<InstrumentosLicitacionesUrban @ref="componenteInstrumentos" objetoLicitacionUrban="objetoLicitacionUrban" />
</CascadingValue>
</div>
</div>
@code {
[Parameter]
public bdHerramientaCACOA.LicitacionesURBAN objetoLicitacionUrban { get; set; } = new LicitacionesURBAN();
private List<tipoproyectosURBAN> tipoProyectoAux = new List<tipoproyectosURBAN>();
private InstrumentosLicitacionesUrban componenteInstrumentos;
private URBANTrabajoProfesional itemSeleccionado = new URBANTrabajoProfesional();
private string tituloPopup = "";
private Modal popupGestionDatos = default!;
private Modal popupConfirmarBorrado = default!;
private string tituloInfo = "";
private bool nuevoElemento;
List<ToastMessage> mensajes = new List<ToastMessage>();
[CascadingParameter]
public HerramientaCASA.Components.Pages.LicitacionesURBAN _Parent { get; set; }
protected override async Task OnInitializedAsync()
{
if (objetoLicitacionUrban.TrabajoProfesional.idTipoDocumentacion != 0)
{
itemSeleccionado.idTipoProyecto = objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto;
itemSeleccionado.idTipoDocumentacion = objetoLicitacionUrban.TrabajoProfesional.idTipoDocumentacion;
cambiarSelectDocumentos();
cambiarListasDocumentacion();
itemSeleccionado.idInstrumento = objetoLicitacionUrban.TrabajoProfesional.idInstrumento;
await InvokeAsync(StateHasChanged);
RefreshState();
}
}
private async void cambiarNumero()
{
componenteInstrumentos?.Recargar();
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async void ValidarYActualizar(ChangeEventArgs e, string fieldName)
{
var value = e.Value?.ToString();
var field = new FieldIdentifier(itemSeleccionado, fieldName);
switch (fieldName)
{
case nameof(itemSeleccionado.idTipoDocumentacion):
if (!string.IsNullOrEmpty(value))
{
itemSeleccionado.idTipoDocumentacion = int.Parse(value);
objetoLicitacionUrban.TrabajoProfesional.idTipoDocumentacion = itemSeleccionado.idTipoDocumentacion;
cambiarSelectDocumentos();
calcularHoraTrabajo();
}
else
{
itemSeleccionado.idTipoDocumentacion = 0;
objetoLicitacionUrban.TrabajoProfesional.idTipoDocumentacion = itemSeleccionado.idTipoDocumentacion;
}
break;
case nameof(itemSeleccionado.idTipoProyecto):
if (!string.IsNullOrEmpty(value))
{
itemSeleccionado.idTipoProyecto = int.Parse(value);
objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto = itemSeleccionado.idTipoProyecto;
cambiarListasDocumentacion();
calcularHoraTrabajo();
}
else
{
itemSeleccionado.idTipoProyecto = 0;
objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto = itemSeleccionado.idTipoProyecto;
}
break;
}
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async void calcularHoraTrabajo()
{
foreach (var datos in objetoLicitacionUrban.TrabajoProfesional.DatosNecesarios.ToList())
{
objetoLicitacionUrban.ActualizarDatoNecesario(datos);
}
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async Task cambiarSelectDocumentos()
{
tipoProyectoAux = objetoLicitacionUrban.Enumerados.ProyectosPorTipo(itemSeleccionado.idTipoDocumentacion);
if (itemSeleccionado.idTipoProyecto == 0)
{
objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto = tipoProyectoAux.First().idtipoproyectos;
}
else
{
if (tipoProyectoAux.Any(x => x.idtipoproyectos == itemSeleccionado.idTipoProyecto))
{
objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto = itemSeleccionado.idTipoProyecto;
}
else
{
objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto = tipoProyectoAux.First().idtipoproyectos;
}
}
cambiarListasDocumentacion();
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async Task cambiarListasDocumentacion()
{
objetoLicitacionUrban.TrabajoProfesional.DocumentacionMinima = objetoLicitacionUrban.DocumentacionMinima(objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto);
objetoLicitacionUrban.TrabajoProfesional.DocumentacionOpcional = objetoLicitacionUrban.DocumentacionOpcional(objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto);
objetoLicitacionUrban.TrabajoProfesional.DatosNecesarios = objetoLicitacionUrban.DatosNecesarios(objetoLicitacionUrban.TrabajoProfesional.idTipoProyecto);
objetoLicitacionUrban.ObtenerHoraTipoDocumento();
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async void opcionalCambiado(bool e, URBAN.DocumentacionURBAN objeto)
{
objeto.Checkeada = e;
objetoLicitacionUrban.ActualizarDocumentacionOpcional(objeto);
await InvokeAsync(StateHasChanged);
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async void DatoNecesarioCheckeado(bool e, URBAN.DocumentacionURBAN objeto)
{
objeto.Checkeada = e;
objetoLicitacionUrban.ActualizarDatoNecesario(objeto);
await InvokeAsync(StateHasChanged);
await InvokeAsync(StateHasChanged);
RefreshState();
}
private async void DatoNecesarioCambiado(double e, URBAN.DocumentacionURBAN objeto)
{
objeto.ValorNecesario = (double)e;
objetoLicitacionUrban.ActualizarDatoNecesario(objeto);
await InvokeAsync(StateHasChanged);
await InvokeAsync(StateHasChanged);
RefreshState();
}
public void RefreshState()
{
_Parent.RefreshState();
this.StateHasChanged();
}
}