@page "/sales/people" @using Domain.Entities @using Domain.Generics @using phronCare.UIBlazor.Services.Sales @inject IToastService toastService @inject NavigationManager Navigation @inject PeopleService peopleService

Búsqueda de Vendedores


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

No hay resultados.

}
@code { protected override void OnInitialized() { botones = new List { new PhTable.ButtonOptions { Caption = "Editar", ElementClass = "btn btn-dark btn-sm rounded-pill", UrlAction = "/sales/personform/", OnClickAction = async (id) => { if (int.TryParse(id, out var personId)) { Navigation.NavigateTo($"/sales/personform/{personId}"); } } } }; } private PeopleSearchParams SearchParams = new(); private PagedResult? PagedResult; private List> TablaPersonas = new(); private List TableColumns = new() { "Id", "Nombre", "Email", "Teléfono", "Comision", "Activo" }; private int PaginaDeseada = 1; private async Task BuscarPersonas() { await CargarPersonas(); } private async Task CargarPersonas() { PagedResult = await peopleService.SearchPeopleAsync(SearchParams); if (PagedResult?.Items is not null) { TablaPersonas = PagedResult.Items.Select(p => new Dictionary { { "Id", p.Id }, { "Nombre", $"{p.Name}" }, { "Email", p.Email ?? string.Empty }, { "Teléfono", p.Phone ?? string.Empty }, { "Comision", p.DefaultCommissionPercent ?? 0 }, { "Activo", p.Active ? "Sí" : "No" } }).ToList(); } } private async Task ExportarExcel() { var searchParams = new PeopleSearchParams { Name = SearchParams.Name, // Aquí podés obtener los filtros de los campos en el formulario Email = SearchParams.Email, Page = 1, PageSize = int.MaxValue // Puedes ajustar el tamaño de la página para exportar todos los registros }; try { await peopleService.ExportFilteredAsync(searchParams); toastService.ShowSuccess("Exportación completada exitosamente."); } catch (Exception ex) { toastService.ShowError($"{ex.Message}"); } } private async Task PrimeraPagina() { SearchParams.Page = 1; await BuscarPersonas(); } private async Task UltimaPagina() { SearchParams.Page = TotalPaginas; await BuscarPersonas(); } private async Task IrAPagina() { if (PaginaDeseada >= 1 && PaginaDeseada <= TotalPaginas) { SearchParams.Page = PaginaDeseada; await BuscarPersonas(); } 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 CargarPersonas(); } } private void NuevaPersona() { Navigation.NavigateTo("/sales/personform/"); } private void Cancelar() { 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); List botones = new(); }