/* 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")));
        }
        /* Función de controlador tipo GET que abre la vista de ver una noticia,
         * permite observar los contenidos completos de la noticia que se seleccione.
         * Parámetros: Id de la noticia que se desea ver.*/
        public ActionResult VerNoticia(int id)
        {
            VerNoticiaViewModel model = new VerNoticiaViewModel();

            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 si hay archivos.
                    ViewBag.Mensaje = "archivos";

                    Archivo oArchivo = archivo.First();

                    Session["filePath"] = oArchivo.filePath;

                    // Dependiendo del tipo de archivo, se hará una acción u otra en la vista.
                    Session["tipo"] = oArchivo.tipo;

                    model.archivo = oArchivo;
                }
            }

            return(View(model));
        }
        /* Función de controlador tipo GET que abre la vista de ver noticia, donde
         * se puede visualizar el título, contenido y archivo de la noticia seleccionada
         * Parámetros: Id de la noticia.*/
        public ActionResult VerNoticia(int id)
        {
            VerNoticiaViewModel model = new VerNoticiaViewModel();

            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)
                {
                    ViewBag.Mensaje = "archivos";

                    Archivo oArchivo = archivo.First();

                    Session["filePath"] = oArchivo.filePath;
                    Session["tipo"]     = oArchivo.tipo;

                    model.archivo = oArchivo;
                }
            }

            return(View(model));
        }
        /* 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 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 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 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 abre la vista principal del módulo de cuentas,
         * permite ver todas las cuentas de comisión que existen, filtrarlas y recuperar la contraseña.
         * Parámetros: nombre de la comisión a filtrar*/
        public ActionResult Index(string nombreComision)
        {
            List <CuentaTableViewModel> lista = null;

            using (var db = new SaludOcupacionalEntities())
            {
                var cuentas = from d in db.Cuenta
                              join c in db.Comision on d.idCuenta equals c.idCuenta
                              join ct in db.CentroDeTrabajo on c.idCentroDeTrabajo equals ct.idCentroDeTrabajo
                              orderby d.idCuenta
                              select new CuentaTableViewModel
                {
                    idCuenta       = d.idCuenta,
                    nombre         = d.nombre,
                    nombreComision = ct.nombreCentroDeTrabajo
                };

                if (!String.IsNullOrEmpty(nombreComision))
                {
                    cuentas = cuentas.Where(d => d.nombre.Contains(nombreComision));
                }

                lista = cuentas.ToList();
            }

            return(View(lista));
        }
        /* Función de controlador tipo GET que abre la vista principal de
         * visualización de representantes del lado del administrador. Permite ver
         * todos los representantes anexados a cierta comisión
         * Parámetros: Id de la comisión*/
        public ActionResult Representantes(int id)
        {
            List <RepresentanteTableViewModel> lista = null;

            using (SaludOcupacionalEntities db = new SaludOcupacionalEntities())
            {
                lista = (from d in db.Representante
                         where d.idComision == id && d.estado == 1
                         orderby d.idRepresentante
                         select new RepresentanteTableViewModel
                {
                    idRepresentante = d.idRepresentante,
                    nombre = d.nombre,
                    correo = d.correo,
                    telefono = d.telefono,
                    idComision = d.idComision,
                    tipo = d.tipo == 0 ? "Patrono" : "Trabajador"
                }).ToList();
            }

            foreach (var obj in lista)
            {
                obj.sIngreso     = obj.ingreso.ToShortDateString();
                obj.sVencimiento = obj.vencimiento.ToShortDateString();
            }
            return(View(lista));
        }
Beispiel #10
0
 public JsonResult GetCentrosDeTrabajo(string Prefix, int regID)
 {
     using (SaludOcupacionalEntities db = new SaludOcupacionalEntities()) {
         var centros = (from d in db.CentroDeTrabajo
                        join c in db.Region on d.idRegion equals c.idRegion
                        where d.nombreCentroDeTrabajo.StartsWith(Prefix) && d.idRegion == regID
                        select new { nombreCentroDeTrabajo = d.nombreCentroDeTrabajo, idCentroDeTrabajo = d.idCentroDeTrabajo }
                        ).ToList();
         return(Json(centros, JsonRequestBehavior.AllowGet));
     }
 }
        public ActionResult EnviarCorreo(int Id)
        {
            CuentaPopupViewModel model = new CuentaPopupViewModel();

            using (var db = new SaludOcupacionalEntities())
            {
                Cuenta oCuenta = db.Cuenta.Find(Id);
                model.password = CryptoEngine.Decrypt(oCuenta.contrasena);
                model.nombre   = oCuenta.nombre;
            }

            return(View(model));
        }
        /* Función de controlador tipo GET que se alza cada vez que el usuario presione
         * el botón de "Descargar Archivo". Permite descargar el archivo seleccionado.
         * Parámetros: Id del archivo*/
        public FileResult Descargar(int id)
        {
            string filePath = "";
            string tipo     = "";

            using (var db = new SaludOcupacionalEntities())
            {
                var oArchivo = db.Archivo.Find(id);
                filePath = oArchivo.filePath;
                tipo     = oArchivo.tipo;
            }

            return(File(filePath, tipo));
        }
        /* 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)));
        }
        /* Función de controlador tipo GET que abre la vista de editar representante,
         * donde se pueden editar todos los contenidos de un representante elegido
         * Parámetros: Id del representante.*/
        public ActionResult Edit(int id)
        {
            EditRepresentanteViewModel model = new EditRepresentanteViewModel();

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

            return(View(model));
        }
Beispiel #16
0
        public ActionResult Index(LoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

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

                var cuenta = from d in db.Cuenta
                             where d.nombre == model.username
                             select d;

                if (cuenta.Count() == 0)
                {
                    ModelState.AddModelError("username", "Usuario inválido");
                    return(View(model));
                }

                Cuenta oCuenta = cuenta.First();

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

                Session["Usuario"] = oCuenta;

                if (oCuenta.rol == 0)
                {
                    return(Redirect(Url.Content("~/AdminComision")));
                }
                else
                {
                    var comision = (from d in db.Comision
                                    join c in db.Cuenta on d.idCuenta equals oCuenta.idCuenta
                                    select d.idComision);

                    int idComision = comision.First();

                    Session["idComision"] = idComision;
                    return(Redirect(Url.Content("~/ComisionUser/InformacionPrincipal/" + idComision)));
                }
            }
        }
        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));
        }
Beispiel #18
0
        public ActionResult AddComisionUser()
        {
            ComisionViewModel     model = new ComisionViewModel();
            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");
            return(View(model));
        }
        /* Función de controlador tipo GET que muestra la lista de centros de trabajo en el sistema,
         * permite ver y editar cada centro, y filtrarlos tanto por nombre como por región
         * Parámetros: Nombre del centro de trabajo y número de la región que se desea filtrar*/
        public ActionResult Index(string nombre, int?region)
        {
            List <CentroDeTrabajoTableViewModel> lista = null;

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

                ViewBag.Regiones = new SelectList(regiones, "Value", "Text");

                var centrosDeTrabajo = from d in db.CentroDeTrabajo
                                       join r in db.Region on d.idRegion equals r.idRegion
                                       orderby d.idRegion descending
                                       select new CentroDeTrabajoTableViewModel
                {
                    nombre            = d.nombreCentroDeTrabajo,
                    nombreRegion      = r.nombreRegion,
                    idRegion          = d.idRegion,
                    idCentroDeTrabajo = d.idCentroDeTrabajo
                };

                // Filtro por nombre
                if (!String.IsNullOrEmpty(nombre))
                {
                    centrosDeTrabajo = centrosDeTrabajo.Where(d => d.nombre.Contains(nombre));
                }

                // Filtro por región
                if (region != null)
                {
                    centrosDeTrabajo = centrosDeTrabajo.Where(d => d.idRegion == region);
                }

                lista = centrosDeTrabajo.ToList();

                return(View(lista));
            }
        }
        /* Función de controlador tipo GET que abre la vista de "Agregar centros de trabajo",
         * permite crear un nuevo centro de trabajo, y guardarlo en el sistema. */
        public ActionResult AddCentroDeTrabajo()
        {
            CentroDeTrabajoViewModel model = new CentroDeTrabajoViewModel();

            using (SaludOcupacionalEntities db = new SaludOcupacionalEntities())
            {
                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");
            }

            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")));
        }
        /* Función de controlador tipo GET que abre la vista de editar comisión,
         * que permite editar toda la información perteneciente a la comisión, del lado del usuario.
         * Parámetros: Id de la comisión*/
        public ActionResult Edit(int id)
        {
            EditComisionViewModel model = new EditComisionViewModel();

            using (var db = new SaludOcupacionalEntities())
            {
                var oComision = db.Comision.Find(id);
                model.contacto         = oComision.contacto;
                model.contactoCorreo   = oComision.contactoCorreo;
                model.contactoTelefono = oComision.contactoTelefono;
                model.jefatura         = oComision.jefatura;
                model.jefaturaCorreo   = oComision.jefaturaCorreo;
                model.jefaturaTelefono = oComision.jefaturaTelefono;
                model.idComision       = oComision.idComision;
                model.fechaDeRegistro  = oComision.fechaDeRegistro;
                model.numeroRegistro   = oComision.numeroDeRegistro;
            }

            return(View(model));
        }
        /* 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 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 abre la vista "Editar Centro de Trabajo,
         * permite editar tanto el nombre como la región del centro seleccionado.
         * Parámetros: Id del centro de trabajo*/
        public ActionResult EditCentroDeTrabajo(int id)
        {
            CentroDeTrabajoEditViewModel model = new CentroDeTrabajoEditViewModel();

            using (var db = new SaludOcupacionalEntities())
            {
                var oCentroDeTrabajo = db.CentroDeTrabajo.Find(id);
                model.idCentroDeTrabajo = id;
                model.nombre            = oCentroDeTrabajo.nombreCentroDeTrabajo;

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

            return(View(model));
        }
        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"])));
        }
        /* Función de controlador tipo GET que abre la vista principal del módulo de
         * noticias, por el lado del usuario de comisión. Permite ver todas las noticias subidas,
         * así como filtrar por título
         * Parámetros: título a filtrar.*/
        public ActionResult Index(string titulo)
        {
            List <NoticiaTableViewModel> lista = null;

            using (SaludOcupacionalEntities db = new SaludOcupacionalEntities())
            {
                var noticias = from d in db.Noticia
                               orderby d.fecha descending
                               select new NoticiaTableViewModel
                {
                    idNoticia = d.idNoticia,
                    titulo    = d.titulo,
                    fecha     = d.fecha
                };

                if (!String.IsNullOrEmpty(titulo))
                {
                    noticias = noticias.Where(d => d.titulo.Contains(titulo));
                }

                lista = noticias.ToList();
            }
            return(View(lista));
        }
Beispiel #28
0
        /* Función de controlador tipo GET que muestra todas las comisiones existentes en el sistema,
         * con todos los atributos que necesita ver el administrador. También, permite filtrar por nombre, región
         * fecha inicial o final, si entregaron el informe y si está vencida.
         * Parámetros: nombre, región, fecha inicial, fecha final, informe, vencida (todos son datos de filtros)*/
        public ActionResult Index(string nombre, int?region, DateTime?fechaInicial, DateTime?fechaFinal, int?informe, int?vencida)
        {
            AdminComisionViewModel model = new AdminComisionViewModel();

            model.fechaInicial = fechaInicial;
            model.fechaFinal   = fechaFinal;

            // Se declara y se crea la lista para el filtro de "informe entregado"
            List <SelectListItem> informeEntregado = new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "Sí", Value = "1"
                },
                new SelectListItem {
                    Text = "No", Value = "0"
                }
            };

            ViewBag.listaInforme = new SelectList(informeEntregado, "Value", "Text");

            // Se declara y se crea la lista para el filtro de "comisión vencida"
            List <SelectListItem> comisionVencida = new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "Sí", Value = "1"
                },
                new SelectListItem {
                    Text = "No", Value = "0"
                }
            };

            ViewBag.listaVencimiento = new SelectList(comisionVencida, "Value", "Text");

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

                ViewBag.Regiones = new SelectList(regiones, "Value", "Text");

                var comisiones = from d in db.Comision
                                 join c in db.CentroDeTrabajo on d.idCentroDeTrabajo equals c.idCentroDeTrabajo
                                 join r in db.Region on c.idRegion equals r.idRegion
                                 orderby d.idComision
                                 select new ComisionTableViewModel
                {
                    idComision       = d.idComision,
                    nombre           = c.nombreCentroDeTrabajo,
                    idRegion         = r.idRegion,
                    nombreRegion     = r.nombreRegion,
                    contacto         = d.contacto,
                    contactoCorreo   = d.contactoCorreo,
                    contactoTelefono = d.contactoTelefono,
                    jefatura         = d.jefatura,
                    jefaturaCorreo   = d.jefaturaCorreo,
                    jefaturaTelefono = d.jefaturaTelefono,
                    numeroRegistro   = d.numeroDeRegistro,
                    fechaDeRegistro  = d.fechaDeRegistro,
                    ultimoInforme    = d.ultimoInforme
                };

                // Filtro por nombre
                if (!String.IsNullOrEmpty(nombre))
                {
                    comisiones = comisiones.Where(d => d.nombre.Contains(nombre));
                }

                // Filtro por región
                if (region != null)
                {
                    comisiones = comisiones.Where(d => d.idRegion == region);
                }

                // Filtro por fecha inicial
                if (fechaInicial != null)
                {
                    comisiones = comisiones.Where(d => d.fechaDeRegistro >= fechaInicial);
                }

                // Filtro por fecha final
                if (fechaFinal != null)
                {
                    comisiones = comisiones.Where(d => d.fechaDeRegistro <= fechaFinal);
                }

                // Filtro por si entregó el informe
                if (informe != null)
                {
                    DateTime hoy             = DateTime.Today;
                    DateTime primerDiaDelAño = new DateTime(hoy.Year, 1, 1);
                    if (informe == 0)
                    {
                        comisiones = comisiones.Where(d => (d.ultimoInforme < primerDiaDelAño) || (d.ultimoInforme == null));
                    }
                    else
                    {
                        comisiones = comisiones.Where(d => d.ultimoInforme >= primerDiaDelAño);
                    }
                }

                // Filtro por si está vencida la comisión
                if (vencida != null)
                {
                    DateTime hoyHace3Annos = DateTime.Today.AddYears(-3);
                    if (vencida == 0)
                    {
                        comisiones = comisiones.Where(d => d.fechaDeRegistro >= hoyHace3Annos);
                    }
                    else
                    {
                        comisiones = comisiones.Where(d => d.fechaDeRegistro < hoyHace3Annos);
                    }
                }

                model.comisiones = comisiones.ToList();

                return(View(model));
            }
        }
Beispiel #29
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)));
        }