Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }