@page "/sales/professionals" @using phronCare.UIBlazor.Services.Sales @using phronCare.UIBlazor.Data @using Domain.Entities @using Domain.Generics @inject IToastService toastService @inject NavigationManager Navigation @inject ProfessionalService professionalService

Búsqueda de profesionales


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

No hay resultados.

}
@code { private ProfessionalSearchParams SearchParams = new(); private PagedResult? PagedResult; private List> TablaProfesionales = new(); private List TableColumns = new() { "Id", "Nombre", "Tipo Documento", "N° Documento", "Tipo", "Especialidad", "Email", "Teléfono 1", "Teléfono 2", "Matrícula", "Activo" }; private int PaginaDeseada = 1; private List botones = new(); protected override void OnInitialized() { botones = new List { new PhTable.ButtonOptions { Caption = "Editar", ElementClass = "btn btn-primary btn-sm", UrlAction = "/sales/professionals/edit/", OnClickAction = async (id) => { if (int.TryParse(id, out var profId)) { Navigation.NavigateTo($"/sales/professionalform/{profId}"); } } } }; } private async Task BuscarProfesionales() { await CargarProfesionales(); } private async Task CargarProfesionales() { PagedResult = await professionalService.SearchAsync(SearchParams); if (PagedResult?.Items is not null) { TablaProfesionales = PagedResult.Items.Select(p => new Dictionary { { "Id", p.Id }, { "Nombre", p.Fullname ?? string.Empty }, { "Tipo Documento", p.DocumenttypeName ?? string.Empty }, { "N° Documento", p.DocumentNumber ?? string.Empty }, { "Tipo", p.Type ?? string.Empty }, { "Especialidad", p.Specialty?.Name ?? string.Empty }, { "Email", p.Email ?? string.Empty }, { "Teléfono 1", p.Phone1 ?? string.Empty }, { "Teléfono 2", p.Phone2 ?? string.Empty }, { "Matrícula", p.License ?? string.Empty }, { "Activo", p.Active ? "Sí" : "No" }, }).ToList(); } } private async Task ExportarExcel() { var searchParams = new ProfessionalSearchParams { Fullname = SearchParams.Fullname, Document = SearchParams.Document, Type = SearchParams.Type, Page = 1, PageSize = int.MaxValue }; try { await professionalService.ExportFilteredAsync(searchParams); toastService.ShowSuccess("Exportación completada exitosamente."); } catch (Exception ex) { toastService.ShowError($"{ex.Message}"); } } private async Task PrimeraPagina() { SearchParams.Page = 1; await BuscarProfesionales(); } private async Task UltimaPagina() { SearchParams.Page = TotalPaginas; await BuscarProfesionales(); } private async Task IrAPagina() { if (PaginaDeseada >= 1 && PaginaDeseada <= TotalPaginas) { SearchParams.Page = PaginaDeseada; await BuscarProfesionales(); } else { toastService.ShowWarning("Número de página fuera de rango."); } } 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 BuscarProfesionales(); } } private int TotalPaginas => PagedResult is null ? 1 : (int)Math.Ceiling((double)(PagedResult.TotalItems) / SearchParams.PageSize); private bool PuedeRetroceder => PagedResult != null && SearchParams.Page > 1; private bool PuedeAvanzar => PagedResult != null && SearchParams.Page < TotalPaginas; private void NuevoProfesional() { Navigation.NavigateTo("/sales/professionalform/"); } public void Cancel() { Navigation.NavigateTo("/DashboardPanel"); } }