@using HerramientaCASA.Model @using Microsoft.EntityFrameworkCore @using System.Globalization @using bdHerramientaCACOA.db @inject UserState UserState
¿Estás seguro que desea eliminarlo?
@GetExternalValidationMessage(nameof(itemSeleccionadoTemporal.superficie))
@foreach (var grupoTipologia in objetoLicitaciones.Enumerados.GruposTipologias) { }
@GetExternalValidationMessage(nameof(itemSeleccionadoTemporal.idGrupoTipologia))
@foreach (var tipologia in tipologiasAux) { }
@foreach (var intervencion in intervencionesAux) { }
Usos/Tipología
@* *@
@context.superficie.MilesYDecimales() @objetoLicitaciones.Enumerados.GruposTipologias?.FirstOrDefault(x => x.idEnumeracion == context.idGrupoTipologia)?.ValorAlfabetico1 @objetoLicitaciones.Enumerados.Tipologias?.FirstOrDefault(x => x.idTipologia == context.idTipologia)?.Descripcion @objetoLicitaciones.Enumerados.Intervenciones?.FirstOrDefault(x => x.idEnumeracion == context.idTipoIntervencion)?.ValorAlfabetico1
Total superficie: @UsosTipologias.Sum(x => x.superficie).MilesYDecimales()
@code { [CascadingParameter] public Licitaciones _Parent { get; set; } [Parameter] public LICITACIONES objetoLicitaciones { get; set; } = new LICITACIONES(); public List UsosTipologias { get; set; } = new List(); private List tipologiasAux = new List(); private List intervencionesAux = new List(); [SupplyParameterFromForm] private CASA.UsosTipologia itemSeleccionado { get; set; } = new CASA.UsosTipologia(); private CASA.UsosTipologia itemSeleccionadoTemporal { get; set; } = new CASA.UsosTipologia(); private string tituloPopup = ""; private Modal popupGestionDatos = default!; private Modal popupConfirmarBorrado = default!; private bool nuevoElemento; List mensajes = new List(); private EditContext? editContext; private ValidationMessageStore? messageStore; protected override async Task OnInitializedAsync() { editContext = new EditContext(itemSeleccionado); messageStore = new ValidationMessageStore(editContext); UsosTipologias = objetoLicitaciones.Usos.ToList(); } private async Task GestionarDatos(string accion) { rellenarItem(); switch (accion) { case "update": objetoLicitaciones.ActualizarUso(itemSeleccionado); await cerrarPopupGestionDatos(); mensajes.Add(new ToastMessage { Type = ToastType.Primary, Message = $"Actualizado correctamente.", }); break; case "create": objetoLicitaciones.InsertarUso(itemSeleccionado); await cerrarPopupGestionDatos(); mensajes.Add(new ToastMessage { Type = ToastType.Primary, Message = $"Guardado correctamente.", }); break; case "delete": objetoLicitaciones.EliminarUso(itemSeleccionado); await cerrarPopupConfirmarBorrado(); mensajes.Add(new ToastMessage { Type = ToastType.Primary, Message = $"Eliminado correctamente.", }); break; } UsosTipologias = objetoLicitaciones.Usos.ToList(); await InvokeAsync(StateHasChanged); _Parent.RefreshState(); } private async Task BorrarItem() { await GestionarDatos("delete"); } private async Task abrirPopupGestionDatos(CASA.UsosTipologia objeto,bool esNuevo) { itemSeleccionado = objeto; if (esNuevo) { itemSeleccionadoTemporal = new CASA.UsosTipologia(); nuevoElemento = true; } else { itemSeleccionadoTemporal = new CASA.UsosTipologia() { CoefIntervencion = objeto.CoefIntervencion, CoefTipologia = objeto.CoefTipologia, idGrupoTipologia = objeto.idGrupoTipologia, idTipoIntervencion = objeto.idTipoIntervencion, idTipologia = objeto.idTipologia, superficie = objeto.superficie, SuperficieCoefIntervencion = objeto.SuperficieCoefIntervencion, SuperficieCoefTipologia = objeto.SuperficieCoefTipologia }; await cambiarTipologia(); nuevoElemento = false; } if (!nuevoElemento) { tituloPopup = "Modificar uso"; } else { tituloPopup = "Nuevo uso"; } await popupGestionDatos.ShowAsync(); } private async Task cerrarPopupGestionDatos() { await popupGestionDatos.HideAsync(); } private async Task cambiarTipologia() { tipologiasAux = objetoLicitaciones.Enumerados.TipologiasPorGrupo(itemSeleccionadoTemporal.idGrupoTipologia).ToList(); if (itemSeleccionadoTemporal.idTipologia == 0) { itemSeleccionadoTemporal.idTipologia = tipologiasAux.First().idTipologia; } else { if (tipologiasAux.Any(x => x.idTipologia == itemSeleccionadoTemporal.idTipologia)) { itemSeleccionadoTemporal.idTipologia = itemSeleccionadoTemporal.idTipologia; } else { itemSeleccionadoTemporal.idTipologia = tipologiasAux.First().idTipologia; } } intervencionesAux = objetoLicitaciones.Enumerados.Intervenciones.ToList(); itemSeleccionadoTemporal.idTipoIntervencion = itemSeleccionadoTemporal.idTipoIntervencion == 0 ? intervencionesAux.First().idEnumeracion : itemSeleccionadoTemporal.idTipoIntervencion; await InvokeAsync(StateHasChanged); } //////// PopUp eliminar registro private async Task abrirPopupConfirmarBorrado(CASA.UsosTipologia objeto) { itemSeleccionadoTemporal = objeto; await popupConfirmarBorrado.ShowAsync(); } private async Task cerrarPopupConfirmarBorrado() { await popupConfirmarBorrado.HideAsync(); } private async Task OnRowClick(GridRowEventArgs objeto) { itemSeleccionado = objeto.Item; } private void ValidarYActualizar(ChangeEventArgs e, string fieldName) { var value = e.Value?.ToString(); var field = new FieldIdentifier(itemSeleccionadoTemporal, fieldName); switch (fieldName) { case nameof(itemSeleccionado.superficie): if (!string.IsNullOrEmpty(value)) { string parseado = value.Replace(",", "."); itemSeleccionadoTemporal.superficie = double.Parse(parseado, CultureInfo.InvariantCulture); } break; case nameof(itemSeleccionadoTemporal.idGrupoTipologia): if (!string.IsNullOrEmpty(value)) { itemSeleccionadoTemporal.idGrupoTipologia = int.Parse(value); cambiarTipologia(); } else { itemSeleccionadoTemporal.idGrupoTipologia = 0; } break; } messageStore?.Clear(field); if (fieldName == nameof(itemSeleccionadoTemporal.superficie) && itemSeleccionadoTemporal.superficie <= 0) { messageStore?.Add(field, "La superficie debe ser mayor que 0."); } if (fieldName == nameof(itemSeleccionadoTemporal.idGrupoTipologia) && itemSeleccionadoTemporal.idGrupoTipologia == 0) { messageStore?.Add(field, "Seleccione un tipo de uso."); } editContext?.NotifyValidationStateChanged(); } private void ValidarTodo() { ValidarYActualizar(new ChangeEventArgs { Value = itemSeleccionadoTemporal.superficie }, nameof(itemSeleccionadoTemporal.superficie)); ValidarYActualizar(new ChangeEventArgs { Value = itemSeleccionadoTemporal.idGrupoTipologia }, nameof(itemSeleccionadoTemporal.idGrupoTipologia)); } private string GetExternalValidationMessage(string fieldName) { var field = new FieldIdentifier(itemSeleccionadoTemporal, fieldName); return messageStore?[field].FirstOrDefault() ?? string.Empty; } // GUARDAR private async Task guardarFormulario() { try { ValidarTodo(); if (!editContext!.GetValidationMessages().Any()) { string accion = nuevoElemento ? "create" : "update"; GestionarDatos(accion); mensajes.Add(new ToastMessage { Type = ToastType.Primary, Message = $"Guardado correctamente.", }); } else { mensajes.Add(new ToastMessage { Type = ToastType.Warning, Message = $"Debe rellenar los campos obligatorios.", }); } } catch (Exception) { mensajes.Add(new ToastMessage { Type = ToastType.Danger, Message = $"Error al guardar.", }); } } private void MostrarErrores() { messageStore?.Clear(); foreach (var field in new[] { nameof(itemSeleccionado.superficie), nameof(itemSeleccionado.idGrupoTipologia) }) { ValidarYActualizar(new ChangeEventArgs { Value = typeof(CASA.UsosTipologia).GetProperty(field)?.GetValue(itemSeleccionado) }, field); } } private void rellenarItem() { itemSeleccionado.CoefIntervencion = itemSeleccionadoTemporal.CoefIntervencion; itemSeleccionado.CoefTipologia = itemSeleccionadoTemporal.CoefTipologia; itemSeleccionado.idGrupoTipologia = itemSeleccionadoTemporal.idGrupoTipologia; itemSeleccionado.idTipoIntervencion = itemSeleccionadoTemporal.idTipoIntervencion; itemSeleccionado.idTipologia = itemSeleccionadoTemporal.idTipologia; itemSeleccionado.superficie = itemSeleccionadoTemporal.superficie; itemSeleccionado.SuperficieCoefIntervencion = itemSeleccionadoTemporal.SuperficieCoefIntervencion; itemSeleccionado.SuperficieCoefTipologia = itemSeleccionadoTemporal.SuperficieCoefTipologia; } }