public ActionResult Create(Pergunta pergunta, FormCollection form) { if (ModelState.IsValid) { //pergunta.TipoResposta.Add(ViewBag.TipoResposta); db.Perguntas.Add(pergunta); //Cria uma lista do que foi passado no dorpdown var listaTipoRespostaRequest = form["TipoResposta"].Split(',').ToList(); //Lista dos Tipo de resposta que existem no banco var listaTipoRespostaBd = db.TipoRespostas.ToList(); //Para cada tipo de resposta enviada na pergunta, inseri na tabela perguntaTipoResposta foreach (var item in listaTipoRespostaRequest) { //PEga objeto no db.TipoResposta que seja igual a item var descTipoResposta = listaTipoRespostaBd.FirstOrDefault(f => f.DescricaoTipoResposta == item); PerguntaTipoResposta perguntaTipoResposta = new PerguntaTipoResposta(); perguntaTipoResposta.IdPergunta = pergunta.IdPergunta; perguntaTipoResposta.IdtipoResposta = descTipoResposta.IdTipoResposta; //Adiciona no banco db.PerguntaTipoRespostas.Add(perguntaTipoResposta); } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(pergunta)); }
public ActionResult Edit([Bind(Include = "IdPergunta,DescricaoPergunta,PerguntaStatus")] Pergunta pergunta, FormCollection form, int?id) { if (ModelState.IsValid) { db.Entry(pergunta).State = EntityState.Modified; //Lista dos Tipo de resposta que existem no banco var listaTipoRespostaBd = db.TipoRespostas.ToList(); //Cria uma lista do que foi passado no dorpdown var listaTipoRespostaRequest = form["TipoResposta"].Split(',').ToList(); //Cria lista de descricaoTipoResposta que aquela pergunta possui cadastrada List <String> listaTipoRespostaAtPergunta = db.PerguntaTipoRespostas .Join(db.TipoRespostas, j => j.IdtipoResposta, k => k.IdTipoResposta, (j, k) => new { j, k }).Where(x => x.j.IdPergunta == id) .Join(db.Perguntas, a => a.j.IdPergunta, b => b.IdPergunta, (a, b) => new { a, b }).Select(hj => hj.a.k.DescricaoTipoResposta).ToList(); foreach (var item in listaTipoRespostaRequest) { if (!listaTipoRespostaAtPergunta.Contains(item)) //Verifica se ja existe aquele tipoResposta naquela perguntaTipoResposta { //PEga objeto no db.TipoResposta que seja igual a item var descTipoResposta = listaTipoRespostaBd.FirstOrDefault(f => f.DescricaoTipoResposta == item); PerguntaTipoResposta perguntaTipoResposta = new PerguntaTipoResposta(); perguntaTipoResposta.IdPergunta = pergunta.IdPergunta; perguntaTipoResposta.IdtipoResposta = descTipoResposta.IdTipoResposta; db.PerguntaTipoRespostas.Add(perguntaTipoResposta); } } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(pergunta)); }