Exemplo n.º 1
0
        public async Task <ActionResult <Pagination <Producto> > > GetProductosAll([FromQuery] ProductoSpecificationParams productoSpecificationParams)
        {
            // spec = debe incluir la logica de la condicion de la consulta y tambien las relaciones entre las entidades
            // en este caso seria la relacion, entre producto y marca, categoria
            var spec      = new ProductoWithCategoriaAndMarcaSpecification(productoSpecificationParams);
            var productos = await _productoRepository.GetAllWithSpec(spec);

            var specCount      = new ProductoForCountingSpecification(productoSpecificationParams);
            var totalProductos = await _productoRepository.CountAsync(specCount);

            var rounded    = Math.Ceiling(Convert.ToDecimal(totalProductos / productoSpecificationParams.PageSize));
            var totalPages = Convert.ToInt32(rounded);

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

            var result = new Pagination <ProductoDto>
            {
                Count     = totalProductos,
                Data      = data,
                PageCount = totalPages,
                PageIndex = productoSpecificationParams.PageIndex,
                PageSize  = productoSpecificationParams.PageSize
            };

            return(Ok(result));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <Pagination <ProductoDto> > > GetProductos([FromQuery] ProductoSpecificationParams productoParams)
        {
            var spec = new ProductoWithCategoriaAndMarcaSpecification(productoParams);

            var productos = await _productoRepository.GetAllWithSpec(spec);

            var specCount = new ProductoForCountingSpecification(productoParams);

            var totalProductos = await _productoRepository.CountAsync(specCount);

            var rounded = Math.Ceiling(Convert.ToDecimal(totalProductos / productoParams.PageSize));

            var totalPages = Convert.ToInt32(rounded);

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

            return(Ok(
                       new Pagination <ProductoDto>
            {
                Count = totalProductos,
                Data = data,
                PageCount = totalPages,
                PageIndex = productoParams.PageIndex,
                PageSize = productoParams.PageSize
            }));
        }
Exemplo n.º 3
0
        public async Task <ActionResult <List <Producto> > > GetProductos()
        {
            //spec = debe incluir la logica de la condición de la consulta y también las relaciones entre
            //las entidades, la relación entre Producto, Marca y Categoria.

            var spec = new ProductoWithCategoriaAndMarcaSpecification();

            var productos = await _productoRepository.GetAllWithSpec(spec);

            return(Ok(_mapper.Map <IReadOnlyList <Producto>, IReadOnlyList <ProductoDto> >(productos)));
        }
Exemplo n.º 4
0
        public async Task <ActionResult <ProductoDto> > GetProducto(int id)
        {
            var spec     = new ProductoWithCategoriaAndMarcaSpecification(id);
            var producto = await _productoRepository.GetByIdWithSpec(spec);

            if (producto == null)
            {
                return(NotFound(new CodeErrorResponse(404, "El producto no existe")));
            }

            return(_mapper.Map <Producto, ProductoDto>(producto));
        }
Exemplo n.º 5
0
        public async Task <ActionResult <ProductoDto> > GetProducto(int id)
        {
            // spec = debe incluir la logica de la condicion de la consulta y tambien las relaciones entre entidades
            //las relacion de Producto con  Marca y Categoria
            var spec     = new ProductoWithCategoriaAndMarcaSpecification(id);
            var producto = await _productoRepository.GetByIdWithSpec(spec);

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

            return(_mapper.Map <Producto, ProductoDto>(producto));
        }
Exemplo n.º 6
0
        public async Task <ActionResult <ProductoDto> > GetProductoById(int id)
        {
            // spec = debe incluir la logica de la condicion de la consulta y tambien las relaciones entre las entidades
            // en este caso seria la relacion, entre producto y marca, categoria
            var spec     = new ProductoWithCategoriaAndMarcaSpecification(id);
            var producto = await _productoRepository.GetByIdWithSpec(spec);

            if (producto is null)
            {
                return(NotFound(new CodeErrorResponse(404, "El producto no existe.")));
            }

            var productoDto = _mapper.Map <Producto, ProductoDto>(producto);

            return(Ok(productoDto));
        }