예제 #1
0
        public async Task <ActionResult <ProductoDto> > GetProducto(int id)
        {
            //spec = Debe incluir la lógica entre las entidades y la lógica de la condición.
            var spec = new ProductoRelationships(id);//Si no se le pasa parámetro solo crea las relaciones

            //return await this._producto.GetByIdWithSpec(spec);
            var producto = await this._producto.GetByIdWithSpec(spec);

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

            return(this._mapper.Map <Producto, ProductoDto>(producto));
        }
예제 #2
0
        GetProductos([FromQuery] ProductoSpecParams productoParams)   //FromQuery para especificar que los parámetros provienen de la URL
        {
            //sort, marca, categoria
            var spec = new ProductoRelationships(productoParams);

            var productos = await this._producto.GetAllWithSpec(spec);

            var specCount = new ProductoForCountSpecs(productoParams);

            var totalProductos = await this._producto.CountAsync(specCount);

            var rounded = Math.Ceiling(Convert.ToDecimal(totalProductos / productoParams.PageSize));//Aproximar al maximo el decimal

            var totalPages = Convert.ToInt32(rounded);

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

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

            return(Ok(
                       new Pagination <ProductoDto>
            {
                Count = totalProductos,
                Data = data,
                PageCount = totalPages,
                PageIndex = productoParams.PageIndex,
                PageSize = productoParams.PageSize
            }
                       ));

            //return Ok(this._mapper.Map<IReadOnlyList<Producto>,
            //    IReadOnlyList<ProductoDto>>(productos));//Ok cuando es una lista IReadOnlyList
        }