예제 #1
0
        public ActionResult Create([Bind(Include = "LugarID,NombreLugar,AbrevLugar,DireccionHabitual")] Lugar lugar)
        {
            if (ModelState.IsValid)
            {
                db.Lugares.Add(lugar);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(lugar));
        }
예제 #2
0
        public ActionResult Create([Bind(Include = "TipoDocumentoID,Descripcion,Abreviacion,PermiteEnviosOVAL,TipoDocumentoOVAL")] TipoDocumento tipoDocumento)
        {
            if (ModelState.IsValid)
            {
                db.TiposDocumento.Add(tipoDocumento);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tipoDocumento));
        }
예제 #3
0
        public ActionResult Create([Bind(Include = "NotificacionVencimientoID,MailNotificacionVencimiento,RegistroCapacitacionID")] NotificacionVencimiento notificacionVencimiento)
        {
            if (ModelState.IsValid)
            {
                db.NotificacionVencimientos.Add(notificacionVencimiento);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.RegistroCapacitacionID = new SelectList(db.RegistroCapacitacion, "RegistroCapacitacionID", "UsuarioModificacion", notificacionVencimiento.RegistroCapacitacionID);
            return(View(notificacionVencimiento));
        }
예제 #4
0
 public void Add(T entity)
 {
     try
     {
         _context.Set <T>().Add(entity);
         _context.SaveChanges();
     }
     catch (Exception)
     {
         throw;
     }
 }
예제 #5
0
 public bool Add(LeccionPorCurso model)
 {
     try
     {
         _cursosDbContext.Add(model);
         _cursosDbContext.SaveChanges();
     }
     catch (Exception)
     {
         return(false);
     }
     return(true);
 }
예제 #6
0
 public bool Add(Categoria model)
 {
     try
     {
         _cursosDbContext.Add(model);
         _cursosDbContext.SaveChanges();
     }
     catch (Exception)
     {
         return(false);
     }
     return(true);
 }
예제 #7
0
        public ActionResult Create([Bind(Include = "InstructorID,Nombre,Apellido,Documento,FechaNacimiento,Domicilio,Telefono,Activo")] Instructor instructor)
        {
            if (ModelState.IsValid)
            {
                instructor.SetearAtributosControl();

                db.Instructores.Add(instructor);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(View(instructor));
        }
예제 #8
0
        public ActionResult Create([Bind(Include = "CursoID,Descripcion,DescripcionEnIngles,Costo,Horas,Modulo,Vigencia,EvaluacionConNota,PuntajeMinimo,PuntajeMaximo,ColorDeFondo,RequiereAutorizacion,TieneMinimoAsistentes,MinimoAsistentes,TieneMaximoAsistentes,MaximoAsistentes,TieneCierreIncripcion,HorasCierreInscripcion,PermiteInscripcionesExternas,PermiteEnviosOVAL,PuntoServicioId,RequiereDocumentacionAdicionalInscripcion,DocumentacionAdicionalIdentificador,RequiereDocumentacionAdicionalInscripcionObligatoria")] Curso curso)
        {
            if (ModelState.IsValid)
            {
                if (!curso.PermiteEnviosOVAL)
                {
                    curso.PuntoServicioId = null;
                }

                db.Cursos.Add(curso);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(curso));
        }
 public void Borrar(int inscripcionId)
 {
     using (var transaction = _dbContext.Database.BeginTransaction())
     {
         try
         {
             var inscripcionInDb = _dbContext
                                   .Inscripciones
                                   .SingleOrDefault(i => i.InscripcionId == inscripcionId);
             if (inscripcionInDb != null)
             {
                 _dbContext.Entry(inscripcionInDb).State = EntityState.Deleted;
                 var cursoInDb = _dbContext.Cursos
                                 .SingleOrDefault(c => c.CursoId == inscripcionInDb.CursoId);
                 if (cursoInDb != null)
                 {
                     cursoInDb.Vacantes++;
                     _dbContext.Entry(cursoInDb).State = EntityState.Modified;
                     _dbContext.SaveChanges();
                 }
                 transaction.Commit();
             }
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             throw new Exception(ex.Message);
         }
     }
 }
예제 #10
0
        public ActionResult Create([Bind(Include = "EmpresaID,NombreFantasia,Domicilio,RazonSocial,RUT,DepartamentoID,Localidad,CodigoPostal,Email,Telefono")] Empresa empresa)
        {
            if (ModelState.IsValid)
            {
                empresa.SetearAtributosControl();

                db.Empresas.Add(empresa);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            ViewBag.DepartamentoID = new SelectList(db.Departamentos, "DepartamentoID", "Nombre");

            return(View(empresa));
        }
예제 #11
0
        //Las notificaciones asociadas a los registros no se crean al crear el registro
        //Antes de listar en pantalla los vencimientos, se le asocian la notificaciones a los registros que no la tienen
        private void ActualizarNotificacionesVencimientos()
        {
            using (CursosDbContext db = new CursosDbContext())
            {
                var rcSinNotificacioneAsociadas =
                    db.RegistroCapacitacion.Where(r => !db.NotificacionVencimientos.Any(n => n.RegistroCapacitacionID == r.RegistroCapacitacionID)).ToList();

                if (rcSinNotificacioneAsociadas.Count > 0)
                {
                    foreach (var r in rcSinNotificacioneAsociadas)
                    {
                        var n = new NotificacionVencimiento
                        {
                            Estado = EstadoNotificacionVencimiento.NotificacionPendiente,
                            RegistroCapacitacion = r,
                            Fecha = DateTime.Now
                        };

                        db.NotificacionVencimientos.Add(n);
                    }

                    db.SaveChanges();
                }
            }
        }
예제 #12
0
        public bool CambiarExtensionFotoAJPG(Capacitado c, CursosDbContext dbContext)
        {
            //var capacitado = db.Capacitados.Where(c => c.CapacitadoID == CapacitadoID).;
            var pathArchivo = dbContext.PathArchivos.Find(c.PathArchivoID);

            if (c.PathArchivo != null && c.PathArchivo.NombreArchivo.ToLower().Contains(".jpeg"))
            {
                string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(c.CapacitadoID);
                string pathDirectorio = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo);

                var pathArchivoImagenAnterior = Path.Combine(pathDirectorio, c.PathArchivo.NombreArchivo);
                var pathArchivoImagenNuevo = Path.Combine(pathDirectorio, c.PathArchivo.NombreArchivo.ToLower().Replace(".jpeg", ".jpg"));

                System.IO.File.Move(pathArchivoImagenAnterior, pathArchivoImagenNuevo);

                string nuevoNombreArchivo = c.PathArchivo.NombreArchivo.ToLower().Replace(".jpeg", ".jpg");
                //c.PathArchivo.NombreArchivo = nuevoNombreArchivo;

                pathArchivo.NombreArchivo = nuevoNombreArchivo;
                dbContext.SaveChanges();
            }
            else
                return false;

            return true;
        }
예제 #13
0
        public void ActualizarNotificacionesVencimientos()
        {
            var registrosPorVencer = db.NotificacionVencimientos.Where(r => r.Estado == EstadoNotificacionVencimiento.NotificacionPendiente);

            //registrosPorVencer = registrosPorVencer.Where(r => r.NotificarRegistroPorVencer);

            //var registrosPorVencer = db.RegistroCapacitacion.Where(r => r.FechaVencimiento >= fechaInicioControlVencimientos &&
            //                                                            r.FechaVencimiento >= r.FechaVencimiento.AddDays(diasAnticipacionAviso)).ToList();

            //List<RegistroCapacitacion> registrosPorVencer = new List<RegistroCapacitacion>();

            foreach (var registroPorVencer in registrosPorVencer.ToList())
            {
                NotificacionVencimiento notificacion = new NotificacionVencimiento
                {
                    RegistroCapacitacion        = registroPorVencer.RegistroCapacitacion,
                    MailNotificacionVencimiento = string.Empty,
                    Estado = EstadoNotificacionVencimiento.NotificacionPendiente
                };

                db.NotificacionVencimientos.Add(notificacion);
            }

            //si se agregó alguna notificación de vencimiento
            if (registrosPorVencer.ToList().Count > 0)
            {
                db.SaveChanges();
            }

            /*
             * var registrosPorVencer = db.RegistroCapacitacion.AsQueryable();
             *
             * registrosPorVencer = registrosPorVencer.Where(r => r.NotificarRegistroPorVencer);
             *
             * //var registrosPorVencer = db.RegistroCapacitacion.Where(r => r.FechaVencimiento >= fechaInicioControlVencimientos &&
             * //                                                            r.FechaVencimiento >= r.FechaVencimiento.AddDays(diasAnticipacionAviso)).ToList();
             *
             * //List<RegistroCapacitacion> registrosPorVencer = new List<RegistroCapacitacion>();
             *
             * foreach (var registroPorVencer in registrosPorVencer.ToList())
             * {
             *  NotificacionVencimiento notificacion = new NotificacionVencimiento
             *                                         {
             *                                              RegistroCapacitacion = registroPorVencer,
             *                                              MailNotificacionVencimiento = string.Empty,
             *                                              Estado = EstadoNotificacionVencimiento.NotificacionPendiente
             *                                          };
             *
             *  db.NotificacionVencimientos.Add(notificacion);
             * }
             *
             * //si se agregó alguna notificación de vencimiento
             * if (registrosPorVencer.ToList().Count > 0)
             *  db.SaveChanges();
             */
        }
예제 #14
0
 public ActionResult EditarItem([Bind(Include = "ConfiguracionID,Index,Order,Seccion,SubSeccion,Label,Value")] Configuracion configuracion)
 {
     if (ModelState.IsValid)
     {
         db.Entry(configuracion).State = EntityState.Modified;
         db.SaveChanges();
         return(View(configuracion));
     }
     return(View("EditarItem", configuracion));
 }
예제 #15
0
        public ActionResult CreateWithCapacitado([Bind(Include = "RegistroCapacitacionID,Aprobado,Nota,NotaPrevia,Estado,JornadaID,CapacitadoID,FechaVencimiento")] RegistroCapacitacion registroCapacitacion)
        {
            if (ModelState.IsValid)
            {
                registroCapacitacion.SetearAtributosControl();

                var jornada = db.Jornada.Where(j => j.JornadaID == registroCapacitacion.JornadaID).FirstOrDefault();

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

                if (jornada.PermiteEnviosOVAL)
                {
                    registroCapacitacion.EnvioOVALEstado = EstadosEnvioOVAL.PendienteEnvio;
                }
                else
                {
                    registroCapacitacion.EnvioOVALEstado = EstadosEnvioOVAL.NoEnviar;
                }

                db.RegistroCapacitacion.Add(registroCapacitacion);
                db.SaveChanges();
                //return RedirectToAction("Index");
                return(RedirectToAction("Details", "Capacitados", new { id = registroCapacitacion.CapacitadoID }));
            }

            var capacitado = db.Capacitados.Find(registroCapacitacion.CapacitadoID);

            if (capacitado != null)
            {
                ViewBag.Capacitado   = capacitado;
                ViewBag.CapacitadoID = capacitado.CapacitadoID;
            }
            else
            {
                return(new HttpNotFoundResult());
            }

            var jornadas = db.Jornada.Where(j => j.UsuarioModificacion == User.Identity.Name);

            ViewBag.JornadaID = new SelectList(jornadas.OrderByDescending(j => j.Fecha).ThenByDescending(j => j.Hora).ToList(), "JornadaID", "JornadaIdentificacionCompleta", registroCapacitacion.JornadaID);

            return(View("Create"));
        }
예제 #16
0
 public bool Add(ComentariosCursos model)
 {
     try
     {
         _cursosDbContext.Add(model);
         _cursosDbContext.SaveChanges();
     }
     catch (Exception)
     {
         return(false);
     }
     return(true);
 }
예제 #17
0
        public bool EnviarDatosRegistroOVAL(int registroCapacitacionId, ref int totalAceptados, ref int totalRechazados)
        {
            //se inicializa nuevamente el db context para evitar que se lean datos cacheados
            db = new CursosDbContext();
            var registroCapacitacion = db.RegistroCapacitacion.Where(r => r.RegistroCapacitacionID == registroCapacitacionId).FirstOrDefault();

            if (registroCapacitacion != null)
            {
                if (registroCapacitacion.ListoParaEnviarOVAL)
                {
                    EstadosEnvioOVAL estado;
                    RespuestaOVAL    respuesta = this.EnviarDatosRegistro(registroCapacitacion);

                    switch (respuesta.Codigo)
                    {
                    case 0:     //si el registro se recibió correctamente

                        estado = EstadosEnvioOVAL.Aceptado;
                        totalAceptados++;

                        break;

                    case 1:     //si el registro no se recibió correctamente

                        estado = EstadosEnvioOVAL.Rechazado;
                        totalRechazados++;

                        break;

                    default:

                        return(false);
                    }

                    registroCapacitacion.EnvioOVALEstado    = estado;
                    registroCapacitacion.EnvioOVALFechaHora = DateTime.Now;
                    registroCapacitacion.EnvioOVALUsuario   = HttpContext.Current.User.Identity.Name;
                    registroCapacitacion.EnvioOVALMensaje   = respuesta.Mensaje;

                    db.Entry(registroCapacitacion).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }

            return(true);
        }
예제 #18
0
        public ActionResult Create([Bind(Include = "CapacitadoID,Nombre,Apellido,Documento,Fecha,Telefono,EmpresaID,TipoDocumentoID")] Capacitado capacitado, HttpPostedFileBase upload, int?jornadaId)
        {
            if (ModelState.IsValid)
            {
                capacitado.SetearAtributosControl();

                db.Capacitados.Add(capacitado);
                db.SaveChanges();

                if (upload != null && upload.ContentLength > 0)
                {
                    string nombreArchivo = PathArchivoHelper.GetInstance().ObtenerNombreFotoCapacitado(capacitado.CapacitadoID,
                                                                                                       System.IO.Path.GetExtension(upload.FileName));

                    string carpetaArchivo = PathArchivoHelper.GetInstance().ObtenerCarpetaFotoCapacitado(capacitado.CapacitadoID);

                    string pathDirectorio = Path.Combine(Server.MapPath("~/Images/FotosCapacitados/"), carpetaArchivo);

                    capacitado.PathArchivo = PathArchivoHelper.GetInstance().ObtenerPathArchivo(nombreArchivo,
                                                                                                carpetaArchivo,
                                                                                                pathDirectorio,
                                                                                                upload,
                                                                                                TiposArchivo.FotoCapacitado);

                    db.Entry(capacitado).State = EntityState.Modified;
                    db.SaveChanges();
                }

                //si durante la cración se recibe un id de jornada, el capacitado es agregado a esa jornada
                if (jornadaId != null)
                {
                    Jornada j = db.Jornada.Find(jornadaId);

                    if (j == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }

                    //se vuelve a cargar el capacitado para leer entidades asociadas
                    capacitado = db.Capacitados.Where(c => c.CapacitadoID == capacitado.CapacitadoID).Include(c => c.TipoDocumento).FirstOrDefault();

                    var nuevoRC = new RegistroCapacitacion();
                    nuevoRC.SetearAtributosControl();

                    nuevoRC.Jornada          = j;
                    nuevoRC.Capacitado       = capacitado;
                    nuevoRC.Nota             = 0;
                    nuevoRC.Aprobado         = true;
                    nuevoRC.FechaVencimiento = j.ObtenerFechaVencimiento(true);

                    if (j.PermiteEnviosOVAL)
                    {
                        nuevoRC.EnvioOVALEstado = EstadosEnvioOVAL.PendienteEnvio;
                    }
                    else
                    {
                        nuevoRC.EnvioOVALEstado = EstadosEnvioOVAL.NoEnviar;
                    }

                    db.RegistroCapacitacion.Add(nuevoRC);
                    db.SaveChanges();

                    //si la incripción fue registrada por un usuario con perfil para inscripciones externas, se notifica por email
                    if (System.Web.HttpContext.Current.User.IsInRole("InscripcionesExternas"))
                    {
                        NotificacionesEMailHelper.GetInstance().EnviarEmailsNotificacionInscripcionExterna(nuevoRC, true);
                    }

                    return(RedirectToAction("Details", "Jornadas", new { id = jornadaId }));
                }

                return(RedirectToAction("Details", "Capacitados", new { id = capacitado.CapacitadoID }));
            }

            ViewBag.TipoDocumentoID = new SelectList(db.TiposDocumento.ToList(), "TipoDocumentoID", "Descripcion", capacitado.TipoDocumentoID);
            ViewBag.EmpresaID       = new SelectList(db.Empresas.OrderBy(e => e.NombreFantasia).ToList(), "EmpresaID", "NombreFantasia", capacitado.EmpresaID);

            return(View(capacitado));
        }
예제 #19
0
        public async Task <ActionResult> Edit()
        {
            string     id = Request["Id"];
            string     roleNameEditado   = Request["RoleName"];
            Empresa    empresaEditada    = dbcursos.Empresas.Find(int.Parse(Request["EmpresaID"]));
            Instructor instructorEditado = dbcursos.Instructores.Find(int.Parse(Request["InstructorID"]));

            //https://blog.productiveedge.com/asp-net-mvc-checkboxfor-explained
            bool permitirInscripcionesExternas = Request["PermitirInscripcionesExternas"].Contains("true") ? true : false;

            var usuario = db.Users.Where(u => u.Id == id).FirstOrDefault();

            bool usuarioPuedeInscripcionesExternas = UsuarioHelper.GetInstance().UsuarioTieneRol(usuario.UserName, "InscripcionesExternas");

            string roleNameActual   = UsuarioHelper.GetInstance().ObtenerRoleName(usuario.Roles.ElementAt(0).RoleId);
            var    empresaActual    = UsuarioHelper.GetInstance().ObtenerEmpresaAsociada(usuario.UserName);
            var    instructorActual = UsuarioHelper.GetInstance().ObtenerInstructorAsociado(usuario.UserName);

            bool quitarAsociacionEmpresa    = false;
            bool quitarAsociacionInstructor = false;

            //si se modificó el rol del usuario
            if (roleNameActual != roleNameEditado)
            {
                if (roleNameActual == "ConsultaEmpresa") //si antes el usuario estaba asociado a una empresa, se debe remover la asociación a esta empresa
                {
                    quitarAsociacionEmpresa = true;
                }

                if (roleNameActual == "InstructorExterno")
                {
                    quitarAsociacionInstructor = true;
                }

                this.UserManager.RemoveFromRole(id, roleNameActual);
                await this.UserManager.AddToRoleAsync(id, roleNameEditado);
            }

            //si está seleccionada la opción "PermitirInscripcionesExternas" y el usuario editado no tenía el rol asociado, se le agrega el rol "InscripcionesExternas"
            if (permitirInscripcionesExternas)
            {
                if (!usuarioPuedeInscripcionesExternas && roleNameEditado == "ConsultaEmpresa")
                {
                    await this.UserManager.AddToRoleAsync(id, "InscripcionesExternas");
                }
            }
            else //si no está seleccionada la opción "PermitirInscripcionesExternas" y el usuario editado no tenía el rol asociado anteriormente, se retira el rol
            {
                if (usuarioPuedeInscripcionesExternas)
                {
                    this.UserManager.RemoveFromRole(id, "InscripcionesExternas");
                }
            }

            int empresaActualID = -1;

            if (empresaActual != null)
            {
                empresaActualID = empresaActual.EmpresaID;
            }

            int empresaEditadaID = -1;

            if (empresaEditada != null)
            {
                empresaEditadaID = empresaEditada.EmpresaID;
            }

            //si el usuario estaba asociado a una empresa y se cambió esa empresa, o si tenía el rol "ConsultaEmpresa" y cambió por otro
            if ((empresaActualID != -1 && empresaActualID != empresaEditadaID) || quitarAsociacionEmpresa)
            {
                this.RemoverAsociacionUsuarioAEmpresa(usuario.UserName);
            }

            if (roleNameEditado == "ConsultaEmpresa")
            {
                if (empresaActualID != empresaEditadaID)
                {
                    this.AsociarUsuarioAEmpresa(empresaEditadaID, usuario.UserName);
                }
            }

            int instructorActualID = -1;

            if (instructorActual != null)
            {
                instructorActualID = instructorActual.InstructorID;
            }

            int instructorEditadoID = -1;

            if (instructorEditado != null)
            {
                instructorEditadoID = instructorEditado.InstructorID;
            }

            //si el usuario estaba asociado a una empresa y se cambió esa empresa, o si tenía el rol "ConsultaEmpresa" y cambió por otro
            if ((instructorActualID != -1 && instructorActualID != instructorEditadoID) || quitarAsociacionInstructor)
            {
                this.RemoverAsociacionUsuarioInstructor(usuario.UserName);
            }

            if (roleNameEditado == "InstructorExterno")
            {
                if (instructorActualID != instructorEditadoID)
                {
                    this.AsociarUsuarioAInstructor(instructorEditadoID, usuario.UserName);
                }
            }

            dbcursos.SaveChanges();

            return(RedirectToAction("Index"));
        }
예제 #20
0
 public void SaveChanges()
 {
     _dbContext.SaveChanges();
 }
예제 #21
0
        //se marcan para no enviar aquellos registros de cursos que los capacitados ya actualizaron
        private void MarcarRegistrosYaActualizados(DateTime proximaFechaVencimientoNotificar)
        {
            List <int> notificacionVencimientosIds = null;
            List <int> capacitadosIds     = null;
            List <int> jornadasVencidasId = null;

            //se obtienen los Ids de las notificaciones que están por vencer
            using (CursosDbContext db = new CursosDbContext())
            {
                var notificacionVencimientos = db.NotificacionVencimientos
                                               .Where(n => n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente)
                                               .Where(n => n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar);

                notificacionVencimientosIds = notificacionVencimientos.Select(n => n.NotificacionVencimientoID).ToList();
                capacitadosIds     = notificacionVencimientos.Select(n => n.RegistroCapacitacion.Capacitado.CapacitadoID).ToList();
                jornadasVencidasId = notificacionVencimientos.Select(n => n.RegistroCapacitacion.JornadaID).Distinct().ToList();
            }

            int i = 0;

            foreach (var jornadaVencidaId in jornadasVencidasId)
            {
                using (CursosDbContext db = new CursosDbContext())
                {
                    Jornada jornadaVencida = null;

                    try
                    {
                        jornadaVencida = db.Jornada.Find(jornadaVencidaId);
                        //var capacitado = db.Capacitados.Find(capacitadosIds[i]);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }

                    int currentCapacitadoId = capacitadosIds[i];
                    var capacitado          = db.Capacitados.Where(c => c.CapacitadoID == currentCapacitadoId)
                                              .Include(c => c.RegistrosCapacitacion).FirstOrDefault();

                    //se obtiene la última jornada asociada al curso de la jornada que se debería notificar como vencida
                    var ultimaJornadaCursoRegistrada =
                        capacitado.RegistrosCapacitacion.Where(r => r.Jornada.CursoId == jornadaVencida.CursoId).OrderByDescending(r => r.Jornada.Fecha).FirstOrDefault();

                    //si la última jornada que tomó el capacitado no coincide con la que se va a notificar
                    //es porque el capacitado ya tomó una jornada de actualización por lo que no es necesario notificar ese vencimiento
                    if (ultimaJornadaCursoRegistrada != null && ultimaJornadaCursoRegistrada.JornadaID != jornadaVencida.JornadaID)
                    {
                        var notificacionVencimiento = db.NotificacionVencimientos.Find(notificacionVencimientosIds[i]);
                        notificacionVencimiento.Estado = EstadoNotificacionVencimiento.NoNotificar;

                        string mensajelog =
                            string.Format("{0} - {1}. No se notificará el vecimiento de la jornada {2} porque el Capacitado ya tiene una jornada posterior correspondiente a ese curso.",
                                          capacitado.DocumentoCompleto,
                                          capacitado.NombreCompleto,
                                          jornadaVencida.JornadaIdentificacionCompleta);

                        LogHelper.GetInstance().WriteMessage("notificaciones", mensajelog);
                        db.SaveChanges();
                    }
                }

                i++;
            }

            /*
             * using (CursosDbContext db = new CursosDbContext())
             * {
             *  var notificacionVencimientos = db.NotificacionVencimientos
             *                                   .Where(n => n.Estado == EstadoNotificacionVencimiento.NotificacionPendiente)
             *                                   .Where(n => n.RegistroCapacitacion.FechaVencimiento <= proximaFechaVencimientoNotificar)
             *                                   .Include(n => n.RegistroCapacitacion)
             *                                   .Include(n => n.RegistroCapacitacion.Capacitado.RegistrosCapacitacion);
             *
             *  if (notificacionVencimientos.Count() > 0)
             *  {
             *      //se verifica que el capacitado no tenga jornadas posteriores a la
             *      foreach (var n in notificacionVencimientos)
             *      {
             *          var capacitado = n.RegistroCapacitacion.Capacitado;
             *          var jornadaVencida = n.RegistroCapacitacion.Jornada;
             *
             *          //se obtiene la última jornada asociada al curso de la jornada que se debería notificar como vencida
             *          var ultimaJornadaCursoRegistrada =
             *          capacitado.RegistrosCapacitacion.Where(r => r.Jornada.CursoId == jornadaVencida.CursoId).OrderByDescending(r => r.Jornada.Fecha).First();
             *
             *          //si la última jornada que tomó el capacitado no coincide con la que se va a notificar
             *          //es porque el capacitado ya tomó una jornada de actualización por lo que no es necesario notificar ese vencimiento
             *          if (ultimaJornadaCursoRegistrada.JornadaID != jornadaVencida.JornadaID)
             *              n.Estado = EstadoNotificacionVencimiento.NoNotificar;
             *      }
             *
             *      //db.SaveChanges();
             *  }
             * }
             */
        }