@page "/sales/institutions" @using phronCare.UIBlazor.Services.Sales @using phronCare.UIBlazor.Data @using Domain.Entities @using Domain.Generics @using Domain.SearchParams @inject IToastService toastService @inject NavigationManager Navigation @inject InstitutionService institutionService

Búsqueda de instituciones


@if (TablaInstituciones != null && TablaInstituciones.Any()) { } else {

No hay resultados.

}
@code { private InstitutionSearchParams SearchParams = new(); private PagedResult? PagedResult; private List> TablaInstituciones = new(); private List TableColumns = new() { "Id", "Nombre", "Tipo", "Dirección", "Ciudad", "Provincia", "Teléfono", "Email", "Activo" }; private int PaginaDeseada = 1; private List botones; protected override void OnInitialized() { botones = new List { new PhTable.ButtonOptions { Caption = "Editar", ElementClass = "btn btn-primary btn-sm", UrlAction = "/sales/institutionform/", OnClickAction = async (id) => { if (int.TryParse(id, out var instId)) { Navigation.NavigateTo($"/sales/institutionform/{instId}"); } } } }; } private async Task BuscarInstituciones() => await CargarInstituciones(); private async Task CargarInstituciones() { PagedResult = await institutionService.SearchInstitutionsAsync(SearchParams); if (PagedResult?.Items is not null) { TablaInstituciones = PagedResult.Items.Select(i => new Dictionary { { "Id", i.Id }, { "Nombre", i.Name ?? string.Empty }, { "Tipo", i.Type ?? string.Empty }, { "Dirección", i.Streetaddress ?? string.Empty }, { "Ciudad", i.City ?? string.Empty }, { "Provincia", i.Province ?? string.Empty }, { "Teléfono", i.Phone ?? string.Empty }, { "Email", i.Email ?? string.Empty }, { "Activo", i.Isactive ? "Sí" : "No" } }).ToList(); } } private async Task PrimeraPagina() { SearchParams.Page = 1; await BuscarInstituciones(); } private async Task UltimaPagina() { SearchParams.Page = TotalPaginas; await BuscarInstituciones(); } private async Task SiguientePagina() => await CambiarPagina(1); private async Task AnteriorPagina() => await CambiarPagina(-1); private async Task CambiarPagina(int delta) { var nuevaPagina = SearchParams.Page + delta; if (nuevaPagina >= 1 && nuevaPagina <= TotalPaginas) { SearchParams.Page = nuevaPagina; await BuscarInstituciones(); } } private async Task IrAPagina() { if (PaginaDeseada >= 1 && PaginaDeseada <= TotalPaginas) { SearchParams.Page = PaginaDeseada; await BuscarInstituciones(); } else { toastService.ShowWarning("Número de página fuera de rango."); } } private async Task ExportarExcel() { var exportParams = new InstitutionSearchParams { Name = SearchParams.Name, Type = SearchParams.Type, Province = SearchParams.Province, Page = 1, PageSize = int.MaxValue }; try { await institutionService.ExportFilteredAsync(exportParams); toastService.ShowSuccess("Exportación completada exitosamente."); } catch (Exception ex) { toastService.ShowError($"{ex.Message}"); } } private void NuevaInstitucion() => Navigation.NavigateTo("/sales/institutionform/"); private void Volver() => Navigation.NavigateTo("/DashboardPanel"); private bool PuedeRetroceder => PagedResult != null && SearchParams.Page > 1; private bool PuedeAvanzar => PagedResult != null && SearchParams.Page < TotalPaginas; private int TotalPaginas => PagedResult is null ? 1 : (int)Math.Ceiling((double)(PagedResult.TotalItems) / SearchParams.PageSize); }