Files
BimAI/BimAI.UI.Shared/Components/ProductListComponent.razor.cs

104 lines
2.7 KiB
C#
Raw Normal View History

2025-10-11 11:33:46 +02:00
using BimAI.UI.Shared.Interfaces;
using BimAI.UI.Shared.Services;
2025-07-17 14:29:02 +02:00
using Microsoft.AspNetCore.Components;
2025-10-11 11:33:46 +02:00
using BimAI.Application.DTOModels;
using BimAI.Application.DTOModels.Common;
2025-07-17 19:17:27 +02:00
using MudBlazor;
2025-10-11 11:33:46 +02:00
namespace BimAI.UI.Shared.Components;
2025-07-17 14:29:02 +02:00
public partial class ProductListComponent : ComponentBase
{
[Inject] private ProductService ProductService { get; set; } = default!;
2025-07-17 19:17:27 +02:00
[Inject] private IScannerService ScannerService { get; set; } = default!;
[Inject] private ISnackbar Snackbar { get; set; } = default!;
2025-07-17 14:29:02 +02:00
private PagedResult<ProductDto> products = new();
private ProductFilterRequest filterRequest = new();
private bool isLoading = false;
protected override async Task OnInitializedAsync()
{
await LoadProducts();
}
private async Task LoadProducts()
{
isLoading = true;
try
{
products = await ProductService.GetProductsAsync(filterRequest);
}
catch (Exception ex)
{
Console.WriteLine($"Loading products failed: {ex.Message}");
}
finally
{
isLoading = false;
}
}
private async Task SearchProducts()
{
filterRequest.Page = 1;
await LoadProducts();
}
private async Task OnPageChanged(int page)
{
filterRequest.Page = page;
await LoadProducts();
}
private async Task ClearFilters()
{
filterRequest = new ProductFilterRequest();
await LoadProducts();
}
private async Task EditProduct(Guid productId)
{
// TODO
Console.WriteLine($"Edytuj produkt: {productId}");
}
private async Task DeleteProduct(Guid productId)
{
// TODO
Console.WriteLine($"Usuń produkt: {productId}");
}
2025-07-17 19:17:27 +02:00
private string GetScannerIcon()
{
return ScannerService.IsAvailable ? Icons.Material.Filled.CameraAlt : "";
}
private async Task OnScannerClick()
{
if (!ScannerService.IsAvailable)
{
Snackbar.Add("Skaner nie jest dostępny na tej platformie", Severity.Warning);
return;
}
try
{
var scannedCode = await ScannerService.ScanBarcodeAsync();
if (!string.IsNullOrEmpty(scannedCode))
{
filterRequest.Ean = scannedCode;
await SearchProducts();
Snackbar.Add($"Zeskanowano kod: {scannedCode}", Severity.Success);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Scanner error: {ex.Message}");
Snackbar.Add("Błąd podczas skanowania", Severity.Error);
}
}
2025-07-17 14:29:02 +02:00
}