Newer
Older
Warehouse / src / Application / Products / ProductStockValue / ProductStockValueQuery.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 872 bytes Init
using MyWarehouse.Application.Dependencies.Services;

namespace MyWarehouse.Application.Products.ProductStockValue;

public record ProductStockValueQuery : IRequest<StockValueDto>
{
}

public class ProductStockValueQueryHandler : IRequestHandler<ProductStockValueQuery, StockValueDto>
{
    private readonly IStockStatisticsService _statisticsService;

    public ProductStockValueQueryHandler(IStockStatisticsService stockStatisticsService)
        => _statisticsService = stockStatisticsService;

    public async Task<StockValueDto> Handle(ProductStockValueQuery request, CancellationToken cancellationToken)
    {
        var totalStockValue = await _statisticsService.GetProductStockTotalValue();

        return new StockValueDto()
        {
            Amount = totalStockValue.Amount,
            CurrencyCode = totalStockValue.Currency.Code
        };
    }
}