// GET: odata/Products(5
        //[EnableQuery(PageSize = 10, AllowedQueryOptions = AllowedQueryOptions.All)]
        //public SingleResult<Product> GetProducts([FromODataUri] int key)
        //{
        //    //return SingleResult.Create(db.Products.Where(products => products.Id == key));
        //}

        // PUT: api/Products
        public async Task<IHttpActionResult> PutProducts(Product product)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            try
            {
                ProductViewModel prodVm = new ProductViewModel();
                prodVm.RelatedProducts = product.RelatedProducts;

                product.RelatedProducts = null;
                await productRepository.EditAsync(product);

                RelatedProductRepository relprod = new RelatedProductRepository(new MyRoomDbContext());

                relprod.DeleteProductRealted(product.Id);
                if (prodVm.RelatedProducts.Count() > 0)
                    relprod.InsertRelatedProducts(prodVm.RelatedProducts.ToList());
            }
            catch (Exception ex)
            {
                if (!ProductExists(product.Id))
                {
                    return NotFound();
                }
                else
                {
                    throw ex;
                }
            }

            return Ok("Product Updated");
        }
        // POST: api/Products
        public IHttpActionResult PostProducts(ProductViewModel productViewModel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            try
            {
                Product product = ProductMapper.CreateModel(productViewModel);
                productRepository.Insert(product);

                product.RelatedProducts = new List<RelatedProduct>();
                RelatedProductRepository relProdRepo = new RelatedProductRepository(new MyRoomDbContext());
                foreach (RelatedProduct rp in productViewModel.RelatedProducts)
                {
                    rp.IdProduct = product.Id;
                }
                relProdRepo.InsertRelatedProducts(productViewModel.RelatedProducts.ToList());

                //Inserta productos a ActiveHotelProduct
                ActiveHotelCatalogRepository hotelActiveRepo = new ActiveHotelCatalogRepository(relProdRepo.Context);
                //int hotelId = hotelActiveRepo.GetByCatalogId(productViewModel.CatalogId);
                
//                if (hotelId > 0)
  //              {
                    ActiveHotelProductRepository productHotelActiveRepo = new ActiveHotelProductRepository(relProdRepo.Context);
                    productHotelActiveRepo.Insert(new ActiveHotelProduct() { IdHotel = productViewModel.HotelId, IdProduct = product.Id, Active = true });
    //            }
                return Ok("Product Inserted");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }