Files
HerramientaCASA/HerramientaCASA/Components/Pages/HerramientaCASATabs/TrabajoProfesionalComponents/FasesTrabajoProfesionalGrid.razor

186 lines
6.5 KiB
Plaintext

@using BlazorBootstrap
@using bdHerramientaCACOA.db
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
<div class="d-flex justify-content-between mt-3">
<div class="puntoInfo">
@if (!string.IsNullOrEmpty(objetoCASA.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 12).Descripcion))
{
@UtilidadesCASA.CreateTooltip(objetoCASA.Enumerados.PuntosInformacion.First(x => x.idPuntosInformacion == 12).Descripcion)
}
<b>Fases</b></div>
</div>
<div style="position:relative;margin-bottom: 15px;">
<div style="justify-content: end; display: flex;">
</div>
<Grid TItem="CASA.FasesTrabajo"
Class="tablaCACOA table"
Data="listadoFases"
AllowFiltering="false"
PageSize="10"
Height="100"
EmptyText="No hay registros."
PageSizeSelectorVisible="false"
Responsive="true">
<GridColumns>
<GridColumn TItem="CASA.FasesTrabajo" HeaderTextAlignment="Alignment.Center" HeaderText="Fases" PropertyName="Denominacion" Class="colorFilasIntro">
@context.Denominacion
</GridColumn>
<GridColumn TItem="CASA.FasesTrabajo" HeaderText="">
<div class="d-flex">
<InputNumber Min="0" class="inputForm inputTabla tdAlineadoDerecha pe-0 me-1" Value=@context.Porcentaje TValue="double" ValueExpression="() => context.Porcentaje" ValueChanged="(value) => porcentajeCambiado(value,context)"></InputNumber> %
</div>
</GridColumn>
</GridColumns>
</Grid>
<table class="table tablaCACOA mb-0" style="position:absolute;bottom:-33px;">
<tfoot>
<tr>
<td colspan="2" class="text-end fw-bold colorC TotalesTabla">
<div class="d-flex justify-content-between">
<div class="mt-1">
<button @onclick="@(() => restablecerValores())" class="btnBlue d-flex align-items-center"> <i class="fas fa-undo pe-1"></i> Restablecer </button>
</div>
<div style="align-self: center;">
@if (totalPorcentaje != 100)
{
<div>
Trabajo en misión parcial: <span> @totalPorcentaje %</span>
</div>
}
else
{
<div>
Total: <span> @totalPorcentaje %</span>
</div>
}
</div>
</div>
</td>
</tr>
</tfoot>
</table>
</div>
@code {
[CascadingParameter]
public TrabajoProfesional _Parent { get; set; }
[Parameter]
public CASA objetoCASA { get; set; } = new CASA();
private double totalPorcentaje = 0;
public List<CASA.FasesTrabajo> listadoFases { get; set; } = new List<CASA.FasesTrabajo>();
private string tituloPopup = "";
private Modal popupGestionDatos = default!;
private Modal popupConfirmarBorrado = default!;
private CASA.FasesTrabajo itemSeleccionado = new CASA.FasesTrabajo();
List<ToastMessage> mensajes = new List<ToastMessage>();
protected override async Task OnInitializedAsync()
{
listadoFases = objetoCASA.TrabajoProfesional.FasesTrabajo.ToList();
totalPorcentaje = objetoCASA.TrabajoProfesional.FasesTrabajo.Sum(x => x.Porcentaje);
}
private async Task OnRowClick(GridRowEventArgs<CASA.FasesTrabajo> objeto)
{
itemSeleccionado = objeto.Item;
}
private async void porcentajeCambiado(double e, CASA.FasesTrabajo objeto)
{
double porcentajeTotal = calcularPorcentaje(e, objeto);
if (porcentajeTotal <= 100)
{
objeto.Porcentaje = (double)e;
if (objetoCASA.TrabajoProfesional.EsPorUsos)
{
objetoCASA.ActualizarFase(objeto);
}
else
{
objetoCASA.ActualizarFaseCalculo(_Parent.horasTPEOriginal);
_Parent.calcularModificarHora();
}
await InvokeAsync(StateHasChanged);
_Parent.RefreshState();
}
else
{
objeto.Porcentaje = 0;
objetoCASA.ActualizarFase(objeto);
mensajes.Add(new ToastMessage
{
Type = ToastType.Danger,
Message = $"La suma de los porcentajes no puede ser mayor de 100.",
});
}
totalPorcentaje = objetoCASA.TrabajoProfesional.FasesTrabajo.Sum(x => x.Porcentaje);
}
private double calcularPorcentaje(double e, CASA.FasesTrabajo objeto)
{
double porcentajeTotal = 0;
objeto.Porcentaje = e;
int indice = objetoCASA.TrabajoProfesional.FasesTrabajo
.FindIndex(x => x.idFase == objeto.idFase);
if (indice >= 0)
{
objetoCASA.TrabajoProfesional.FasesTrabajo[indice] = objeto;
}
porcentajeTotal = objetoCASA.TrabajoProfesional.FasesTrabajo.Sum(x => x.Porcentaje);
return porcentajeTotal;
}
private async void restablecerValores()
{
for (int i = 0; i < objetoCASA.Enumerados.FasesTrabajoOriginal.ToList().Count; i++)
{
objetoCASA.TrabajoProfesional.FasesTrabajo[i].Porcentaje = objetoCASA.Enumerados.FasesTrabajoOriginal.ToList()[i].Porcentaje;
}
if(objetoCASA.TrabajoProfesional.EsPorUsos){
// if (objetoCASA.TrabajoProfesional.HorasTPE != 0 && objetoCASA.TrabajoProfesional.HorasTPEDocumentacion != 0 && objetoCASA.TrabajoProfesional.HorasTPEDireccion != 0)
// {
// objetoCASA.CalcularHorasTPE();
// }
objetoCASA.CalcularHorasTPE();
}
else
{
// if (objetoCASA.TrabajoProfesional.HorasTPE != 0 && objetoCASA.TrabajoProfesional.HorasTPEDocumentacion != 0 && objetoCASA.TrabajoProfesional.HorasTPEDireccion != 0)
// {
// }
// _Parent.calcularModificarHora();
_Parent.restablecerHoras();
}
totalPorcentaje = objetoCASA.CalcularTotalFases();
await InvokeAsync(StateHasChanged);
_Parent.RefreshState();
}
}