agregado modificar textos en configuracion

This commit is contained in:
2025-09-24 13:31:59 +02:00
parent 9a562b3373
commit 31de59ed81
6 changed files with 258 additions and 42 deletions

View File

@@ -90,6 +90,14 @@
</div> </div>
</Content> </Content>
</Tab> </Tab>
<Tab Title="Textos PDF" Name="tabFactRend">
<Content>
<div class="CajaTab p-2">
<HerramientaCASA.Components.Pages.ConfiguracionPages.EnumeracionesTabs.TextosPDFConf></HerramientaCASA.Components.Pages.ConfiguracionPages.EnumeracionesTabs.TextosPDFConf>
</div>
</Content>
</Tab>
</Tabs> </Tabs>
</div> </div>

View File

@@ -0,0 +1,179 @@
@inject NavigationManager Navigation
@layout ConfiguracionLayout
@using BlazorBootstrap
@using System.Globalization
@using bdHerramientaCACOA.db
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
<EditForm EditContext="@editContext" OnValidSubmit="guardarFormulario" FormName="puestoTrabForm">
<DataAnnotationsValidator></DataAnnotationsValidator>
<Modal @ref="popupGestionDatos" title="@tituloPopup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
<BodyTemplate>
<div class="row">
<div class="col-12 formatoCampos pt-2">
<label class="tituloLbl">Texto:</label>
<TextAreaInput Style="height:220px; max-height:220px" MaxLength="2000" @bind-Value="@textoItem" Rows="3" TextAlignment="Alignment.Start" />
</div>
</div>
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupGestionDatos">Cerrar</Button>
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary">@(nuevoElemento ? "Añadir" : "Modificar")</Button>
</FooterTemplate>
</Modal>
</EditForm>
<div>
<Grid TItem="enumeraciones"
Class="tablaCACOA table"
Data="listadoTextosPDF"
AllowFiltering="false"
PageSize="10"
FixedHeader="true"
Height="750"
Unit="Unit.Px"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="enumeraciones" Class="columna20Ancho" HeaderTextAlignment="Alignment.Center" HeaderText="Descripción">
<span>@context.Descripcion</span>
</GridColumn>
<GridColumn TItem="enumeraciones" HeaderTextAlignment="Alignment.Center" HeaderText="Texto">
<span>@context.ValorAlfabeticoLargo</span>
</GridColumn>
<GridColumn TItem="enumeraciones" Class="botonesTabla" HeaderText="">
<div class="btnTablasEspaciado">
<span @onclick="@(() => abrirPopupGestionDatos(@context, false))" class="btnBorrarGuardar">
<Icon CustomIconName="fas fa-edit"></Icon>
</span>
</div>
</GridColumn>
</GridColumns>
</Grid>
</div>
@code {
public List<enumeraciones> listadoTextosPDF { get; set; } = new List<enumeraciones>();
[SupplyParameterFromForm]
private enumeraciones itemSeleccionado { get; set; } = new enumeraciones();
private string tituloPopup = "";
private Modal popupGestionDatos = default!;
private Modal popupConfirmarBorrado = default!;
private bool nuevoElemento;
private string textoItem = "";
List<ToastMessage> mensajes = new List<ToastMessage>();
private EditContext? editContext;
private ValidationMessageStore? messageStore;
public tsHerramientasCACOA bd;
private string codigoEnumeracion = "VARPDF";
protected override async Task OnInitializedAsync()
{
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
editContext = new EditContext(itemSeleccionado);
messageStore = new ValidationMessageStore(editContext);
listadoTextosPDF = UtilidadesCASA.devolverListadoOrdenadoEnumeracion(bd, codigoEnumeracion);
}
private async Task abrirPopupGestionDatos(enumeraciones objeto, bool esNuevo)
{
itemSeleccionado = objeto;
nuevoElemento = false;
textoItem = objeto.ValorAlfabeticoLargo;
tituloPopup = "Modificar texto";
await popupGestionDatos.ShowAsync();
}
private async Task cerrarPopupGestionDatos()
{
await popupGestionDatos.HideAsync();
}
private async Task GestionarDatos(string accion)
{
var enumObtenido = bd.enumeraciones.Where(x => x.idEnumeracion == itemSeleccionado.idEnumeracion).FirstOrDefault();
itemSeleccionado.ValorAlfabeticoLargo = textoItem;
switch (accion)
{
case "update":
UtilidadesCASA.guardarEnumeracion(bd, itemSeleccionado, codigoEnumeracion, nuevoElemento, enumObtenido);
await cerrarPopupGestionDatos();
mensajes.Add(new ToastMessage
{
Type = ToastType.Primary,
Message = $"Actualizado correctamente.",
});
break;
}
bd.SaveChanges();
listadoTextosPDF = UtilidadesCASA.devolverListadoOrdenadoEnumeracion(bd, codigoEnumeracion);
await InvokeAsync(StateHasChanged);
}
private async Task cerrarPopupConfirmarBorrado()
{
await popupConfirmarBorrado.HideAsync();
}
// GUARDAR
private async Task guardarFormulario()
{
try
{
if (!editContext!.GetValidationMessages().Any())
{
string accion = nuevoElemento ? "create" : "update";
await GestionarDatos(accion);
}
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.",
});
}
}
}

View File

@@ -3,8 +3,7 @@
@* ENCABEZADO DE LA PAGINA *@ @* ENCABEZADO DE LA PAGINA *@
<div class="EncabezadoImprimir"> <div class="EncabezadoImprimir">
<p> <p>
Documento impreso del módulo de Servicios de Arquitectura Edificación con los datos y @msTextoEncabezado
estimación de Costes de Producción resultado de la simulación.
</p> </p>
<div class="d-flex flex-column mt-3"> <div class="d-flex flex-column mt-3">
@@ -17,7 +16,7 @@
<div class="col-8 mx-auto" style="align-items: flex-end; margin-bottom:30px;"> <div class="col-8 mx-auto" style="align-items: flex-end; margin-bottom:30px;">
<div class="TituloTablaImprimir"> <div class="TituloTablaImprimir">
<b>Coste hora Despacho Profesional</b> <b>Coste hora de los trabajos realizados por el despacho profesional</b>
</div> </div>
<div class="table-responsive espacioTablas"> <div class="table-responsive espacioTablas">
@@ -304,16 +303,10 @@
<div class="FooterImprimir"> <div class="FooterImprimir">
<p> <p>
Los resultados de esta simulación son una mera estimación del tiempo necesario en la realización del trabajo @mspie1
profesional, que siempre estará supeditado a su determinación concreta por parte del autor de este estudio económico,
teniendo presente factores propios de eficiencia como la estandarización de procesos, eficiencia en el trabajo,
aprovechamiento de estudios y trabajos anteriores y mejoras en la productividad de su propio despacho profesional.
</p> </p>
<p> <p>
El presente documento no tiene validez contractual. Los datos obtenidos son meramente estimativos y generados por la @mspie2
aplicación en función de los datos que posee y que el usuario ha introducido. En nigún caso tiene por qué corresponder
con la realidad ni el CACOA garantiza la veracidad de los mismos, pro lo que no es responsable de su veracidad en sí ni
sobre terceros.
</p> </p>
</div> </div>
@@ -330,11 +323,26 @@
public tsHerramientasCACOA bd; public tsHerramientasCACOA bd;
MarkupString msTextoEncabezado => (MarkupString)textoEncabezado;
MarkupString mspie1 => (MarkupString)pie1;
MarkupString mspie2 => (MarkupString)pie2;
string textoEncabezado = "";
string pie1 = "";
string pie2 = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false); bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
totalUsos = objetoCASA.TrabajoProfesional.Usos.Count; totalUsos = objetoCASA.TrabajoProfesional.Usos.Count;
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFCASA")).ValorAlfabeticoLargo;
pie1 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE1")).ValorAlfabeticoLargo;
pie2 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE2")).ValorAlfabeticoLargo;
} }
public void RefreshState() public void RefreshState()
{ {

View File

@@ -6,8 +6,8 @@
@* ENCABEZADO DE LA PAGINA *@ @* ENCABEZADO DE LA PAGINA *@
<div class="EncabezadoImprimir"> <div class="EncabezadoImprimir">
<p> <p>
Documento impreso del módulo de Servicios de Arquitectura Edificación con los datos y @msTextoEncabezado
estimación de Costes de Producción resultado de la simulación.
</p> </p>
<div class="d-flex flex-column mt-3"> <div class="d-flex flex-column mt-3">
@@ -18,7 +18,7 @@
<div class="col-8 mx-auto" style="align-items: flex-end;"> <div class="col-8 mx-auto" style="align-items: flex-end;">
<div class="TituloTablaImprimir"> <div class="TituloTablaImprimir">
<b>Coste hora Despacho Profesional</b> <b>Coste hora de los trabajos realizados por el despacho profesional</b>
</div> </div>
<div class="table-responsive espacioTablas"> <div class="table-responsive espacioTablas">
@@ -425,16 +425,10 @@
<div class="FooterImprimir"> <div class="FooterImprimir">
<p> <p>
Los resultados de esta simulación son una mera estimación del tiempo necesario en la realización del trabajo @mspie1
profesional, que siempre estará supeditado a su determinación concreta por parte del autor de este estudio económico,
teniendo presente factores propios de eficiencia como la estandarización de procesos, eficiencia en el trabajo,
aprovechamiento de estudios y trabajos anteriores y mejoras en la productividad de su propio despacho profesional.
</p> </p>
<p> <p>
El presente documento no tiene validez contractual. Los datos obtenidos son meramente estimativos y generados por la @mspie2
aplicación en función de los datos que posee y que el usuario ha introducido. En nigún caso tiene por qué corresponder
con la realidad ni el CACOA garantiza la veracidad de los mismos, pro lo que no es responsable de su veracidad en sí ni
sobre terceros.
</p> </p>
</div> </div>
@@ -449,6 +443,14 @@
public tsHerramientasCACOA bd; public tsHerramientasCACOA bd;
string separacionTabla = "col-12 mx-auto mb-5"; string separacionTabla = "col-12 mx-auto mb-5";
MarkupString msTextoEncabezado => (MarkupString)textoEncabezado;
MarkupString mspie1 => (MarkupString)pie1;
MarkupString mspie2 => (MarkupString)pie2;
string textoEncabezado = "";
string pie1 = "";
string pie2 = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false); bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
@@ -456,6 +458,11 @@
{ {
separacionTabla = "col-12 mx-auto mb-4"; separacionTabla = "col-12 mx-auto mb-4";
} }
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFURBAN")).ValorAlfabeticoLargo;
pie1 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE1")).ValorAlfabeticoLargo;
pie2 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE2")).ValorAlfabeticoLargo;
} }
public void RefreshState() public void RefreshState()
{ {

View File

@@ -4,8 +4,7 @@
@* ENCABEZADO DE LA PAGINA *@ @* ENCABEZADO DE LA PAGINA *@
<div class="EncabezadoImprimir"> <div class="EncabezadoImprimir">
<p> <p>
Documento impreso del módulo de Servicios de Arquitectura Edificación con los datos y @msTextoEncabezado
estimación de Costes de Producción resultado de la simulación.
</p> </p>
<div class="d-flex flex-column mt-3"> <div class="d-flex flex-column mt-3">
@@ -199,16 +198,10 @@
<div class="FooterImprimir"> <div class="FooterImprimir">
<p> <p>
Los resultados de esta simulación son una mera estimación del tiempo necesario en la realización del trabajo @mspie1
profesional, que siempre estará supeditado a su determinación concreta por parte del autor de este estudio económico,
teniendo presente factores propios de eficiencia como la estandarización de procesos, eficiencia en el trabajo,
aprovechamiento de estudios y trabajos anteriores y mejoras en la productividad de su propio despacho profesional.
</p> </p>
<p> <p>
El presente documento no tiene validez contractual. Los datos obtenidos son meramente estimativos y generados por la @mspie2
aplicación en función de los datos que posee y que el usuario ha introducido. En nigún caso tiene por qué corresponder
con la realidad ni el CACOA garantiza la veracidad de los mismos, pro lo que no es responsable de su veracidad en sí ni
sobre terceros.
</p> </p>
</div> </div>
</div> </div>
@@ -223,9 +216,22 @@
public tsHerramientasCACOA bd; public tsHerramientasCACOA bd;
MarkupString msTextoEncabezado => (MarkupString)textoEncabezado;
MarkupString mspie1 => (MarkupString)pie1;
MarkupString mspie2 => (MarkupString)pie2;
string textoEncabezado = "";
string pie1 = "";
string pie2 = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false); bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFCASALIC")).ValorAlfabeticoLargo;
pie1 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE1")).ValorAlfabeticoLargo;
pie2 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE2")).ValorAlfabeticoLargo;
} }
public void RefreshState() public void RefreshState()
{ {

View File

@@ -6,8 +6,7 @@
@* ENCABEZADO DE LA PAGINA *@ @* ENCABEZADO DE LA PAGINA *@
<div class="EncabezadoImprimir"> <div class="EncabezadoImprimir">
<p> <p>
Documento impreso del módulo de Servicios de Arquitectura Edificación con los datos y @msTextoEncabezado
estimación de Costes de Producción resultado de la simulación.
</p> </p>
<div class="d-flex flex-column mt-3"> <div class="d-flex flex-column mt-3">
@@ -358,16 +357,10 @@
<div class="FooterImprimir"> <div class="FooterImprimir">
<p> <p>
Los resultados de esta simulación son una mera estimación del tiempo necesario en la realización del trabajo @mspie1
profesional, que siempre estará supeditado a su determinación concreta por parte del autor de este estudio económico,
teniendo presente factores propios de eficiencia como la estandarización de procesos, eficiencia en el trabajo,
aprovechamiento de estudios y trabajos anteriores y mejoras en la productividad de su propio despacho profesional.
</p> </p>
<p> <p>
El presente documento no tiene validez contractual. Los datos obtenidos son meramente estimativos y generados por la @mspie2
aplicación en función de los datos que posee y que el usuario ha introducido. En nigún caso tiene por qué corresponder
con la realidad ni el CACOA garantiza la veracidad de los mismos, pro lo que no es responsable de su veracidad en sí ni
sobre terceros.
</p> </p>
</div> </div>
@@ -382,14 +375,29 @@
string espacioTabla = "margin-bottom:400px;"; string espacioTabla = "margin-bottom:400px;";
MarkupString msTextoEncabezado => (MarkupString)textoEncabezado;
MarkupString mspie1 => (MarkupString)pie1;
MarkupString mspie2 => (MarkupString)pie2;
string textoEncabezado = "";
string pie1 = "";
string pie2 = "";
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false); bd = tsHerramientasCACOA.NuevoContexto(SoloLectura: false);
if (objetoLicitacionUrban.TrabajoProfesional.DocumentacionMinima.Count == 0) if (objetoLicitacionUrban.TrabajoProfesional.DocumentacionMinima.Count == 0)
{ {
espacioTabla = ""; espacioTabla = "";
} }
textoEncabezado = bd.enumeraciones.First(x => x.Codigo.Contains("PDFURBANLIC")).ValorAlfabeticoLargo;
pie1 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE1")).ValorAlfabeticoLargo;
pie2 = bd.enumeraciones.First(x => x.Codigo.Contains(".PDFPIE2")).ValorAlfabeticoLargo;
} }
public void RefreshState() public void RefreshState()
{ {