@page "/sales/patients" @using Services.Sales @using Domain.Entities @using Domain.Generics @using Domain.SearchParams @inject IToastService toastService @inject NavigationManager Navigation @inject PatientService patientService

Búsqueda de pacientes


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

No hay resultados.

}
@code { private PatientSearchParams SearchParams = new(); private PagedResult? PagedResult; private List> TablaPacientes = new(); private List TableColumns = new() { "Id", "Nombre", "Apellido", "Documento", "#Socio | #Afiliado", "Género", "Teléfono", "Email" }; 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/patientform/", OnClickAction = async (id) => { if (int.TryParse(id, out var pacienteId)) { Navigation.NavigateTo($"/sales/patientform/{pacienteId}"); } } } }; } private async Task BuscarPacientes() => await CargarPacientes(); private async Task CargarPacientes() { PagedResult = await patientService.SearchPatientsAsync(SearchParams); if (PagedResult?.Items is not null) { TablaPacientes = PagedResult.Items.Select(p => new Dictionary { { "Id", p.Id }, { "Nombre", p.Firstname ?? string.Empty }, { "Apellido", p.Lastname ?? string.Empty }, { "Documento", $"{p.DocumenttypesId} {p.DocumentNumber}" }, { "#Socio | #Afiliado", $"{p.AffiliateNumber}" }, { "Género", p.Gender ?? string.Empty }, { "Teléfono", p.Phone ?? string.Empty }, { "Email", p.Email ?? string.Empty } }).ToList(); } } private async Task PrimeraPagina() { SearchParams.Page = 1; await BuscarPacientes(); } private async Task UltimaPagina() { SearchParams.Page = TotalPaginas; await BuscarPacientes(); } 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 BuscarPacientes(); } } private async Task IrAPagina() { if (PaginaDeseada >= 1 && PaginaDeseada <= TotalPaginas) { SearchParams.Page = PaginaDeseada; await BuscarPacientes(); } else { toastService.ShowWarning("Número de página fuera de rango."); } } private async Task ExportarExcel() { var searchParams = new PatientSearchParams { Name = SearchParams.Name, Document = SearchParams.Document, Page = 1, PageSize = int.MaxValue }; try { await patientService.ExportFilteredAsync(searchParams); toastService.ShowSuccess("Exportación completada exitosamente."); } catch (Exception ex) { toastService.ShowError($"{ex.Message}"); } } private void NuevoPaciente() => Navigation.NavigateTo("/sales/patientform/"); 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); }