public ActionResult Delete(Int32 id, FormCollection form)
        {
            AlquileresMVC.Models.Producto productoToDelete = db.ProductoSet.First(b => b.ID == id);

            //valido si la Producto tiene alquiler
            if (db.AlquilerSet.FirstOrDefault(a => a.IDProducto == id) != null)
            {
                ModelState.AddModelError("ID", String.Format("Esta intentando Borrar un Producto que tiene alquiler"));
            }
            else
            {
                // Si el modelo es valido, guardo en la BD
                if (ModelState.IsValid)
                {
                    try
                    {
                        // Delete
                        db.DeleteObject(productoToDelete);
                        db.SaveChanges();
                        // Retorno a la vista del listar
                        return(RedirectToAction("List"));
                    }
                    catch (Exception ex)
                    {
                        HandleException excepcion = new HandleException();
                        String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                        excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                        ModelState.AddModelError("ID", clientMessage);
                    }
                }
            }

            return(View(productoToDelete));
        }
        public ActionResult Create(FormCollection collection)
        {
            AlquileresMVC.Models.Producto productoToAdd = new AlquileresMVC.Models.Producto();

            string[] arreglo = new string[collection.AllKeys.ToList().Count];
            Int32    i       = 0;

            foreach (var key in collection.AllKeys)
            {
                var value = collection[key];
                arreglo[i] = value;
                i++;
            }

            productoToAdd.Codigo      = arreglo[0];
            productoToAdd.Descripcion = arreglo[1];

            AlquileresMVC.Models.Tipo tipoToAdd = db.TipoSet.ToList().LastOrDefault();
            Int32 iIDTipo = tipoToAdd.ID;

            productoToAdd.IDTipo = iIDTipo;

            String IDMarca  = arreglo[2];
            Int32  iIDMarca = Int32.Parse(IDMarca);

            productoToAdd.IDMarca = iIDMarca;

            if (!String.IsNullOrEmpty(IDMarca))
            {
                productoToAdd.Marca = db.MarcaSet.FirstOrDefault(c => c.ID == iIDMarca);
            }

            if (productoToAdd.Marca == null)
            {
                ModelState.AddModelError("ID", String.Format("El número de IDMarca {0} no está registrado en la base de datos.", IDMarca));
            }

            String IDModelo  = arreglo[3];
            Int32  iIDModelo = Int32.Parse(IDModelo);

            productoToAdd.IDModelo = iIDModelo;

            if (!String.IsNullOrEmpty(IDModelo))
            {
                productoToAdd.Modelo = db.ModeloSet.FirstOrDefault(c => c.ID == iIDModelo);
            }

            if (productoToAdd.Modelo == null)
            {
                ModelState.AddModelError("ID", String.Format("El número de IDModelo {0} no está registrado en la base de datos.", IDModelo));
            }

            String IDCategoria  = arreglo[4];
            Int32  iIDCategoria = Int32.Parse(IDCategoria);

            productoToAdd.IDCategoria = iIDCategoria;

            if (!String.IsNullOrEmpty(IDCategoria))
            {
                productoToAdd.Categoria = db.CategoriaSet.FirstOrDefault(c => c.ID == iIDCategoria);
            }

            if (productoToAdd.Categoria == null)
            {
                ModelState.AddModelError("", String.Format("El número de IDCategoria {0} no está registrado en la base de datos.", IDCategoria));
            }

            TryUpdateModel(productoToAdd, "Producto");
            TryUpdateModel(productoToAdd, "Producto", collection.ToValueProvider());

            //valido claves primaria
            if (db.ProductoSet.FirstOrDefault(b => b.ID == productoToAdd.ID) != null)
            {
                ModelState.AddModelError("ID", String.Format("Violacion Clave primaria", "ID"));
            }
            else
            {
                // Si el modelo es valido, guardo en la BD
                if (ModelState.IsValid)
                {
                    db.Connection.Open();
                    DbTransaction dbTransaction = db.Connection.BeginTransaction();
                    try
                    {
                        // Guardar y confirmo.
                        db.AddToProductoSet(productoToAdd);
                        db.SaveChanges();
                        dbTransaction.Commit();
                        /// Si la transaccion es exitosa nos redirigimos a la pagina de detalles como
                        /// cofirmación de que la operacion resulto exitosa
                        Producto _entidadToIDAdd = db.ProductoSet.ToList().LastOrDefault();
                        Int32    _id             = _entidadToIDAdd.ID;
                        _entidadToIDAdd.ID = _id;
                        return(RedirectToAction("Details/" + _entidadToIDAdd.ID));
                    }
                    catch (Exception ex)
                    {
                        dbTransaction.Rollback();
                        HandleException excepcion = new HandleException();
                        String          msjLog    = "Error en " + ObtenerMetodoEnEjecucion(false).ToString() + ".\n" + excepcion.RegistrarExcepcion(ex, ObtenerMetodoEnEjecucion(false).ToString());
                        excepcion.EscribirLogExcepcion(msjLog); String clientMessage = excepcion.HandleExceptionEx(ex); excepcion = null;
                        ModelState.AddModelError("ID", clientMessage);
                    }
                }
            }

            // Refresca el formulario con los datos guardados
            return(View(productoToAdd));
        }
 public ActionResult Delete(int id)
 {
     AlquileresMVC.Models.Producto productoToDelete = db.ProductoSet.First(b => b.ID == id);
     ViewData.Model = productoToDelete;
     return(View());
 }
 public ActionResult Edit(Int32 id)
 {
     AlquileresMVC.Models.Producto productoToUpdate = db.ProductoSet.First(b => b.ID == id);
     productoToUpdate.CategoriaLoad();
     return(View(productoToUpdate));
 }