diff --git a/BimAI.API/Controllers/InvoiceController.cs b/BimAI.API/Controllers/InvoiceController.cs
index 4893547..b040e33 100644
--- a/BimAI.API/Controllers/InvoiceController.cs
+++ b/BimAI.API/Controllers/InvoiceController.cs
@@ -22,8 +22,7 @@ public class InvoiceController(BimAIDbContext context) : ControllerBase
var searchTerm = request.Search.ToLower();
query = query.Where(x =>
x.DocumentNo.ToLower().Contains(searchTerm) ||
- x.ClientName.ToLower().Contains(searchTerm) ||
- (x.ClientNip != null && x.ClientNip.ToLower().Contains(searchTerm))
+ x.ClientName.ToLower().Contains(searchTerm)
);
}
@@ -47,15 +46,29 @@ public class InvoiceController(BimAIDbContext context) : ControllerBase
query = query.Where(x => x.Source.ToLower().Contains(request.Source.ToLower()));
}
- if (request.RegisterDateFrom.HasValue)
- {
- query = query.Where(x => x.RegisterDate >= request.RegisterDateFrom.Value);
- }
+ if (request.RegisterDateFrom.HasValue)
+ {
+ var from = request.RegisterDateFrom.Value.Date;
+ query = query.Where(x => x.RegisterDate >= from);
+ }
- if (request.RegisterDateTo.HasValue)
- {
- query = query.Where(x => x.RegisterDate <= request.RegisterDateTo.Value);
- }
+ if (request.RegisterDateTo.HasValue)
+ {
+ var toExclusive = request.RegisterDateTo.Value.Date.AddDays(1);
+ query = query.Where(x => x.RegisterDate < toExclusive);
+ }
+
+ if (request.SellDateFrom.HasValue)
+ {
+ var from = request.SellDateFrom.Value.Date;
+ query = query.Where(x => x.SellDate >= from);
+ }
+
+ if (request.SellDateTo.HasValue)
+ {
+ var toExclusive = request.SellDateTo.Value.Date.AddDays(1);
+ query = query.Where(x => x.SellDate < toExclusive);
+ }
var totalCount = await query.CountAsync();
diff --git a/BimAI.Application/DTOModels/InvoiceDto.cs b/BimAI.Application/DTOModels/InvoiceDto.cs
index 35a4d6d..2701218 100644
--- a/BimAI.Application/DTOModels/InvoiceDto.cs
+++ b/BimAI.Application/DTOModels/InvoiceDto.cs
@@ -30,6 +30,8 @@ public class InvoiceFilterRequest
public string? Source { get; set; }
public DateTime? RegisterDateFrom { get; set; }
public DateTime? RegisterDateTo { get; set; }
+ public DateTime? SellDateFrom { get; set; }
+ public DateTime? SellDateTo { get; set; }
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 20;
}
\ No newline at end of file
diff --git a/BimAI.UI.Shared/Components/InvoiceListComponent.razor b/BimAI.UI.Shared/Components/InvoiceListComponent.razor
index fe32673..c4c31e7 100644
--- a/BimAI.UI.Shared/Components/InvoiceListComponent.razor
+++ b/BimAI.UI.Shared/Components/InvoiceListComponent.razor
@@ -1,58 +1,100 @@
@using MudBlazor.Internal
+@using System.Data
Lista Faktur
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wyczyść filtry
+
+
+
+
+
-
-
- Wyczyść filtry
-
-
-
-
-
@@ -100,7 +142,7 @@
@if (invoices.TotalCount > 0)
{
-
+
Wyniki @((invoices.Page - 1) * invoices.PageSize + 1) - @Math.Min(invoices.Page * invoices.PageSize, invoices.TotalCount)
diff --git a/BimAI.UI.Shared/Components/InvoiceListComponent.razor.cs b/BimAI.UI.Shared/Components/InvoiceListComponent.razor.cs
index 072939c..6cccfc4 100644
--- a/BimAI.UI.Shared/Components/InvoiceListComponent.razor.cs
+++ b/BimAI.UI.Shared/Components/InvoiceListComponent.razor.cs
@@ -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 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();
}
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();
}
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()
{
diff --git a/BimAI.UI.Shared/MainLayout.razor b/BimAI.UI.Shared/MainLayout.razor
index 2140dd2..d5fbd69 100644
--- a/BimAI.UI.Shared/MainLayout.razor
+++ b/BimAI.UI.Shared/MainLayout.razor
@@ -5,7 +5,8 @@
-
+
+
diff --git a/BimAI.UI.Shared/Services/InvoiceService.cs b/BimAI.UI.Shared/Services/InvoiceService.cs
index 615e088..4be2fb9 100644
--- a/BimAI.UI.Shared/Services/InvoiceService.cs
+++ b/BimAI.UI.Shared/Services/InvoiceService.cs
@@ -21,45 +21,53 @@ public class InvoiceService(HttpClient httpClient)
["pageSize"] = request.PageSize.ToString(),
};
- // if (!string.IsNullOrWhiteSpace(request.Search))
- // {
- // queryParams["search"] = request.Search;
- // }
- // if (!string.IsNullOrWhiteSpace(request.Name))
- // {
- // queryParams["name"] = request.Name;
- // }
- // if (!string.IsNullOrWhiteSpace(request.Code))
- // {
- // queryParams["code"] = request.Code;
- // }
-
- // if (!string.IsNullOrWhiteSpace(request.Ean))
- // {
- // queryParams["ean"] = request.Ean;
- // }
-
+ if (!string.IsNullOrWhiteSpace(request.Search))
+ {
+ queryParams["search"] = request.Search;
+ }
+ if (!string.IsNullOrWhiteSpace(request.ClientName))
+ {
+ queryParams["clientName"] = request.ClientName;
+ }
+ if (!string.IsNullOrWhiteSpace(request.Type))
+ {
+ queryParams["type"] = request.Type;
+ }
+ if (!string.IsNullOrWhiteSpace(request.DocumentNo))
+ {
+ queryParams["documentNo"] = request.DocumentNo;
+ }
+ if (request.RegisterDateFrom.HasValue)
+ {
+ queryParams["registerDateFrom"] = request.RegisterDateFrom.Value.ToString("yyyy-MM-dd");;
+ }
+ if (request.RegisterDateTo.HasValue)
+ {
+ queryParams["registerDateTo"] = request.RegisterDateTo.Value.ToString("yyyy-MM-dd");
+ }
+ if (request.SellDateFrom.HasValue)
+ {
+ queryParams["sellDateFrom"] = request.SellDateFrom.Value.ToString("yyyy-MM-dd");
+ }
+ if (request.SellDateTo.HasValue)
+ {
+ queryParams["sellDateTo"] = request.SellDateTo.Value.ToString("yyyy-MM-dd");
+ }
var uri = QueryHelpers.AddQueryString("api/invoice", queryParams);
- Console.WriteLine($"========== InvoiceService - Full URL: {_httpClient.BaseAddress}{uri} ==========");
var response = await _httpClient.GetAsync(uri);
- Console.WriteLine($"========== InvoiceService - Response status: {response.StatusCode} ==========");
if (!response.IsSuccessStatusCode)
{
var errorContent = await response.Content.ReadAsStringAsync();
- Console.WriteLine($"========== InvoiceService - Error response: {errorContent} ==========");
}
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
- Console.WriteLine($"========== InvoiceService - Response JSON length: {json.Length} ==========");
- Console.WriteLine($"========== InvoiceService - Response JSON: {json.Substring(0, Math.Min(500, json.Length))} ==========");
var result = JsonSerializer.Deserialize>(json, _jsonOptions);
- Console.WriteLine($"========== InvoiceService - Deserialized result - Items count: {result?.Items?.Count ?? 0}, Total: {result?.TotalCount ?? 0} ==========");
-
+
return result ?? new PagedResult();
}
}
\ No newline at end of file