public ActionResult Create(ProductoViewModel productoViewModel)
        {
            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var producto = ToModel(productoViewModel);
                        db.Productos.Add(producto);
                        db.SaveChanges();

                        if (productoViewModel.ArchivoImagen != null)
                        {
                            var folder = "~/Content/Productos";
                            var file   = $"{producto.ProductoId}.jpg";

                            var response = FileHelper.UploadPhoto(productoViewModel.ArchivoImagen, folder, file);
                            if (response)
                            {
                                var pic = $"{folder}/{file}";
                                producto.Imagen          = pic;
                                db.Entry(producto).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                        transaction.Commit();

                        return(RedirectToAction("Index"));
                    }
                    catch (Exception ex)
                    {
                        if (ex.InnerException != null &&
                            ex.InnerException.InnerException != null &&
                            ex.InnerException.InnerException.Message.Contains("IX"))
                        {
                            transaction.Rollback();
                            ModelState.AddModelError(string.Empty, "Este Producto ya existe.");
                        }
                        else
                        {
                            transaction.Rollback();
                            ModelState.AddModelError(string.Empty, ex.Message);
                            ViewBag.CategoriaId    = new SelectList(CombosHelper.GetCategorias(), "CategoriaId", "Nombre", productoViewModel.CategoriaId);
                            ViewBag.MarcaId        = new SelectList(CombosHelper.GetMarcas(), "MarcaId", "Nombre", productoViewModel.MarcaId);
                            ViewBag.SubCategoriaId = new SelectList(CombosHelper.GetSubCategorias(productoViewModel.CategoriaId), "SubCategoriaId", "Nombre", productoViewModel.SubCategoriaId);
                            return(View(productoViewModel));
                        }
                    }
                }
            }

            ViewBag.CategoriaId    = new SelectList(CombosHelper.GetCategorias(), "CategoriaId", "Nombre", productoViewModel.CategoriaId);
            ViewBag.MarcaId        = new SelectList(CombosHelper.GetMarcas(), "MarcaId", "Nombre", productoViewModel.MarcaId);
            ViewBag.SubCategoriaId = new SelectList(CombosHelper.GetSubCategorias(productoViewModel.CategoriaId), "SubCategoriaId", "Nombre", productoViewModel.SubCategoriaId);
            return(View(productoViewModel));
        }
        // GET: Productos/Create
        public ActionResult Create()
        {
            var productoViewModel = new ProductoViewModel();

            productoViewModel.Estado = true;

            ViewBag.CategoriaId    = new SelectList(CombosHelper.GetCategorias(), "CategoriaId", "Nombre");
            ViewBag.MarcaId        = new SelectList(CombosHelper.GetMarcas(), "MarcaId", "Nombre");
            ViewBag.SubCategoriaId = new SelectList(CombosHelper.GetSubCategorias(0), "SubCategoriaId", "Nombre");
            return(View(productoViewModel));
        }
        // GET: Productos/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Producto producto = db.Productos.Find(id);

            if (producto == null)
            {
                return(HttpNotFound());
            }

            var productoViewModel = ToViewModel(producto);

            ViewBag.CategoriaId    = new SelectList(CombosHelper.GetCategorias(), "CategoriaId", "Nombre", producto.CategoriaId);
            ViewBag.MarcaId        = new SelectList(CombosHelper.GetMarcas(), "MarcaId", "Nombre", producto.MarcaId);
            ViewBag.SubCategoriaId = new SelectList(CombosHelper.GetSubCategorias(producto.CategoriaId), "SubCategoriaId", "Nombre", producto.SubCategoriaId);
            return(View(productoViewModel));
        }