@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; } @* @page "/customers" @using phronCare.UIBlazor.Services.Sales @using phronCare.UIBlazor.Data @using Domain.Generics @inject CustomerHttpService CustomerService @inject NavigationManager Nav

Buscar Clientes

@if (PagedResult != null) { @foreach (var c in PagedResult.Items) { var addr = c.PhSCustomerAddresses.FirstOrDefault(); var doc = c.PhSCustomerDocuments.FirstOrDefault(); }
Id Name BusinessName Active ExternalCode HasCreditAccount CreditLimit Email Phone Dirección Documento
@c.Id @c.Name @c.BusinessName @(c.Active ? "Sí" : "No") @c.ExternalCode @(c.HasCreditAccount ? "Sí" : "No") @c.CreditLimit @addr?.Email @addr?.Phonenumber @addr?.Streetaddress1 @addr?.Streetaddress2
@addr?.City, @addr?.Postalcode, @addr?.Country
@doc?.DocumentNumber
@doc?.IssueDate?.ToString("yyyy-MM-dd")
@doc?.ExpiryDate?.ToString("yyyy-MM-dd")
Página @SearchParams.Page de @TotalPaginas
} else {

No hay resultados.

} @code { private CustomerSearchParams SearchParams = new(); private PagedResult? PagedResult; [Parameter, SupplyParameterFromQuery] public string? Name { get; set; } [Parameter, SupplyParameterFromQuery] public string? Email { get; set; } [Parameter, SupplyParameterFromQuery] public string? Document { get; set; } [Parameter, SupplyParameterFromQuery] public int? Page { get; set; } [Parameter, SupplyParameterFromQuery] public int? PageSize { get; set; } protected override async Task OnParametersSetAsync() { SearchParams = new CustomerSearchParams { Name = Name, Email = Email, Document = Document, Page = Page ?? 1, PageSize = PageSize ?? 10 }; await CargarClientes(); } private async Task BuscarClientes() { SearchParams.Page = 1; ActualizarUrl(); await CargarClientes(); } private async Task CargarClientes() { PagedResult = await CustomerService.SearchCustomersAsync(SearchParams); } private async Task SiguientePagina() { if (PuedeAvanzar) { SearchParams.Page++; ActualizarUrl(); await CargarClientes(); } } private async Task AnteriorPagina() { if (PuedeRetroceder) { SearchParams.Page--; ActualizarUrl(); await CargarClientes(); } } private void ActualizarUrl() { var query = $"/customers?name={SearchParams.Name}&email={SearchParams.Email}&document={SearchParams.Document}&page={SearchParams.Page}&pageSize={SearchParams.PageSize}"; Nav.NavigateTo(query); } 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; } *@