public ActionResult agregarEquipo(int id)
 {
     var Campeonato = db.campeonato.FirstOrDefault(cam => cam.idCampeonato.Equals(id));
     if (Campeonato.division.equipo.Count <= 0) {
         ErrorModel error = new ErrorModel{
             mensaje="La division a la que pertenece el campeonato no tiene equipos"
         };
         return View("Error", error);
     }
     var viewModel = new CampeonatoDivisionViewModel
     {
         Campeonato = Campeonato
     };
     List<equipo> listaReal = viewModel.Campeonato.division.equipo.Where<equipo>(e=>e.campeonato.Contains(viewModel.Campeonato) == false && e.estado == true).ToList();
     for (int i = 0; i < viewModel.Campeonato.division.equipo.Count;)
     {
         var list = viewModel.Campeonato.division.equipo.ToList();
         var e = list[i];
         viewModel.Campeonato.division.equipo.Remove(e);
     }
     foreach (var e in listaReal) {
        viewModel.Campeonato.division.equipo.Add(e);
     }
     return View(viewModel);
 }
 public ActionResult agregarEquipo(int id, CampeonatoDivisionViewModel viewModel)
 {
     var campeonato = db.campeonato.FirstOrDefault(cam => cam.idCampeonato.Equals(id));
     var equipo = db.equipo.FirstOrDefault(e => e.idEquipo.Equals(viewModel.EquipoEspecifico.idEquipo));
     campeonato.equipo.Add(equipo);
     equipo.campeonato.Add(campeonato);
     db.SaveChanges();
     var tabla = db.tabla_posiciones.FirstOrDefault(t => t.idCampeonato.Equals(campeonato.idCampeonato));
     var tablaEquipo = new tabla_equipo();
     tablaEquipo.equipo = campeonato.equipo.First(e => e.idEquipo.Equals(equipo.idEquipo));
     tablaEquipo.tabla_posiciones = tabla;
     tablaEquipo.puntos = 0;
     db.SaveChanges();
     return RedirectToAction("Index");
 }
 //
 // GET: /Campeonato/Create
 public ActionResult Create(campeonato Campeonato)
 {
     if (Session["userID"] == null)
     {
         ErrorModel error = new ErrorModel
         {
             mensaje = "Debes iniciar sesion para acceder a esta pagina"
         };
         return View("ErrorSesion", error);
     }
     else
     {
         bool autorizado = false;
         int idUser = (int)Session["userID"];
         var usuario = db.usuario.FirstOrDefault(u => u.idUsuario.Equals(idUser));
         foreach (var m in usuario.rol.modulo.Where<modulo>(mod => mod.idModulo.Equals(2)))
         {
             if (m.idModulo == 2 && usuario.rol.estado == true)
             {
                 autorizado = true;
             }
         }
         if (!autorizado)
         {
             ErrorModel error = new ErrorModel
             {
                 mensaje = "No tienes permisos para acceder a esta página"
             };
             return View("Error", error);
         }
     }
     var viewModel = new CampeonatoDivisionViewModel
     {
         Divisiones = db.division.Where<division>(d => d.estado == true).ToList(),
         Campeonato = Campeonato
     };
     if (viewModel.Divisiones.Count <= 0)
     {
         ErrorModel error = new ErrorModel();
         error.mensaje = "No existen divisiones, debe crear la division antes de crear el campeonato";
         return View("Error", error);
     }
     return View(viewModel);
 }
        public ActionResult eliminarEquipo(int id, CampeonatoDivisionViewModel viewModel)
        {
            var campeonato = db.campeonato.FirstOrDefault(cam => cam.idCampeonato.Equals(id));
            var equipo = db.equipo.First(e=>e.idEquipo.Equals(viewModel.EquipoEspecifico.idEquipo));
            campeonato.equipo.Remove(equipo);
            equipo.campeonato.Remove(campeonato);

            //db.SaveChanges();
            var tabla = db.tabla_posiciones.First(t => t.idCampeonato.Equals(campeonato.idCampeonato));
            var tablaEquipo = tabla.tabla_equipo.First(te => te.idEquipo.Equals(equipo.idEquipo) && te.idTabla.Equals(tabla.idTabla));
            tabla.tabla_equipo.Remove(tablaEquipo);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        public ActionResult eliminarEquipo(int id)
        {
            var Campeonato = db.campeonato.FirstOrDefault(cam => cam.idCampeonato.Equals(id));

            var viewModel = new CampeonatoDivisionViewModel
            {
                Campeonato = Campeonato
            };

            return View(viewModel);
        }
        public ActionResult Edit(int id, campeonato Campeonato, CampeonatoDivisionViewModel viewModel)
        {
            try
            {
                if (db.division.First(d => d.idDivisiones.Equals(Campeonato.idDivision)).estado != false)
                {
                    var campeonato = db.campeonato.FirstOrDefault(r => r.idCampeonato.Equals(id) && r.estado == true);
                    if (campeonato != null)
                    {
                        viewModel = new CampeonatoDivisionViewModel
                        {
                            Campeonato = campeonato,
                            Divisiones = db.division.Where<division>(d => d.estado == true).ToList()
                        };

                        viewModel.Campeonato.nombre = Campeonato.nombre;
                        viewModel.Campeonato.descripcion = Campeonato.descripcion;
                        viewModel.Campeonato.idDivision = Campeonato.idDivision;
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }
                    else
                    {
                        ErrorModel error = new ErrorModel
                        {
                            mensaje = "Otro usuario elimino el campeonato durante la operacion"
                        };
                        return View("Error", error);
                    }
                }
                else
                {
                    ErrorModel error = new ErrorModel
                    {
                        mensaje = "Otro usuario elimino la division durante la operacion"
                    };
                    return View("Error", error);
                }
            }
            catch (Exception e)
            {
                ErrorModel error = new ErrorModel
                {
                    mensaje = e.InnerException.ToString()
                };

                return View("Error", error);
            }
        }
        public ActionResult Create(campeonato Campeonato, CampeonatoDivisionViewModel viewModel)
        {
            try
            {
                if (db.division.First(d => d.idDivisiones.Equals(Campeonato.idDivision)).estado != false)
                {

                    Campeonato.division = db.division.First(d => d.idDivisiones.Equals(Campeonato.idDivision));
                    viewModel.Campeonato = Campeonato;
                    viewModel.Campeonato.estado = true;
                    foreach (var e in viewModel.Campeonato.division.equipo) {
                        viewModel.Campeonato.equipo.Add(e);
                        e.campeonato.Add(viewModel.Campeonato);
                    }
                    db.campeonato.AddObject(viewModel.Campeonato);
                    var tabla = new tabla_posiciones();
                    tabla.estado = true;
                    tabla.idCampeonato = viewModel.Campeonato.idCampeonato;
                    tabla.campeonato = viewModel.Campeonato;
                    db.tabla_posiciones.AddObject(tabla);
                    foreach (var e in viewModel.Campeonato.equipo) {
                        var tE = new tabla_equipo();
                        tE.idTabla = tabla.idTabla;
                        tE.tabla_posiciones = tabla;
                        tE.idEquipo = e.idEquipo;
                        tE.equipo = e;
                        tE.puntos = 0;
                        db.tabla_equipo.AddObject(tE);
                    }
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                else
                {
                    ErrorModel error = new ErrorModel();
                    error.mensaje = "Otro usuario elimino la division durante la operacion";
                    return View("Error", error);
                }
            }
            catch (Exception e)
            {
                ErrorModel error = new ErrorModel {
                    mensaje = e.InnerException.ToString()
                };
                return View("Error",error);
            }
        }