/* Función de controlador tipo GET que permite borrar una noticia del sistema.
         * Parámetros: Id de la noticia a eliminar.*/
        public ActionResult BorrarNoticia(int id)
        {
            string filePath = "";

            using (var db = new SaludOcupacionalEntities())
            {
                var oNoticia = db.Noticia.Find(id);

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

                if (archivo.Count() != 0)
                {
                    Archivo oArchivo = archivo.First();

                    filePath = oArchivo.filePath;
                    db.Archivo.Remove(oArchivo);

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

                db.Noticia.Remove(oNoticia);

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/AdminNoticia")));
        }
        public ActionResult Cuenta(CuentaModificadaViewModel model)
        {
            Cuenta oCuenta = (Cuenta)Session["Usuario"];

            model.nombre = oCuenta.nombre;
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (oCuenta.contrasena != CryptoEngine.Encrypt(model.contrasena))
            {
                ModelState.AddModelError("contrasena", "Contraseña incorrecta");
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                string contrasenaNueva = CryptoEngine.Encrypt(model.contrasenaNueva);
                oCuenta.contrasena = contrasenaNueva;

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

                db.SaveChanges();

                TempData["Success"] = "Contraseña cambiada correctamente";
            }

            return(View(model));
        }
        public ActionResult Edit(EditComisionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                var oComision = db.Comision.Find(model.idComision);
                oComision.contacto         = model.contacto;
                oComision.contactoCorreo   = model.contactoCorreo;
                oComision.contactoTelefono = model.contactoTelefono;
                oComision.jefatura         = model.jefatura;
                oComision.jefaturaCorreo   = model.jefaturaCorreo;
                oComision.jefaturaTelefono = model.jefaturaTelefono;
                oComision.numeroDeRegistro = model.numeroRegistro;
                oComision.fechaDeRegistro  = model.fechaDeRegistro;
                db.Entry(oComision).State  = System.Data.Entity.EntityState.Modified;

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + model.idComision)));
        }
        public ActionResult AddAdminUser(CuentaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                // Revisa si el nombre de usuario ya existe
                var usernameExists = db.Cuenta.Any(x => x.nombre == model.nombre);
                if (usernameExists)
                {
                    ModelState.AddModelError("nombre", "Este nombre de usuario ya existe");
                    return(View(model));
                }

                Cuenta oCuenta = new Cuenta();

                oCuenta.nombre     = model.nombre;
                oCuenta.contrasena = CryptoEngine.Encrypt(model.contrasena);
                oCuenta.rol        = 0; // Rol 0 significa "administrador"
                db.Cuenta.Add(oCuenta);

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/AdminCuenta")));
        }
        /* Función de controlador tipo GET que permite el borrado lógico de un representante en
         * la base de datos, en caso de que sea necesario.
         * Parámetros: Id del representante*/
        public ActionResult Delete(int?id)
        {
            using (var db = new SaludOcupacionalEntities())
            {
                var oRepresentate = db.Representante.Find(id);
                oRepresentate.estado = 0;

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

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + Session["ComisionUserID"])));
        }
        /* Función de controlador tipo GET que se alza cuando la persona presiona "Sí" en la
         * notificación de Informe Entregado, lo que causa que se actualize como "entregado" el
         * informe en la base de datos.
         * Parámetros: Id de la comisión*/
        public ActionResult InformeEntregado(int id)
        {
            using (var db = new SaludOcupacionalEntities())
            {
                var oComision = db.Comision.Find(id);

                oComision.ultimoInforme = DateTime.Today;

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

                db.SaveChanges();
            }
            return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + id)));
        }
        public ActionResult EditCentroDeTrabajo(CentroDeTrabajoEditViewModel model)
        {
            using (SaludOcupacionalEntities db = new SaludOcupacionalEntities())
            {
                var oCentroDeTrabajo = db.CentroDeTrabajo.Find(model.idCentroDeTrabajo);

                List <SelectListItem> regiones = (from d in db.Region
                                                  orderby d.numeroRegion
                                                  select new SelectListItem
                {
                    Value = d.idRegion.ToString(),
                    Text = d.nombreRegion,
                }).ToList();

                model.listaDeRegiones = new SelectList(regiones, "Value", "Text", oCentroDeTrabajo.idRegion);
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                int idRegion        = int.Parse(model.idRegion);
                var nombreExistente = db.CentroDeTrabajo.Any(x => (x.nombreCentroDeTrabajo == model.nombre) && (x.idRegion == idRegion));
                if (nombreExistente)
                {
                    ModelState.AddModelError("nombre", "Este Centro de Trabajo ya está registrado en esta región");
                    return(View(model));
                }

                var oCentroDeTrabajo = db.CentroDeTrabajo.Find(model.idCentroDeTrabajo);
                oCentroDeTrabajo.nombreCentroDeTrabajo = model.nombre;
                oCentroDeTrabajo.idRegion = idRegion;

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

                db.SaveChanges();

                TempData["Success"] = "Centro de Trabajo modificado correctamente";
            }

            return(View(model));
        }
        public ActionResult AddNoticia(NoticiaViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                Noticia oNoticia = new Noticia();

                oNoticia.titulo = model.titulo;
                oNoticia.texto  = model.texto;
                oNoticia.fecha  = DateTime.Now; // Fecha y hora del momento actual.

                db.Noticia.Add(oNoticia);

                if (model.archivo != null)
                {
                    Archivo oArchivo = new Archivo();

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

                    /* Las rutas del archivo se crean mediante la fecha y el nombre del archivo, así evitando que haya
                     * conflictos con archivos que se llamen igual.*/
                    string strDateTime = System.DateTime.Now.ToString("ddMMyyyHHMMss");
                    string filePath    = "\\UploadedFiles\\" + strDateTime + model.archivo.FileName;

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

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

                    db.Archivo.Add(oArchivo);
                }

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/AdminNoticia")));
        }
        public ActionResult Edit(EditRepresentanteViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                var oRepresentate = db.Representante.Find(model.idRepresentante);
                oRepresentate.nombre   = model.nombre;
                oRepresentate.correo   = model.correo;
                oRepresentate.telefono = model.telefono;

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

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + Session["ComisionUserID"])));
        }
        /* Función de controlador tipo GET que permite eliminar un archivo del sistema.
         * Parámetros: Id del archivo a eliminar.*/
        public ActionResult Eliminar(int id)
        {
            string filePath  = "";
            int    idNoticia = 0;

            using (var db = new SaludOcupacionalEntities())
            {
                var oArchivo = db.Archivo.Find(id);
                filePath  = oArchivo.filePath;
                idNoticia = oArchivo.idNoticia; // Esto es para poder volver a la pantalla de la noticia correcta.
                db.Archivo.Remove(oArchivo);

                db.SaveChanges();
            }

            string fullPath = Request.MapPath(filePath);

            System.IO.File.Delete(fullPath);

            return(Redirect(Url.Content("~/AdminNoticia/EditarNoticia/" + idNoticia)));
        }
        public ActionResult Add(RepresentanteViewModel model, int id)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                Representante oRepresentante = new Representante();
                oRepresentante.nombre     = model.nombre;
                oRepresentante.correo     = model.correo;
                oRepresentante.telefono   = model.telefono;
                oRepresentante.tipo       = int.Parse(model.tipo);
                oRepresentante.estado     = 1;
                oRepresentante.idComision = id;

                db.Representante.Add(oRepresentante);

                db.SaveChanges();
            }

            return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + Session["ComisionUserID"])));
        }
Пример #12
0
        public ActionResult AddComisionUser(ComisionViewModel model)
        {
            List <SelectListItem> regionesTemp;

            using (SaludOcupacionalEntities db = new SaludOcupacionalEntities())
            {
                regionesTemp = (from d in db.Region
                                orderby d.numeroRegion
                                select new SelectListItem
                {
                    Value = d.idRegion.ToString(),
                    Text = d.nombreRegion,
                }).ToList();
            }
            model.listaDeRegiones = new SelectList(regionesTemp, "Value", "Text");

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var db = new SaludOcupacionalEntities())
            {
                // Revisa si el centro de trabajo existe en el sistema
                CentroDeTrabajo oCentroDeTrabajo = db.CentroDeTrabajo.Find(model.idCentroDeTrabajo);
                if (oCentroDeTrabajo == null)
                {
                    ModelState.AddModelError("nombreCentroDeTrabajo", "El Centro de Trabajo no Existe");
                    return(View(model));
                }

                // Revisa si el centro de trabajo ya tiene una comisión asignada. Sólo puede haber una comisión por centro de trabajo
                int valido = (from d in db.Comision
                              join ct in db.CentroDeTrabajo on d.idCentroDeTrabajo equals ct.idCentroDeTrabajo
                              where ct.idCentroDeTrabajo == model.idCentroDeTrabajo
                              select d.idCentroDeTrabajo).Count();

                if (valido != 0)
                {
                    ModelState.AddModelError("nombreCentroDeTrabajo", "El Centro de Trabajo ya está asignado a otra comisión");
                    return(View(model));
                }

                /* Crea el nombre de la comisión de manera predeterminada. Ej: "comisionhatillo" para el centro de trabajo "Hatillo"
                 * Quita los espacios en blanco*/
                string nombreComision = String.Concat(oCentroDeTrabajo.nombreCentroDeTrabajo.Where(c => !Char.IsWhiteSpace(c)));
                nombreComision = "comision" + nombreComision;

                /* Revisa si el nombre de la comisión ya existe. Esto es para cuentas duplicadas, centros de trabajo que se llamen igual
                 * pero pertenezcan a diferentes regiones, lo cual es válido*/
                var usernameExists = db.Cuenta.Any(x => x.nombre == nombreComision);

                if (usernameExists)
                {
                    // En caso de repetirse, añade el número de región. Ej "comisionsanrafael2" para San Rafael de Alajuela
                    nombreComision = nombreComision + oCentroDeTrabajo.Region.numeroRegion.ToString();
                }

                // Quita mayúsculas y guiones del nombre
                nombreComision = nombreComision.ToLower();
                nombreComision = Regex.Replace(nombreComision.Normalize(NormalizationForm.FormD), @"[^a-zA-z0-9 ]+", "");

                // La contraseña se genera mediante una función de C#, que recibe la cantidad de caracteres y el número de caracteres no alfanuméricos
                string contrasena = Membership.GeneratePassword(10, 1);

                ViewBag.nombre = nombreComision;
                ViewBag.contra = contrasena;

                // Se encripta la contraseña
                contrasena = CryptoEngine.Encrypt(contrasena);

                Cuenta oCuenta = new Cuenta();
                oCuenta.nombre     = nombreComision;
                oCuenta.contrasena = contrasena;
                oCuenta.rol        = 1; // Rol 1 significa "usuario"
                db.Cuenta.Add(oCuenta);

                Comision oComision = new Comision();
                oComision.idCentroDeTrabajo = model.idCentroDeTrabajo;
                oComision.idCuenta          = oCuenta.idCuenta;
                db.Comision.Add(oComision);

                db.SaveChanges();
            }

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