// GET: Admin/Documentos/Edit/5
        public ActionResult Edit(int id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Documento Documento = db.Documentos.Include(not => not.DocumentoGrupos).FirstOrDefault(a => a.DocumentoId == id);

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


            DocumentoEditViewModel viewModel = new DocumentoEditViewModel();

            viewModel.InicializarDesplegables();
            viewModel.Documento = Documento;
            foreach (var grupo in viewModel.GruposUsuarios)
            {
                if (Documento.DocumentoGrupos.FirstOrDefault(gr => gr.GrupoUsuarioId == grupo.Id) != null)
                {
                    grupo.Seleccionado = true;
                }
            }

            return(View(viewModel));
        }
        public ActionResult Edit(DocumentoEditViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                if (viewModel.Documento.TemaId.Value == 0)
                {
                    viewModel.Documento.TemaId = null;
                }

                if (viewModel.Documento.SubTemaId.Value == 0)
                {
                    viewModel.Documento.SubTemaId = null;
                }
                if (viewModel.File != null)
                {
                    string fullPath = Request.MapPath("~/media/upload/documentos/" + viewModel.Documento.FicheroAdjunto);
                    if (System.IO.File.Exists(fullPath))
                    {
                        System.IO.File.Delete(fullPath);
                    }
                    viewModel.Documento.FicheroAdjunto = viewModel.Documento.DocumentoId + "_" + viewModel.File.FileName;

                    string nameAndLocation = "~/media/upload/documentos/" + viewModel.Documento.FicheroAdjunto;
                    viewModel.File.SaveAs(Server.MapPath(nameAndLocation));
                }


                db.Entry(viewModel.Documento).State = EntityState.Modified;
                db.SaveChanges();

                foreach (var grupo in viewModel.GruposUsuarios)
                {
                    var existe = db.DocumentoGrupos.FirstOrDefault(gr => gr.DocumentoId == viewModel.Documento.DocumentoId && gr.GrupoUsuarioId == grupo.Id);

                    if (grupo.Seleccionado && existe == null)
                    {
                        DocumentoGrupo DocumentoGrupo = new DocumentoGrupo()
                        {
                            GrupoUsuarioId = grupo.Id,
                            DocumentoId    = viewModel.Documento.DocumentoId
                        };
                        db.DocumentoGrupos.Add(DocumentoGrupo);
                        db.SaveChanges();
                    }
                    if (!grupo.Seleccionado && existe != null)
                    {
                        db.DocumentoGrupos.Remove(existe);
                        db.SaveChanges();
                    }
                }

                return(RedirectToAction("Index", new {}));
            }

            viewModel.InicializarDesplegables();
            return(View(viewModel));
        }