/// <summary>
        /// Get Products by Description.
        /// </summary>
        /// <param name="query">Query.</param>
        /// <returns>Products.</returns>
        public AnswerPage <Product> GetProductsByDescription(BaseQueryPagination query)
        {
            var wsProductsClient = new wsConsultasProductosReference.consultasEspecialesProductosPortTypeClient();
            var resultsService   = wsProductsClient.wsBuscarProductosXDescripcion(query.Contains, query.Page, query.PageSize);

            AnswerPage <Product> answer = new AnswerPage <Product>();

            answer.Page     = query.Page;
            answer.PageSize = query.PageSize;
            answer.Total    = resultsService == null ? 0 : Convert.ToInt32(resultsService.FirstOrDefault().CANTIDAD_REGISTROS);

            answer.Results = resultsService == null ? new List <Product>() : (from pro in resultsService
                                                                              select new Product()
            {
                Id = Convert.ToInt32(pro.ID),
                ProductId = Convert.ToInt32(pro.PRODUCTO_ID),
                Name = pro.NOMBRE,
                Description = pro.DESCRIPCION,
                Category = pro.CATEGORIA,
                ListPrice = Convert.ToInt32(pro.PRECIO_LISTA),
                Producer = pro.FABRICANTE,
                Image = pro.IMAGEN_URL
            }).ToList();

            return(answer);
        }
        /// <summary>
        /// Get Product by Id.
        /// </summary>
        /// <param name="id">Product Id.</param>
        /// <returns>Porduct.</returns>
        public AnswerPage <Product> GetProductById(int id)
        {
            var wsProductsClient        = new wsConsultasProductosReference.consultasEspecialesProductosPortTypeClient();
            var resultsService          = wsProductsClient.wsBuscarproductoXID(id);
            AnswerPage <Product> answer = new AnswerPage <Product>();

            answer.Page     = 1;
            answer.PageSize = 10;
            answer.Total    = resultsService == null ? 0 : resultsService.Count();

            answer.Results = resultsService == null ? new List <Product>() : (from pro in resultsService
                                                                              select new Product()
            {
                Id = Convert.ToInt32(pro.ID),
                ProductId = Convert.ToInt32(pro.PRODUCTO_ID),
                Name = pro.NOMBRE,
                Description = pro.DESCRIPCION,
                Category = pro.CATEGORIA,
                ListPrice = Convert.ToInt32(pro.PRECIO_LISTA),
                Producer = pro.FABRICANTE,
                Image = pro.IMAGEN_URL
            }).ToList();

            return(answer);
        }
        /// <summary>
        /// Get the top 5.
        /// </summary>
        /// <param name="query">Query.</param>
        /// <returns>Products.</returns>
        public AnswerPage <Product> GetProductsTop5(BaseQueryPagination query)
        {
            var wsTopProductsClient = new wsTopProductsReference.topProductosPortTypeClient();
            var resultService       = wsTopProductsClient.wsTopCinco(Convert.ToInt32(query.Contains));

            var wsProductsClient = new wsConsultasProductosReference.consultasEspecialesProductosPortTypeClient();

            AnswerPage <Product> answer = new AnswerPage <Product>();

            answer.Page     = query.Page;
            answer.PageSize = query.PageSize;
            answer.Total    = resultService == null ? 0 : resultService.Count();
            answer.Results  = new List <Product>();

            if (resultService != null)
            {
                foreach (var pro in resultService)
                {
                    var resultsService = wsProductsClient.wsBuscarproductoXID(Convert.ToInt32(pro.PRODID));
                    var product        = resultsService.FirstOrDefault();
                    answer.Results.Add(
                        new Product()
                    {
                        Id          = Convert.ToInt32(product.ID),
                        ProductId   = Convert.ToInt32(product.PRODUCTO_ID),
                        Name        = product.NOMBRE,
                        Description = product.DESCRIPCION,
                        Category    = product.CATEGORIA,
                        ListPrice   = Convert.ToInt32(product.PRECIO_LISTA),
                        Producer    = product.FABRICANTE,
                        Image       = product.IMAGEN_URL
                    });
                }
            }

            return(answer);
        }