public async Task <ActionResult <Pagination <Producto> > > getProductos([FromQuery] ProductoSpecificationParams productoParams) //FromQuery para decir que los parametros vienen desde url del endpoint
        {
            //var productos = await _productoRepository.getProductos();
            //var productos = await _productoRepository.getAllAsync(); //Métodos genericos sin la relación
            var spec      = new ProductoWithCategoriasAndMarcaSpecification(productoParams);
            var productos = await _productoRepository.getAllWithSpec(spec);

            var specCount      = new ProductoForCountingSpecification(productoParams);
            var totalProductos = await _productoRepository.countAsync(specCount); //Devuelve la cantidad de elemento

            var rounded    = Math.Ceiling(Convert.ToDecimal(totalProductos / productoParams.PageSize));
            var totalPages = Convert.ToInt32(rounded); //Total de páginas a devolver

            var data = _mapper.Map <IReadOnlyList <Producto>, IReadOnlyList <ProductoDto> >(productos);

            //return Ok(_mapper.Map<IReadOnlyList<Producto>, IReadOnlyList<ProductoDto>>(productos));

            return(Ok(new Pagination <ProductoDto>
            {
                Count = totalProductos,
                Data = data,
                PageCount = totalPages,
                PageIndex = productoParams.PageIndex,
                PageSize = productoParams.PageSize
            }));
        }
        public async Task <ActionResult <ProductoDto> > getProductoById(int id)
        {
            //return await _productoRepository.getProductoById(id);
            //return await _productoRepository.getByIdAsync(id);////Métodos genericos sin la relación
            var spec     = new ProductoWithCategoriasAndMarcaSpecification(id);
            var producto = await _productoRepository.getByIdWithSpec(spec); //Métodos genericos. spec debe incluir la logica de la condicion de la consulta y tambien las relaciones entre las entidades

            if (producto == null)
            {
                return(NotFound(new CodeErrorResponse(404)));
            }

            return(_mapper.Map <Producto, ProductoDto>(producto));//Quiero que la entidad se convierta a una clase Dto, el objeto que se va transformar es producto
        }