add MudDatePicker in to Filtering Invoice List

This commit is contained in:
zzdrojewskipaw
2025-11-29 17:02:20 +01:00
parent 81f6d83fd0
commit 4782bd3a89
6 changed files with 162 additions and 94 deletions

View File

@@ -1,58 +1,100 @@
@using MudBlazor.Internal
@using System.Data
<MudText Typo="Typo.h4" Class="mb-4">Lista Faktur</MudText>
<MudExpansionPanels Class="mb-4">
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
Text="Filtry"
Expanded="true">
<MudGrid>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Search"
Label="Szukaj"
Placeholder="Numer dokumentu, klient..."
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true"/>
</MudItem>
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
Text="Filtry"
Expanded="true">
<MudGrid>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Search"
Label="Szukaj"
Placeholder="Numer dokumentu, klient..."
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.DocumentNo"
Label="Numer dokumentu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.DocumentNo"
Label="Numer dokumentu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.ClientName"
Label="Nazwa klienta"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Type"
Label="Typ dokumentu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Type"
Label="Typ dokumentu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.ClientName"
Label="Nazwa klienta"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchInvoices"
Clearable="true" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudDatePicker @bind-Date="filterRequest.RegisterDateFrom"
Label="Data rejestracji od"
DateFormat="dd.MM.yyyy"
Editable="true"
Clearable="true"
Immediate="true"
@bind-Date:after="OnFilterChanged" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudDatePicker @bind-Date="filterRequest.RegisterDateTo"
Label="Data rejestracji do"
DateFormat="d.MM.yyyy"
Editable="true"
Clearable="true"
Immediate="true"
@bind-Date:after="OnFilterChanged" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudDatePicker @bind-Date="filterRequest.SellDateFrom"
Label="Data sprzedaży od"
DateFormat="d.MM.yyyy"
Editable="true"
Clearable="true"
Immediate="true"
@bind-Date:after="OnFilterChanged" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudDatePicker @bind-Date="filterRequest.SellDateTo"
Label="Data sprzedaży do"
DateFormat="d.MM.yyyy"
Editable="true"
Clearable="true"
Immediate="true"
@bind-Date:after="OnFilterChanged" />
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Outlined"
OnClick="ClearFilters"
StartIcon="Icons.Material.Filled.Clear">
Wyczyść filtry
</MudButton>
</MudItem>
</MudGrid>
</MudExpansionPanel>
</MudExpansionPanels>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Outlined"
OnClick="ClearFilters"
StartIcon="Icons.Material.Filled.Clear">
Wyczyść filtry
</MudButton>
</MudItem>
</MudGrid>
</MudExpansionPanel>
</MudExpansionPanels>
<MudDivider Class="my-4"></MudDivider>
@@ -100,7 +142,7 @@
@if (invoices.TotalCount > 0)
{
<MudGrid Class="mt-4" AlignItems="Center.Center">
<MudGrid Class="mt-4" AlignItems="Center">
<MudItem xs="12" sm="6">
<MudText Typo="Typo.body2">
Wyniki @((invoices.Page - 1) * invoices.PageSize + 1) - @Math.Min(invoices.Page * invoices.PageSize, invoices.TotalCount)

View File

@@ -9,6 +9,7 @@ namespace BimAI.UI.Shared.Components;
public partial class InvoiceListComponent : ComponentBase
{
[Inject] private InvoiceService InvoiceService { get; set; } = default!;
[Inject] private ISnackbar Snackbar { get; set; } = default!;
private PagedResult<InvoiceDto> invoices = new();
private InvoiceFilterRequest filterRequest = new();
@@ -16,28 +17,24 @@ public partial class InvoiceListComponent : ComponentBase
protected override async Task OnInitializedAsync()
{
Console.WriteLine("========== InvoiceListComponent OnInitializedAsync ==========");
await LoadInvoices();
}
private async Task LoadInvoices()
{
isLoading = true;
Console.WriteLine($"========== LoadInvoices - Starting load with Page: {filterRequest.Page}, PageSize: {filterRequest.PageSize} ==========");
try
{
invoices = await InvoiceService.GetInvoiceAsync(filterRequest);
Console.WriteLine($"========== LoadInvoices - Loaded {invoices.Items?.Count ?? 0} invoices, Total: {invoices.TotalCount} ==========");
var result = await InvoiceService.GetInvoiceAsync(filterRequest);
invoices = result ?? new PagedResult<InvoiceDto>();
}
catch (Exception ex)
{
Console.WriteLine($"========== ERROR Loading invoices failed: {ex.Message} ==========");
Console.WriteLine($"========== ERROR Stack trace: {ex.StackTrace} ==========");
if (ex.InnerException != null)
{
Console.WriteLine($"========== ERROR Inner exception: {ex.InnerException.Message} ==========");
}
Console.WriteLine($"Loading invoices failed: {ex.Message}");
Console.WriteLine($"Stack trace: {ex.StackTrace}");
Snackbar.Add($"Błąd podczas ładowania faktur: {ex.Message}", Severity.Error);
invoices = new PagedResult<InvoiceDto>();
}
finally
{
@@ -56,6 +53,11 @@ public partial class InvoiceListComponent : ComponentBase
filterRequest.Page = page;
await LoadInvoices();
}
private async Task OnFilterChanged()
{
filterRequest.Page = 1;
await SearchInvoices();
}
private async Task ClearFilters()
{