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)); }
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 }