- La generación de nominas la lista de personas viene vacía y de error. YA NO DA ERROR PERO NO TENGO CLARO SI DEBE DEVOLVER ALGO O APLICA CAMBIOS A OTRAS COSAS - Por regla general salvo lo que necesite mostrar hora, la fecha se muestra sin la hora, por el ejemplo en el grid de personas cuando muestras Ver todos, la fecha baja viene con la hora. - Las cantidades por defecto con punto de miles y coma de decimales. - Lo bolean, que sean una caja de check .
356 lines
14 KiB
Plaintext
356 lines
14 KiB
Plaintext
@page "/Bancos"
|
|
@using System.Net.Http.Headers
|
|
@using System.Linq.Expressions
|
|
@using Newtonsoft.Json
|
|
@using System.Text
|
|
@using Serialize.Linq.Serializers
|
|
@using GestionPersonalWeb.Models
|
|
@using BlazorBootstrap
|
|
@using bdAntifraude.db
|
|
@using Microsoft.AspNetCore.Components
|
|
@rendermode InteractiveServer
|
|
@inject IJSRuntime JS
|
|
@inject NavigationManager NavigationManager
|
|
@inject IHttpClientFactory HttpClientFactory
|
|
@inject IHttpContextAccessor HttpContextAccessor
|
|
@inject UserState UserState
|
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
|
<div class="pagina">
|
|
<div class="Cabecera">
|
|
<h6><small><i class="fas fa-user"></i><b> Bancos</b></small></h6>
|
|
<button @onclick="@(() => abrirPopupModificacion(new BANCOS(), true))" class="btnOAAFAzul">Nuevo </button>
|
|
</div>
|
|
|
|
@if (lBancos == null)
|
|
{
|
|
<div id="cargando" class="loadingFrame">
|
|
<div class="loadingImg"></div>
|
|
</div>
|
|
}
|
|
else if (!lBancos.Any())
|
|
{
|
|
<p>No se encontraron datos para mostrar.</p>
|
|
}
|
|
else
|
|
{
|
|
<div class="botonera col-12 gap-1" style="display:flex;" role="group">
|
|
</div>
|
|
<div style="display:flex; justify-content:start; gap:15px;width:100%"></div>
|
|
<div class="form-group mt-4 mb-4">
|
|
<input class="form-control" type="text" placeholder="Filtrar..."
|
|
@bind-value="Filter" @bind-value:event="oninput" />
|
|
</div>
|
|
|
|
<div style="overflow-x:auto;" class="tablaDesk">
|
|
<Grid TItem="BANCOS"
|
|
Class="table tablaRegPers"
|
|
Data="@lBancos"
|
|
AllowFiltering="false"
|
|
AllowPaging="false"
|
|
AllowSorting="true"
|
|
EmptyText="No se han encontrado datos"
|
|
Height="80"
|
|
PageSizeSelectorVisible="false"
|
|
Responsive="true"
|
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
|
<GridColumns>
|
|
<GridColumn TItem="BANCOS" HeaderText="">
|
|
<button @onclick="@(() => abrirPopupModificacion(@context, false))" class="btnOAAFAzul">Editar</button>
|
|
</GridColumn>
|
|
<GridColumn TItem="BANCOS" HeaderText="Código" PropertyName="CODIGO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.CODIGO">
|
|
@context.CODIGO
|
|
</GridColumn>
|
|
<GridColumn TItem="BANCOS" HeaderText="Nombre" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NOMBRE">
|
|
@context.NOMBRE
|
|
</GridColumn>
|
|
<GridColumn TItem="BANCOS" HeaderText="BIC" PropertyName="BIC" FilterButtonCSSClass="hidden" SortKeySelector="item => item.BIC">
|
|
@context.BIC
|
|
</GridColumn>
|
|
<GridColumn TItem="BANCOS" HeaderText="Obsoleto" PropertyName="OBSOLETO" FilterButtonCSSClass="hidden" SortKeySelector="item => item.OBSOLETO">
|
|
@if (context.OBSOLETO)
|
|
{
|
|
<i class="fa-regular fa-square-check"></i>
|
|
}
|
|
</GridColumn>
|
|
@*<GridColumn TItem="TIPOSPUESTOSTRABAJO" HeaderText="Tipo" PropertyName="IDTIPOPERSONANavigation.DESCRIPCION" FilterButtonCSSClass="hidden">
|
|
@context.IDTIPOPERSONANavigation.DESCRIPCION
|
|
</GridColumn>
|
|
<GridColumn TItem="BANCOS" HeaderText="Fecha baja" PropertyName="FECHABAJA" TextNoWrap="true" FilterButtonCSSClass="hidden" SortKeySelector="item => item.FECHABAJA">
|
|
@if (context.FECHABAJA != null)
|
|
{
|
|
@context.FECHABAJA?.ToString("dd/MM/yyyy")
|
|
}
|
|
|
|
</GridColumn> *@
|
|
|
|
</GridColumns>
|
|
</Grid>
|
|
</div>
|
|
|
|
<!-- Vista móvil -->
|
|
<div class="tablaMov">
|
|
@foreach (var itm in lBancos)
|
|
{
|
|
var collapseId = $"collapse{itm.IDBANCO}";
|
|
<div class="card collapse-card Aceptada">
|
|
<div class="card-header mb-1" data-bs-toggle="collapse" data-bs-target="#@collapseId" aria-expanded="false" aria-controls="@collapseId">
|
|
<h5 class="mb-0">@itm.NOMBRE</h5>
|
|
</div>
|
|
<div id="@collapseId" class="collapse">
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-3">Código</dt>
|
|
<dd class="col-sm-9">@itm.CODIGO</dd>
|
|
<dt class="col-sm-3">Nombre</dt>
|
|
<dd class="col-sm-9">@itm.NOMBRE</dd>
|
|
<dt class="col-sm-3">BIC</dt>
|
|
<dd class="col-sm-9">@itm.BIC</dd>
|
|
<dt class="col-sm-3">Obsoleto</dt>
|
|
<dd class="col-sm-9">
|
|
@if (itm.OBSOLETO == true)
|
|
{
|
|
<i class="fa-regular fa-square-check"></i>
|
|
}
|
|
else { }
|
|
|
|
@* @if(itm.OBSOLETO)
|
|
{
|
|
<i class="fa-regular fa-square-check"></i>
|
|
}
|
|
else
|
|
{
|
|
<i class="fa-regular fa-square-uncheck"></i>
|
|
} *@
|
|
</dd>
|
|
<dd class="col-sm-12">
|
|
<button @onclick="@(() => abrirPopupModificacion(@itm, true))" class="btnOAAFAzul">Editar </button>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
</div>
|
|
<EditForm EditContext="@editContext" OnValidSubmit="GuardarCambiosPopup" OnInvalidSubmit="@MostrarErroresPopup" FormName="costeIndiForm">
|
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
|
<Modal @ref="popupGestionDatos" title="@tituloPopup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
|
<BodyTemplate>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<label for="txtEDesc" class="fw-bold">Codigo: </label>
|
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.CODIGO" />
|
|
</div>
|
|
<div class="col-md-12">
|
|
<label for="txtEDesc" class="fw-bold">Nombre: </label>
|
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.NOMBRE" />
|
|
</div>
|
|
<div class="col-md-12">
|
|
<label for="txtEDesc" class="fw-bold">BIC: </label>
|
|
<input class="form-control" id="txtEDesc" @bind-value="@ItemEnEdicion.BIC" />
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label for="" class="fw-bold">Obsoleto: </label>
|
|
<input type="checkbox" class="form-check" id="chkECotizaSS" checked="@ItemEnEdicion.OBSOLETO" @bind-value="@ItemEnEdicion.OBSOLETO" />
|
|
</div>
|
|
</div>
|
|
</BodyTemplate>
|
|
<FooterTemplate>
|
|
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
|
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary">@(EsItemNuevo ? "Añadir" : "Modificar")</Button>
|
|
</FooterTemplate>
|
|
</Modal>
|
|
</EditForm>
|
|
@code {
|
|
private List<BANCOS> lBancos = new List<BANCOS>();
|
|
private List<BANCOS> banco = new List<BANCOS>();
|
|
|
|
private string tituloPopup = "";
|
|
private Modal popupGestionDatos = default;
|
|
private bool EsItemNuevo = false;
|
|
private BANCOS ItemEnEdicion { get; set; } = new BANCOS();
|
|
|
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
|
private EditContext? editContext;
|
|
|
|
|
|
private string _filter = "";
|
|
public string Filter
|
|
{
|
|
get => _filter;
|
|
set
|
|
{
|
|
if (_filter != value)
|
|
{
|
|
_filter = value;
|
|
AplicarFiltros();
|
|
}
|
|
}
|
|
}
|
|
private void AplicarFiltros()
|
|
{
|
|
lBancos = banco.Where(per =>
|
|
string.IsNullOrEmpty(Filter) ||
|
|
Utilidades.RemoveDiacritics(per.CODIGO).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
|
Utilidades.RemoveDiacritics(per.NOMBRE.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase) ||
|
|
Utilidades.RemoveDiacritics(per.BIC.ToString()).Contains(Utilidades.RemoveDiacritics(Filter), StringComparison.OrdinalIgnoreCase)
|
|
).ToList();
|
|
UserState.CurrentPage = 1;
|
|
}
|
|
// Bandera que indica si se está en modo "Ver Todos"
|
|
private bool verTodosActive = false;
|
|
|
|
private async Task ToggleVerTodos()
|
|
{
|
|
if (!verTodosActive)
|
|
{
|
|
verTodosActive = true;
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
|
|
var resultPersonas = await client.GetAsync("/BANCOS");
|
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
|
?? new List<BANCOS>();
|
|
}
|
|
else
|
|
{
|
|
verTodosActive = false;
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
|
|
var resultPersonas = await client.GetAsync("/api/BANCOS");
|
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
|
?? new List<BANCOS>();
|
|
}
|
|
|
|
banco = banco
|
|
.OrderBy(x => x.CODIGO)
|
|
.ToList();
|
|
|
|
lBancos = banco;
|
|
UserState.CurrentPage = 1;
|
|
Filter = "";
|
|
}
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
verTodosActive = false;
|
|
var token = UserState.Token;
|
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
|
editContext = new EditContext(lBancos);
|
|
var resultPersonas = await cliente.GetAsync("/api/BANCOS");
|
|
var resultContent = await resultPersonas.Content.ReadAsStringAsync();
|
|
banco = JsonConvert.DeserializeObject<List<BANCOS>>(resultContent)
|
|
?? new List<BANCOS>();
|
|
|
|
banco = banco.OrderBy(x => x.CODIGO)
|
|
.ToList();
|
|
|
|
lBancos = banco;
|
|
|
|
|
|
}
|
|
private async Task abrirPopupModificacion(BANCOS objeto, bool esNuevo)
|
|
{
|
|
ItemEnEdicion = Utilidades.ClonarObjeto(objeto);
|
|
EsItemNuevo = esNuevo;
|
|
if (!EsItemNuevo)
|
|
{
|
|
tituloPopup = "Modificando Banco";
|
|
}
|
|
else
|
|
{
|
|
tituloPopup = "Nuevo Banco";
|
|
}
|
|
|
|
await popupGestionDatos.ShowAsync();
|
|
}
|
|
private async Task cerrarPopupModificacion()
|
|
{
|
|
await popupGestionDatos.HideAsync();
|
|
}
|
|
|
|
// GUARDAR
|
|
private async Task GuardarCambiosPopup()
|
|
{
|
|
try
|
|
{
|
|
ValidarDatos();
|
|
|
|
if (!editContext!.GetValidationMessages().Any())
|
|
{
|
|
string accion = EsItemNuevo ? "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.",
|
|
});
|
|
}
|
|
|
|
}
|
|
private async Task GestionarDatos(string accion)
|
|
{
|
|
var copia = new List<BANCOS>(lBancos);
|
|
var cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
|
|
|
switch (accion)
|
|
{
|
|
case "update":
|
|
int indice = copia.FindIndex(x => x.IDBANCO == ItemEnEdicion.IDBANCO);
|
|
if (indice > -1)
|
|
{
|
|
copia[indice] = ItemEnEdicion;
|
|
}
|
|
var response = await Utilidades.ActualizarObjeto(cliente, "/api/BANCOS/" + ItemEnEdicion.IDBANCO, ItemEnEdicion, mensajes);
|
|
|
|
break;
|
|
case "create":
|
|
copia.Add(ItemEnEdicion);
|
|
var responsec = await Utilidades.NuevoObjeto(cliente, "/api/BANCOS/", ItemEnEdicion, mensajes);
|
|
break;
|
|
case "delete":
|
|
|
|
break;
|
|
}
|
|
cerrarPopupModificacion();
|
|
lBancos = copia.OrderBy(x => x.CODIGO).ToList();
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
private void ValidarDatos()
|
|
{
|
|
|
|
}
|
|
private void MostrarErroresPopup()
|
|
{
|
|
// messageStore?.Clear();
|
|
// foreach (var field in new[] { nameof(descripcionItem) })
|
|
// {
|
|
// ValidarYActualizar(new ChangeEventArgs { Value = typeof(enumeraciones).GetProperty(field)?.GetValue(itemSeleccionado) }, field);
|
|
// }
|
|
}
|
|
}
|
|
|