public async Task <IActionResult> Edit(int id, [Bind("Id,ProfesorId,MateriaId")] MateriaProfesor materiaProfesor)
        {
            if (id != materiaProfesor.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    //Actualiza la relación en la BD
                    _context.Update(materiaProfesor);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MateriaProfesorExists(materiaProfesor.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            //En caso de recibir una relación invalida, vuelve a la view Edit y disponibiliza el mensaje de error
            ViewBag.Erro = "display: inline; color:red;";
            return(View(materiaProfesor));
        }
        public async Task <IActionResult> Create([Bind("Id,ProfesorId,MateriaId")] MateriaProfesor materiaProfesor)
        {
            if (ModelState.IsValid)
            {
                //Inserto la nueva relación entre materia y profesor en la BD
                _context.Add(materiaProfesor);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            //Si la relación es invalida vuelve a la view Create con toda la información necesaria y disponibiliza el mensaje de error
            var profesores = (from p in _context.Profesor
                              select p).ToList();
            List <Profesor> profesSinMateria = new List <Profesor>();

            foreach (Profesor p in profesores)
            {
                MateriaProfesor profe = null;
                profe = _context.MateriaProfesor.Where(m => m.ProfesorId == p.Id)
                        .FirstOrDefault();
                if (profe == null)
                {
                    profesSinMateria.Add(p);
                }
            }
            var materias = (from m in _context.Materia
                            orderby m.Nombre ascending
                            select m).ToList();
            List <Materia> materiasSinProfe = new List <Materia>();

            foreach (Materia m in materias)
            {
                MateriaProfesor mate = null;
                mate = _context.MateriaProfesor.Where(x => x.MateriaId == m.Id)
                       .FirstOrDefault();
                if (mate == null)
                {
                    materiasSinProfe.Add(m);
                }
            }
            ViewBag.Profesores = profesSinMateria;
            ViewBag.Materias   = materiasSinProfe;
            ViewBag.Erro       = "display: inline; color:red;";
            return(View(materiaProfesor));
        }
        // GET: MateriaProfesors/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            //Trae la relación entre materia y profesor que se desea editar
            var materiaProfesor = await _context.MateriaProfesor.FindAsync(id);

            if (materiaProfesor == null)
            {
                return(NotFound());
            }
            //Trae al profesor de la relación
            var profesor = _context.Profesor.Where(x => x.Id == materiaProfesor.ProfesorId).FirstOrDefault();
            //Trae todas las materias
            var materias = (from m in _context.Materia
                            select m).ToList();
            //Filtra la lista de materias, dejando unicamente aquellas que no tengan relación con ningun profesor
            List <Materia> materiasSinProfe = new List <Materia>();

            foreach (Materia m in materias)
            {
                MateriaProfesor mate = null;
                mate = _context.MateriaProfesor.Where(x => x.MateriaId == m.Id)
                       .FirstOrDefault();
                if (mate == null)
                {
                    materiasSinProfe.Add(m);
                }
            }
            //Agrega la materia actual de la relación a la lista de materias
            var materiaActual = _context.Materia.Where(x => x.Id == materiaProfesor.MateriaId).FirstOrDefault();

            materiasSinProfe.Add(materiaActual);

            //Envia todo a la view Edit
            ViewBag.Profesor = profesor;
            ViewBag.Materias = materiasSinProfe;
            ViewBag.Erro     = "display: none;";
            return(View(materiaProfesor));
        }
        // GET: MateriaProfesors/Create
        public IActionResult Create()
        {
            //Agarra todos los profesores
            var profesores = (from p in _context.Profesor
                              select p).ToList();
            //Filtra la lista de profesores, dejando unicamente aquellos que no tengan relación con ninguna materia
            List <Profesor> profesSinMateria = new List <Profesor>();

            foreach (Profesor p in profesores)
            {
                MateriaProfesor profe = null;
                profe = _context.MateriaProfesor.Where(m => m.ProfesorId == p.Id)
                        .FirstOrDefault();
                if (profe == null)
                {
                    profesSinMateria.Add(p);
                }
            }
            //Agarra todas las materias
            var materias = (from m in _context.Materia
                            orderby m.Nombre ascending
                            select m).ToList();
            //Filtra la lista de materias, dejando unicamente aquellas que no tengan relación con ningun profesor
            List <Materia> materiasSinProfe = new List <Materia>();

            foreach (Materia m in materias)
            {
                MateriaProfesor mate = null;
                mate = _context.MateriaProfesor.Where(x => x.MateriaId == m.Id)
                       .FirstOrDefault();
                if (mate == null)
                {
                    materiasSinProfe.Add(m);
                }
            }
            //Envia todo a la view Create
            ViewBag.Profesores = profesSinMateria;
            ViewBag.Materias   = materiasSinProfe;
            ViewBag.Erro       = "display: none;";
            return(View());
        }