using DiunaBI.UI.Shared.Services;
using Microsoft.AspNetCore.Components;
using DiunaBI.Application.DTOModels;
using DiunaBI.Application.DTOModels.Common;
using MudBlazor;

namespace DiunaBI.UI.Shared.Components;

public partial class LayerListComponent : ComponentBase 
{
    [Inject] private LayerService LayerService { get; set; } = default!;
    [Inject] private ISnackbar Snackbar { get; set; } = default!;


    private PagedResult<LayerDto>  layers = new();
    private LayerFilterRequest filterRequest = new();
    private bool isLoading = false;
    
    protected override async Task OnInitializedAsync()
    {
        await LoadProducts();
    }

    private async Task LoadProducts()
    {
        isLoading = true;

        try
        {
            layers = await LayerService.GetLayersAsync(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 LayerFilterRequest();
        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}");
    }
}