/* Función de controlador tipo GET que abre la vista de editar una noticia,
         * permite cambiar tanto el título, como el texto, como el archivo añadido.
         * Parámetros: Id de la noticia elegida*/
        public ActionResult EditarNoticia(int id)
        {
            EditNoticiaViewModel model = new EditNoticiaViewModel();

            using (var db = new SaludOcupacionalEntities())
            {
                var oNoticia = db.Noticia.Find(id);
                model.idNoticia = oNoticia.idNoticia;
                model.titulo    = oNoticia.titulo;
                model.texto     = oNoticia.texto;

                var archivo = from d in db.Archivo
                              where d.idNoticia == id
                              select d;

                if (archivo.Count() != 0)
                {
                    // Este mensaje es para hacerle saber a la vista que existen archivos añadidos a la noticia.
                    ViewBag.Mensaje = "archivos";

                    model.idArchivoActual = archivo.First().idArchivo;
                }
            }

            return(View(model));
        }
        public ActionResult EditarNoticia(EditNoticiaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                var oNoticia = db.Noticia.Find(model.idNoticia);
                oNoticia.titulo = model.titulo;
                oNoticia.texto  = model.texto;

                if (model.archivoNuevo != null)
                {
                    // Si no existía archivo anexado a la noticia, se añade
                    if (model.idArchivoActual == null)
                    {
                        Archivo oArchivo = new Archivo();

                        oArchivo.nombre = model.archivoNuevo.FileName;
                        oArchivo.tipo   = model.archivoNuevo.ContentType;

                        string strDateTime = System.DateTime.Now.ToString("ddMMyyyHHMMss");
                        string filePath    = "\\UploadedFiles\\" + strDateTime + model.archivoNuevo.FileName;

                        model.archivoNuevo.SaveAs(Server.MapPath("~") + filePath);

                        oArchivo.filePath  = filePath;
                        oArchivo.idNoticia = oNoticia.idNoticia;

                        db.Archivo.Add(oArchivo);
                    }
                    // Si se encuentra un archivo nuevo, le cae encima al que existía antes.
                    else
                    {
                        var oArchivo = db.Archivo.Find(model.idArchivoActual);

                        string fullPath = Request.MapPath(oArchivo.filePath);
                        System.IO.File.Delete(fullPath);

                        oArchivo.nombre = model.archivoNuevo.FileName;
                        oArchivo.tipo   = model.archivoNuevo.ContentType;

                        string strDateTime = System.DateTime.Now.ToString("ddMMyyyHHMMss");
                        string filePath    = "\\UploadedFiles\\" + strDateTime + model.archivoNuevo.FileName;

                        model.archivoNuevo.SaveAs(Server.MapPath("~") + filePath);

                        oArchivo.filePath = filePath;

                        db.Entry(oArchivo).State = System.Data.Entity.EntityState.Modified;
                    }
                }


                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/AdminNoticia/VerNoticia/" + model.idNoticia)));
        }