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