public ActionResult Cadastrar(DisciplinaViewModel viewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //Inclui a disciplina
                    var modelCad = Mapper.Map<DisciplinaViewModel, Disciplina>(viewModel);
                    modelCad.ListaCodigoSia.Clear();
                    modelCad.ListaCurso.Clear();

                    _disciplinaApp.Incluir(modelCad);
                    //Atribui ID ao ViewModel
                    viewModel.Id = modelCad.Id;

                    viewModel = EditarCamposDaDisciplina(viewModel);

                    var modelEdit = Mapper.Map<DisciplinaViewModel, Disciplina>(viewModel);
                    _disciplinaApp.Editar(modelEdit);

                    Success("Cadastro efetuado com sucesso.");

                    return RedirectToAction("Editar", "Disciplina", new {@id = modelEdit.Id});
                }

                return RedirectToAction("Cadastrar", "Disciplina");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult Cadastrar()
        {
            var viewModel = new DisciplinaViewModel();

            return View(viewModel);
        }
        public ActionResult _ListaCursos(DisciplinaViewModel disciplinaViewModel)
        {
            try
            {
                var todosOsCursos = _cursoApp.ObterTodosAtivos();
                foreach (var curso in todosOsCursos)
                {
                    var selectCursoViewModel = new SelectCursoViewModel(curso);

                    //verifica se o curso não está vinculado
                    if (disciplinaViewModel.ListaCurso.Find(c => c.Id == selectCursoViewModel.Id) == null)
                    {
                        disciplinaViewModel.AdicionarCurso(selectCursoViewModel);
                    }
                }

                if (disciplinaViewModel.Id > 0)
                {
                    var model = _disciplinaApp.ObterPorId(disciplinaViewModel.Id);
                    var disciplina = Mapper.Map<Disciplina, DisciplinaViewModel>(model);

                    if (disciplina.ListaCurso.Any())
                    {
                        foreach (var curso in disciplina.ListaCurso)
                        {
                            var cursoAux = _cursoApp.ObterPorId(curso.Id);

                            var disciplinaCursoVinculado =
                                disciplinaViewModel.ListaCurso.Find(c => c.Nome == cursoAux.Nome);
                            disciplinaCursoVinculado.Selected = true;
                        }
                    }
                }

                return View(disciplinaViewModel);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private DisciplinaViewModel EditarCamposDaDisciplina(DisciplinaViewModel viewModel)
        {
            //Códigos SIA
            if (viewModel.CodigoSia != null)
            {
                char[] delimitador = {','};
                foreach (var codigoSia in viewModel.CodigoSia.Split(delimitador))
                {
                    var modelCodigoSia = _codigoSiaApp.ObterOuIncluir(codigoSia);
                    viewModel.ListaCodigoSia.Add(modelCodigoSia);
                }
            }
            //Cursos
            for (var i = 0; i <= viewModel.ListaCurso.Count - 1; i++)
            {
                if (!viewModel.ListaCurso[i].Selected)
                {
                    viewModel.ListaCurso.Remove(viewModel.ListaCurso[i]);
                    i--; //importante, pois quando remova o Count altera
                }
            }

            return viewModel;
        }
        public ActionResult Editar(DisciplinaViewModel viewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (_disciplinaApp.ObterPorId(viewModel.Id) != null)
                    {
                        viewModel = EditarCamposDaDisciplina(viewModel);

                        var model = Mapper.Map<DisciplinaViewModel, Disciplina>(viewModel);

                        _disciplinaApp.Editar(model);
                        Information("Atualização efetuada com sucesso");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return RedirectToAction("Editar", "Disciplina", new {@id = viewModel.Id});
        }