public async Task <Producto> Handle(GetProductoQuery request, CancellationToken cancellationToken)
        {
            if (request.ProductoId <= 0)
            {
                throw new ArgumentException(nameof(request.ProductoId));
            }

            return(await _productoRepository.FindByIdAsync(request.ProductoId));
        }
        public async Task <Response <Producto> > Handle(DeleteProductoCommand request, CancellationToken cancellationToken)
        {
            var producto = await _repository.FindByIdAsync(request.Id);

            if (producto == null)
            {
                return(new Response <Producto>("Producto No Encontrado."));
            }

            _repository.Delete(producto);
            await _unitOfWork.CompleteAsync();

            return(new Response <Producto>(producto));
        }
        public async Task <Response <Producto> > Handle(UpdateProductoCommand request, CancellationToken cancellationToken)
        {
            var producto = await _repository.FindByIdAsync(request.Id);

            if (producto == null)
            {
                return(new Response <Producto>("Producto No Encontrado."));
            }

            producto.Nombre = request.Nombre;
            producto.Costo  = request.Costo;
            producto.Precio = request.Precio;
            producto.Stock  = request.Stock;

            _repository.Update(producto);
            await _unitOfWork.CompleteAsync();

            return(new Response <Producto>(producto));
        }