105 lines
2.7 KiB
C#
105 lines
2.7 KiB
C#
using Bimix.Application.DTOModels;
|
|
using Bimix.Application.DTOModels.Common;
|
|
using Bimix.UI.Shared.Interfaces;
|
|
using Bimix.UI.Shared.Services;
|
|
using Microsoft.AspNetCore.Components;
|
|
using MudBlazor;
|
|
|
|
|
|
namespace Bimix.UI.Shared.Components;
|
|
|
|
public partial class ProductListComponent : ComponentBase
|
|
{
|
|
[Inject] private ProductService ProductService { get; set; } = default!;
|
|
[Inject] private IScannerService ScannerService { get; set; } = default!;
|
|
[Inject] private ISnackbar Snackbar { get; set; } = default!;
|
|
|
|
|
|
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}");
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
} |