/// <summary>
 /// Altera dados na base de dados
 /// </summary>
 /// <param name="questao"></param>
 public void Editar(QuestaoModel questao)
 {
     tb_questao questaoE = new tb_questao();
     Atribuir(questao, questaoE);
     unitOfWork.RepositorioQuestao.Editar(questaoE);
     unitOfWork.Commit(shared);
 }
 /// <summary>
 /// Insere um novo na base de dados
 /// </summary>
 /// <param name="questao">Dados do modelo</param>
 /// <returns>Chave identificante na base</returns>
 public int Inserir(QuestaoModel questao)
 {
     tb_questao questaoE = new tb_questao();
     Atribuir(questao, questaoE);
     unitOfWork.RepositorioQuestao.Inserir(questaoE);
     unitOfWork.Commit(shared);
     return questaoE.id_Questao;
 }
        public ActionResult Create(QuestaoModel questao)
        {
            EntrevistadoModel entrevistado = new EntrevistadoModel();
            RespostaModel resposta = new RespostaModel();
            resposta = questao.respostas;
            resposta.id_Questao = questao.id_Questao;
            resposta.idtb_entrevistado = gEntrevistado.Inserir(entrevistado);
            gResposta.Inserir(resposta);

            return RedirectToAction("Index");
        }
        public ActionResult Create5(int id, QuestaoModel questao, List<HttpPostedFileBase> files)
        {
            questao.Tipo = "SUBJETIVA";
            questao.EhCodigo = true;
            int idquest = gQuestao.Inserir(questao);

            foreach (HttpPostedFileBase file in files)
            {
                if (file != null && file.ContentLength > 0)
                {
                    if (questao.Linguagem.Equals("CSharp") && file.FileName.EndsWith("cs") || questao.Linguagem.Equals("PHP") && file.FileName.EndsWith("php")
                    || questao.Linguagem.Equals("Java") && file.FileName.EndsWith("java"))
                    {
                        string result;
                        // extract only the fielname
                        var fileName = Path.GetFileName(file.FileName);
                        // store the file inside ~/App_Data/uploads folder
                        var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                        file.SaveAs(path);

                        ClasseModel classe = new ClasseModel();
                        result = new StreamReader(file.InputStream).ReadToEnd();
                        classe.id_Questao = idquest;
                        classe.Codigo = result;
                        gClasses.Inserir(classe);
                    }
                    else
                    {
                        return RedirectToAction("Erro/" + questao.id_Survey, "Questao");
                    }
                }

            }

            return RedirectToAction("ListaQuestoes/" + questao.id_Survey, "Questao");
        }
 /// <summary>
 /// Atribui dados do QuestaoModel para o questao Entity
 /// </summary>
 /// <param name="questao">Objeto do modelo</param>
 /// <param name="questaoE">Entity mapeada da base de dados</param>
 private void Atribuir(QuestaoModel questao, tb_questao questaoE)
 {
     questaoE.id_Questao = questao.id_Questao;
     questaoE.Escolha = questao.Escolha;
     questaoE.TB_SURVEY_id_Survey = questao.id_Survey;
     questaoE.Img = questao.Img;
     questaoE.Obrigatoria = questao.Obrigatoria;
     questaoE.Pergunta = questao.Pergunta;
     questaoE.Randomica = questao.Randomica;
     questaoE.Tipo = questao.Tipo;
     questaoE.Linguagem = questao.Linguagem;
     questaoE.EhCodigo = questao.EhCodigo;
     questaoE.TemOutro = questao.TemOutro;
 }
        public ActionResult Edit3(int id, QuestaoModel questaoModel, HttpPostedFileBase[] images)
        {
            gItens.RemoverPorQuestao(questaoModel.id_Questao);
            if (images[0] != null && images[0].ContentLength > 0)
            {
                // extract only the fielname
                var fileName = Path.GetFileName(images[0].FileName);
                // store the file inside ~/App_Data/uploads folder
                var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                images[0].SaveAs(path);
            }
            else { };

            if (questaoModel.Pergunta != null)
            {

                if (images[0] != null && images[0].ContentLength > 0)
                {
                    questaoModel.Img = new byte[images[0].ContentLength];
                    images[0].InputStream.Read(questaoModel.Img, 0, images[0].ContentLength);
                }
                else
                {
                    questaoModel.Img = gQuestao.Obter(questaoModel.id_Questao).Img;

                }

                foreach (Itens_da_QuestaoModel item in questaoModel.itens)
                {
                    if (item.Item != null)
                    {
                        item.id_Questao = questaoModel.id_Questao;
                        gItens.Inserir(item);
                    }
                }
                foreach (Itens_da_QuestaoModel item in questaoModel.itensAux)
                {
                    if(item.Item != null)
                    {
                        item.id_Questao = questaoModel.id_Questao;
                        gItens.Inserir(item);
                    }

                }
                gQuestao.Editar(questaoModel);
                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");
            }

            return View(questaoModel);
        }
        public ActionResult Edit5(int id, QuestaoModel questaoModel, List<HttpPostedFileBase> files)
        {
            //gClasses.RemoverPorIdQuestao(questaoModel.id_Questao);

            foreach (HttpPostedFileBase file in files)
            {

                    if (file != null && file.ContentLength > 0)
                    {
                      if (questaoModel.Linguagem.Equals("CSharp") && file.FileName.EndsWith("cs") || questaoModel.Linguagem.Equals("PHP") && file.FileName.EndsWith("php")
                        || questaoModel.Linguagem.Equals("Java") && file.FileName.EndsWith("java"))
                        {
                        // extract only the fielname
                        var fileName = Path.GetFileName(questaoModel.id_Questao + file.FileName);
                        // store the file inside ~/App_Data/uploads folder
                        var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                        file.SaveAs(path);
                        string result;
                        ClasseModel classe = new ClasseModel();
                        gClasses.RemoverPorIdQuestao(questaoModel.id_Questao);
                        result = new StreamReader(file.InputStream).ReadToEnd();
                        classe.id_Questao = questaoModel.id_Questao;
                        classe.Codigo = result;
                        gClasses.Inserir(classe);
                      }
                      else
                      {
                          return RedirectToAction("Erro/" + questaoModel.id_Survey, "Questao");

                      }
                }

            }
            if (questaoModel.Pergunta != null)
            {
                gQuestao.Editar(questaoModel);
                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");
            }
            return View(questaoModel);
        }
        public ActionResult Edit2(int id, QuestaoModel questaoModel)
        {
            gItens.RemoverPorQuestao(questaoModel.id_Questao);

            if (ModelState.IsValid)
            {

                foreach (Itens_da_QuestaoModel item in questaoModel.itens)
                {
                    if (item.Item != null)
                    {

                        item.id_Questao = questaoModel.id_Questao;
                        gItens.Inserir(item);
                    }
                }

                foreach (Itens_da_QuestaoModel item in questaoModel.itensAux)
                {
                    if (item.Item != null)
                    {
                        item.id_Questao = questaoModel.id_Questao;
                        gItens.Inserir(item);
                    }

                }

                gQuestao.Editar(questaoModel);
                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");

            }

            return View(questaoModel);
        }
        public ActionResult Delete(int id, QuestaoModel questaoModel)
        {
            questaoModel = gQuestao.Obter(id);
            if (ModelState.IsValid)
            {
                List<Itens_da_QuestaoModel> ListaItens = gItens.ObterItens(questaoModel.id_Questao).ToList();
                List<ClasseModel> ListaClasses = gClasses.ObterClasses(questaoModel.id_Questao).ToList();
                foreach (Itens_da_QuestaoModel itens in ListaItens)
                {
                    gItens.RemoverPorQuestao(itens.id_Questao);
                }
                foreach (ClasseModel itens in ListaClasses)
                {
                    gClasses.RemoverPorQuestao(itens.id_Questao);
                }
                gQuestao.Remover(id);
                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");
            }

            return View(questaoModel);
        }
        public ActionResult CriarQuestaoObj(int id, QuestaoModel questaoModel)
        {
            questaoModel.Tipo = "OBJETIVA";
            int idQuestao = gQuestao.Inserir(questaoModel);
            if (ModelState.IsValid)
            {
                foreach (Itens_da_QuestaoModel item in questaoModel.itens)
                {
                    if (item.Item != null)
                    {
                        item.id_Questao = idQuestao;
                        gItens.Inserir(item);
                    }

                }

                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");

            }

            return View(questaoModel);
        }
        public ActionResult CriarQuestaoImgObj(int id, QuestaoModel questaoModel, HttpPostedFileBase[] images)
        {
            questaoModel.Tipo = "OBJETIVA";

            if (images[0] != null && images[0].ContentLength > 0)
            {
                // extract only the fielname
                var fileName = Path.GetFileName(images[0].FileName);
                // store the file inside ~/App_Data/uploads folder
                var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
                images[0].SaveAs(path);
            }

            if (questaoModel.Pergunta != null)
            {

                questaoModel.Img = new byte[images[0].ContentLength];
                images[0].InputStream.Read(questaoModel.Img, 0, images[0].ContentLength);

                int idquest = gQuestao.Inserir(questaoModel);
                //gQuestao.Editar(questaoModel);

                foreach (Itens_da_QuestaoModel item in questaoModel.itens)
                {
                    if (item.Item != null)
                    {
                        item.id_Questao = idquest;
                        gItens.Inserir(item);
                    }

                }

                return RedirectToAction("ListaQuestoes/" + questaoModel.id_Survey, "Questao");
            }

            return View(questaoModel);
        }
        public ActionResult CriarQuestao(int id, QuestaoModel questao)
        {
            questao.Tipo = "SUBJETIVA";
            gQuestao.Inserir(questao);

            return RedirectToAction("ListaQuestoes/" + questao.id_Survey, "Questao");
        }