public ActionResult CrearCapacitacion(int id_academia, int[] id_cursos, string nombre_capacitacion)
 {
     if (ModelState.IsValid)
     {
         using (DbContextTransaction tran = db.Database.BeginTransaction())
         {
             try
             {
                 Capacitacion capacitacion = new Capacitacion();
                 capacitacion.nombre         = nombre_capacitacion;
                 capacitacion.activo         = true;
                 capacitacion.eliminado      = false;
                 capacitacion.id_academia    = id_academia;
                 capacitacion.fecha_creacion = DateTime.Now;
                 UsuarioTO usuario = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];
                 capacitacion.id_usuario_creacion = usuario.usuario.id_usuario;
                 db.Capacitacion.Add(capacitacion);
                 db.SaveChanges();
                 if (id_cursos != null)
                 {
                     foreach (var curso in id_cursos)
                     {
                         Capacitacion_Curso capacitacion_curso = new Capacitacion_Curso();
                         capacitacion_curso.id_curso            = curso;
                         capacitacion_curso.id_capacitacion     = capacitacion.id_capacitacion;
                         capacitacion_curso.activo              = true;
                         capacitacion_curso.eliminado           = false;
                         capacitacion_curso.fecha_creacion      = DateTime.Now;
                         capacitacion_curso.id_usuario_creacion = usuario.usuario.id_usuario;
                         db.Capacitacion_Curso.Add(capacitacion_curso);
                         db.SaveChanges();
                     }
                 }
                 tran.Commit();
             }
             catch
             {
                 tran.Rollback();
             }
         }
     }
     return(RedirectToAction("Index", new { id = id_academia }));
 }
        //id_edi_cap_cur = id_capacitacion_curso que se modifica                 t_edi_nom_cur = nombre_curso           id_ed_cur=id_curso
        public ActionResult EditarCurso(int id_academia, int?id_capacitacion, int?id_edi_cap_cur, string t_edi_nom_cur, int?id_ed_cur)
        {
            if (ModelState.IsValid)
            {
                UsuarioTO usuario = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];
                //Si es nulo significa el curso no esta asignado a ninguna categoria
                if (id_edi_cap_cur == null)
                {
                    using (DbContextTransaction tran = db.Database.BeginTransaction())
                    {
                        try
                        {
                            Curso curso = db.Curso.Find(id_ed_cur);
                            curso.nombre                  = t_edi_nom_cur;
                            curso.fecha_modificacion      = DateTime.Now;
                            curso.id_usuario_modificacion = usuario.usuario.id_usuario;
                            db.Entry(curso).State         = EntityState.Modified;
                            db.SaveChanges();

                            //Si el id_capacitacion no es nula, quiere decir que se asignara el curso a una capacitacion
                            if (id_capacitacion != null)
                            {
                                Capacitacion_Curso capacitacion_curso = new Capacitacion_Curso();
                                capacitacion_curso.id_curso            = curso.id_curso;
                                capacitacion_curso.id_capacitacion     = (int)id_capacitacion;
                                capacitacion_curso.fecha_creacion      = DateTime.Now;
                                capacitacion_curso.id_usuario_creacion = usuario.usuario.id_usuario;
                                capacitacion_curso.activo    = true;
                                capacitacion_curso.eliminado = false;
                                db.Capacitacion_Curso.Add(capacitacion_curso);
                                db.SaveChanges();
                            }
                            tran.Commit();
                        }
                        catch
                        {
                            tran.Rollback();
                            ModelState.AddModelError("", "Error. Los cambios no se han completado.");
                        }
                    }
                }
                else //Se esta modificando un curso asignado a una categoria
                {
                    using (DbContextTransaction tran = db.Database.BeginTransaction())
                    {
                        try
                        {
                            Capacitacion_Curso capacitacion_curso = db.Capacitacion_Curso.Find(id_edi_cap_cur);
                            Curso curso = db.Curso.Find(capacitacion_curso.id_curso);
                            curso.nombre                  = t_edi_nom_cur;
                            curso.fecha_modificacion      = DateTime.Now;
                            curso.id_usuario_modificacion = usuario.usuario.id_usuario;
                            db.Entry(curso).State         = EntityState.Modified;
                            db.SaveChanges();

                            if (id_capacitacion != null)
                            {
                                //Se elimi
                                capacitacion_curso.id_capacitacion         = (int)id_capacitacion;
                                capacitacion_curso.fecha_modificacion      = DateTime.Now;
                                capacitacion_curso.id_usuario_modificacion = usuario.usuario.id_usuario;
                                db.Entry(capacitacion_curso).State         = EntityState.Modified;
                                db.SaveChanges();
                            }
                            else //Si la capacitacion es nula quiere decir que el curso dejara de ser parte de la misma
                            {
                                //Se elimina el curso de la categoria
                                capacitacion_curso.fecha_eliminacion      = DateTime.Now;
                                capacitacion_curso.id_usuario_eliminacion = usuario.usuario.id_usuario;
                                capacitacion_curso.activo          = false;
                                capacitacion_curso.eliminado       = true;
                                db.Entry(capacitacion_curso).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                            tran.Commit();
                        }
                        catch
                        {
                            tran.Rollback();
                            ModelState.AddModelError("", "Error. Los cambios no se han completado.");
                        }
                    }
                }
            }
            return(RedirectToAction("Index", new { id = id_academia }));
        }