@page "/customers"
@using phronCare.UIBlazor.Services.Sales
@using phronCare.UIBlazor.Data
@using Domain.Entities
@using Domain.Generics
@inject CustomerHttpService CustomerService
Buscar Clientes
@if (TablaClientes != null && TablaClientes.Any())
{
Página @SearchParams.Page de @TotalPaginas
}
else
{
No hay resultados.
}
@code {
private CustomerSearchParams SearchParams = new();
private PagedResult? PagedResult;
private List> TablaClientes = new();
private List TableColumns = new()
{
"Id", "Nombre", "Razon Social", "Activo", "Código Externo", "Crédito", "Límite",
"Email", "Teléfono", "Dirección", "Documento"
};
private async Task BuscarClientes()
{
SearchParams.Page = 1;
await CargarClientes();
}
private async Task CargarClientes()
{
PagedResult = await CustomerService.SearchCustomersAsync(SearchParams);
TablaClientes = PagedResult.Items.Select(c =>
{
var addr = c.PhSCustomerAddresses.FirstOrDefault();
var doc = c.PhSCustomerDocuments.FirstOrDefault();
return new Dictionary
{
{ "Id", c.Id },
{ "Nombre", c.Name ?? string.Empty },
{ "Razon Social", c.BusinessName ?? string.Empty },
{ "Activo", c.Active ? "Sí" : "No" },
{ "Código Externo", c.ExternalCode },
{ "Crédito", c.HasCreditAccount ? "Sí" : "No" },
{ "Límite", c.CreditLimit },
{ "Email", addr?.Email ?? "" },
{ "Teléfono", addr?.Phonenumber ?? "" },
{ "Dirección", $"{addr?.Streetaddress1} {addr?.Streetaddress2}, {addr?.City}, {addr?.Postalcode}, {addr?.Country}" },
{ "Documento", $"{doc?.DocumentNumber} | {doc?.IssueDate?.ToString("yyyy-MM-dd")} - {doc?.ExpiryDate?.ToString("yyyy-MM-dd")}" }
};
}).ToList();
}
private async Task SiguientePagina()
{
if (PuedeAvanzar)
{
SearchParams.Page++;
await CargarClientes();
}
}
private async Task AnteriorPagina()
{
if (PuedeRetroceder)
{
SearchParams.Page--;
await CargarClientes();
}
}
private int TotalPaginas => PagedResult is null ? 1 :
(int)Math.Ceiling((double)(PagedResult.TotalItems) / SearchParams.PageSize);
private bool PuedeAvanzar => PagedResult != null && SearchParams.Page < TotalPaginas;
private bool PuedeRetroceder => PagedResult != null && SearchParams.Page > 1;
}