public ActionResult VincularCursosTrilha(int id) { var modelView = new VincularCursosTrilhaViewModel(); // Obtenho a Trilha using (var repo = new TrilhaRepository()) { modelView.Trilha = repo.Obter(id); } // Lista com todos os cursos using (var repo = new CursoRepository()) { var lista = repo.ListarCursosDetalhes(); // transforma os itens da lista nos itens para vincular com a tela: // Obs: Esse foreach é desnecessário. Poderia ser resolvido com 1 única linha de lambda, porém // usei o for para ser mais fácil de entender. foreach (var curso in lista) { var item = new SelectListItem { Text = curso.Nome, Value = curso.Id.ToString() }; modelView.CursosDisponiveis.Add(item); } } return(View(modelView)); }
public ActionResult VincularCursos(VincularCursosTrilhaViewModel model) { // Aqui eu salvo os cursos vinculados. // No model, vai receber os IDs dos itens selecionados, entao é só // passar isso pro método do repositório que faz a atualização. using (var repo = new TrilhaRepository()) { repo.AtualizarCursos(model.Trilha.Id, model.CursosSelecionados.ToArray()); } return(RedirectToAction("Index")); }
public ActionResult VincularCursos(int id) { // Essa view precisa dos dados da trilha para exibir o nome da trilha, // + uma lista com todos os cursos disponíveis e também uma outra lista // com os cursos que já estão selecionados. // Por isso criamos esse viewmodel para devolver isso tudo para a view; var model = new VincularCursosTrilhaViewModel(); // Obtenho a Trilha using (var repo = new TrilhaRepository()) { model.Trilha = repo.Obter(id); } // Monto a lista com os Itens selecionados: model.CursosSelecionados = model.Trilha.Cursos.Select(c => c.Id).ToList(); // Obs. A sintaxe acima se chama Lambda, e é usada para montar uma lista de IDs que é o que // o Helper precisa pra montar um ListBox de multipla seleção. // Poderia ser feito um FOREACH para obter essa lista. // Lista com todos os cursos using (var repo = new CursoRepository()) { var lista = repo.ListarCursosDetalhes(); // transforma os itens da lista nos itens para vincular com a tela: // Obs: Esse foreach é desnecessário. Poderia ser resolvido com 1 única linha de lambda, porém // usei o for para ser mais fácil de entender. foreach (var curso in lista) { var item = new SelectListItem { Text = curso.Nome, Value = curso.Id.ToString() }; model.CursosDisponiveis.Add(item); } } return(View(model)); }