public ActionResult Create()
        {
            AlquileresMVC.Models.Alquiler alquiler = new AlquileresMVC.Models.Alquiler();

            alquiler.Cliente = new Cliente();
            alquiler.Cliente.ToEntitySelectList();
            alquiler.Producto = new Producto();
            alquiler.Producto.ToEntitySelectList();
            alquiler.Producto.Tipo = new Tipo();
            alquiler.Producto.Tipo.ToEntitySelectList();
            alquiler.Producto.Marca = new Marca();
            alquiler.Producto.Marca.ToEntitySelectList();
            alquiler.Producto.Modelo = new Modelo();
            alquiler.Producto.Modelo.ToEntitySelectList();
            alquiler.Producto.Categoria = new Categoria();
            alquiler.Producto.Categoria.ToEntitySelectList();
            alquiler.Producto.ToEntitySelectList();

            AlquileresMVC.Models.Alquiler alquilerToIDAdd = db.AlquilerSet.ToList().LastOrDefault();
            Int32 _id = alquilerToIDAdd.ID + 1;

            alquiler.ID = _id;

            alquiler.FechaDesde = DateTime.Now;
            alquiler.FechaHasta = DateTime.Now;
            alquiler.Estatus    = 0;

            return(View(alquiler));
        }
        public ActionResult Details(int id)
        {
            AlquileresMVC.Models.Alquiler alquilerDetail = db.AlquilerSet.First(a => a.ID == id);

            alquilerDetail.ClienteLoad();
            alquilerDetail.ProductoLoad();
            alquilerDetail.Producto.TipoLoad();
            alquilerDetail.Producto.MarcaLoad();
            alquilerDetail.Producto.ModeloLoad();
            alquilerDetail.Producto.CategoriaLoad();

            return(View(alquilerDetail));
        }
        public ActionResult Edit(Int32 id)
        {
            AlquileresMVC.Models.Alquiler alquilerToUpdate = db.AlquilerSet.First(a => a.ID == id);

            alquilerToUpdate.ClienteLoad();
            alquilerToUpdate.ProductoLoad();
            alquilerToUpdate.Producto.TipoLoad();
            alquilerToUpdate.Producto.MarcaLoad();
            alquilerToUpdate.Producto.ModeloLoad();
            alquilerToUpdate.Producto.CategoriaLoad();
            alquilerToUpdate.Estatus = 1;

            return(View(alquilerToUpdate));
        }
        public ActionResult Create(FormCollection collection)
        {
            AlquileresMVC.Models.Alquiler alquilerToAdd = new AlquileresMVC.Models.Alquiler();

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

            String   _sIDCliente  = arreglo[0];
            Int32    iIDCliente   = Int32.Parse(_sIDCliente);
            String   _sIDProducto = arreglo[1];
            Int32    iIDProducto  = Int32.Parse(_sIDProducto);
            String   _sFechaDesde = arreglo[2];
            DateTime dFechaDesde  = DateTime.Parse(_sFechaDesde);
            String   _sFechaHasta = arreglo[3];
            DateTime dFechaHasta  = DateTime.Parse(_sFechaHasta);
            Int32    iEstatus     = 0;

            alquilerToAdd.IDCliente  = iIDCliente;
            alquilerToAdd.IDProducto = iIDProducto;
            alquilerToAdd.FechaDesde = dFechaDesde;
            alquilerToAdd.FechaHasta = dFechaHasta;
            alquilerToAdd.Estatus    = iEstatus;

            TryUpdateModel(alquilerToAdd, "Alquiler");
            TryUpdateModel(alquilerToAdd, "Alquiler", collection.ToValueProvider());

            if (!String.IsNullOrEmpty(_sIDCliente))
            {
                alquilerToAdd.Cliente = db.ClienteSet.FirstOrDefault(c => c.ID == iIDCliente);
            }

            if (!String.IsNullOrEmpty(_sIDProducto))
            {
                alquilerToAdd.Producto = db.ProductoSet.FirstOrDefault(c => c.ID == iIDProducto);
            }

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

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

            //valido claves primaria
            if (db.AlquilerSet.FirstOrDefault(a => a.ID == alquilerToAdd.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 confirmar.
                        db.AddToAlquilerSet(alquilerToAdd);
                        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
                        AlquileresMVC.Models.Alquiler _entidadToIDAdd = db.AlquilerSet.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(alquilerToAdd));
        }