using Meezi.API.Services;

namespace Meezi.API.Tests;

internal sealed class NoOpInventoryService : IInventoryService
{
    public Task<IReadOnlyList<IngredientDto>> ListAsync(string cafeId, CancellationToken ct = default) =>
        Task.FromResult<IReadOnlyList<IngredientDto>>([]);

    public Task<IReadOnlyList<IngredientDto>> LowStockAsync(string cafeId, CancellationToken ct = default) =>
        Task.FromResult<IReadOnlyList<IngredientDto>>([]);

    public Task<IngredientDto?> CreateAsync(string cafeId, CreateIngredientRequest request, CancellationToken ct = default) =>
        Task.FromResult<IngredientDto?>(null);

    public Task<IngredientDto?> UpdateAsync(string cafeId, string ingredientId, UpdateIngredientRequest request, CancellationToken ct = default) =>
        Task.FromResult<IngredientDto?>(null);

    public Task<IngredientDto?> AdjustAsync(string cafeId, string ingredientId, AdjustStockRequest request, CancellationToken ct = default) =>
        Task.FromResult<IngredientDto?>(null);

    public Task<MenuItemRecipeDto?> GetRecipeAsync(string cafeId, string menuItemId, CancellationToken ct = default) =>
        Task.FromResult<MenuItemRecipeDto?>(null);

    public Task<MenuItemRecipeDto?> SetRecipeAsync(string cafeId, string menuItemId, SetMenuItemRecipeRequest request, CancellationToken ct = default) =>
        Task.FromResult<MenuItemRecipeDto?>(null);

    public Task<OrderDeductionResult> DeductForOrderAsync(
        string cafeId,
        string orderId,
        IReadOnlyList<(string MenuItemId, int Quantity)> lines,
        CancellationToken ct = default) =>
        Task.FromResult(new OrderDeductionResult(false, []));
}
