public void AtribuirLeiautePerguntasPadraoTest() { ModeloDeFormulario modelo = new ModeloDeFormulario(); modelo.Perguntas.Add(new PerguntaTexto()); modelo.Perguntas.Add(new PerguntaAnexo()); modelo.Perguntas.Add(new PerguntaNumero()); modelo.Perguntas.Add(new PerguntaData()); modelo.Perguntas.Add(new PerguntaEscolhaUnica()); modelo.Perguntas.Add(new PerguntaMultiplaEscolha()); modelo.Perguntas.Add(new PerguntaGradeDeOpcoes()); modelo.AtribuirLeiautePerguntasPadrao(); foreach (Pergunta item in modelo.Perguntas) { Assert.AreEqual(eColunas.T12, item.LeiautePerguntas.Single().LeiauteItem.First().Tamanho); Assert.AreEqual(eTamanhoTela.Mobile, item.LeiautePerguntas.Single().LeiauteItem.First().Responsivo); } }
private static void TestarModeloDeDominio() { var multipla = new PerguntaMultiplaEscolha { Obrigatorio = false, PerguntaCondicional = null, //TipoPergunta = Enumeradores.eMultiplaEscolha.Checkbox, TipoEntradaID = (byte)eTipoEntrada.MultiplaEscolha_CaixaDeSelecao, PerguntaID = ++Identity, Titulo = "Linguagem", Descricao = null, Opcoes = new List <Opcao> { new Opcao { OpcaoID = 1, Descricao = "C#" }, new Opcao { OpcaoID = 2, Descricao = "JAVA" }, new Opcao { OpcaoID = 3, Descricao = "JavaScript" }, new Opcao { OpcaoID = 4, Descricao = "Python" }, } }; var texto = new PerguntaTexto { PerguntaID = ++Identity, Titulo = "Nome", TipoEntradaID = (byte)eTipoEntrada.Texto_CaixaDeTexto, Descricao = null, PatternRegex = null, PerguntaCondicional = null, TamanhoMaximo = 50, TipoValidadorID = null }; var unica = new PerguntaEscolhaUnica { PerguntaID = ++Identity, Descricao = null, Titulo = "Sexo", PerguntaCondicional = null, Opcoes = new List <Opcao> { new Opcao { Descricao = "M", }, new Opcao { Descricao = "F", } }, //TipoPergunta = Enumeradores.eEscolhaUnica.Radio, TipoEntradaID = (byte)eTipoEntrada.EscolhaUnica_Radio }; var unicaCondicional = new PerguntaEscolhaUnica { PerguntaID = ++Identity, Titulo = "Nível de Conhecimento C#", Descricao = null, //TipoPergunta = Enumeradores.eEscolhaUnica.Star, TipoEntradaID = (byte)eTipoEntrada.EscolhaUnica_Star, PerguntaCondicional = new PerguntaCondicionalMultipla { PerguntaID = 1, OpcoesAtivacao = multipla.Opcoes.Where(c => c.OpcaoID == 1) .Select(c => new OpcaoAtivacao { OpcaoID = c.OpcaoID, Opcao = c, //PerguntaCondicionalID = pCondicional.PerguntaCondicionalID, //PerguntaCondicional = this }) .ToList(), Operacao = Enumeradores.eOperacaoCondicional.MultiplaOpcoes_Contem, Pergunta = multipla, }, Opcoes = new List <Opcao> { new Opcao { Descricao = "Básico" }, new Opcao { Descricao = "Médio" }, new Opcao { Descricao = "Avançado" }, } }; var pIdade = new PerguntaNumero { PerguntaID = ++Identity, CasasDecimais = 0, Descricao = null, Titulo = "Idade", Obrigatorio = true, PerguntaCondicional = null, Prefixo = null, Sufixo = null, TipoEntradaID = (byte)eTipoEntrada.Numero_CaixaDeTexto, TipoValidadorID = eTipoValidador.Numero_MaiorIgualZero }; var pCondicionalIdade = new PerguntaTexto { PerguntaID = ++Identity, Descricao = null, Titulo = "Teste Condicional", Obrigatorio = true, PatternRegex = null, TamanhoMaximo = 50, TipoEntradaID = (byte)eTipoEntrada.Texto_CaixaDeTexto, TipoValidadorID = null, PerguntaCondicional = new PerguntaCondicionalNumero { Operacao = eOperacaoCondicional.Numero_Igual, Pergunta = pIdade, PerguntaID = 2, ValorAtivacao = 20 } }; var opcoesGrade = new HashSet <Opcao> { new Opcao { Descricao = "Básico", OpcaoID = 1 }, new Opcao { Descricao = "Intermediário", OpcaoID = 2 }, new Opcao { Descricao = "Avançado", OpcaoID = 3 } }; var grade = new PerguntaGradeDeOpcoes { PerguntaID = ++Identity, Descricao = null, Obrigatorio = false, Titulo = "Avaliacao", PerguntaCondicional = null, Opcoes = opcoesGrade, Linhas = new HashSet <LinhaPerguntaGrade> { new LinhaPerguntaGrade { //PerguntaID = ++Identity, //Descricao = null, Titulo = "C#", //Obrigatorio = false, //Opcoes=opcoesGrade }, new LinhaPerguntaGrade { //Descricao = null, Titulo = "Java", //Obrigatorio = false, //Opcoes=opcoesGrade } } }; ModeloDeFormulario modelo = new ModeloDeFormulario { Perguntas = new List <Pergunta> { texto, unica, multipla, unicaCondicional, pIdade, pCondicionalIdade } }; modelo.CriarLeiautePerguntasPadrao(); RespostaModeloDeFormulario resposta = new RespostaModeloDeFormulario { ModeloDeFormulario = modelo, RespostaModeloFormularioID = 1, Respostas = new HashSet <Resposta> { new RespostaTexto { Pergunta = texto, RespostaID = 1, Valor = "Hernandes" }, new RespostaNumero { Pergunta = pIdade, RespostaID = 6, Valor = 20, }, new RespostaUnica { RespostaID = 2, Pergunta = unica, OpcaoEscolhida = unica.Opcoes.First() }, new RespostaMultipla { RespostaID = 3, Pergunta = multipla, OpcoesEscolhida = multipla.Opcoes.Skip(1).Take(2).Select(c => new OpcaoRespondida { OpcaoID = c.OpcaoID }).ToList(), }, //new RespostaUnica //{ // RespostaID=3, // Pergunta = unicaCondicional, // OpcaoEscolhida = unicaCondicional.Opcoes.First(), // OpcaoEscolhidaID=unicaCondicional.Opcoes.First().OpcaoID, //}, new RespostaTexto { Pergunta = pCondicionalIdade, Valor = "A", } } }; resposta.Validar(); }
public ModeloDeFormulario GravarModeloFormulario(ModeloFormularioDTO modeloDTO, string UsuarioID) { var modelo = BuscarModeloDeFormulario().SingleOrDefault(c => c.ModeloFormularioID == modeloDTO.ModeloFormularioID); if (modelo == null) { modelo = new ModeloDeFormulario(); } modelo.Descricao = modeloDTO.Descricao; modelo.Html = modeloDTO.Html; modelo.ControleAtualizacao = ControleUsuario.Criar(UsuarioID); modeloDTO.Perguntas.AtribuirUsuarioID(UsuarioID); //Perguntas atualizadas foreach (var pergunta in modelo.Perguntas.ToList()) { pergunta.ModeloDeFormulario = modelo; //tracking changes var perguntaDTO = modeloDTO.Perguntas.SingleOrDefault(d => d.PerguntaID == pergunta.PerguntaID); if (perguntaDTO.Deleted) { var perguntasCondicionais = modelo.Perguntas.Where(c => c.PerguntaCondicionalID == perguntaDTO.PerguntaID).ToList(); foreach (var pCondicional in perguntasCondicionais) { //remove o vínculo, operações e valor de ativação pCondicional.RemoverCondicional(); } foreach (var leiautePergunta in pergunta.LeiautePerguntas.ToList()) { //remove o leiaute vinculado à pergunta ExcluirLeiautePergunta(leiautePergunta.LeiautePerguntaID); } //Remove a pergunta do modelo (Caso não tenha nenhuma resposta) ExcluirPergunta(perguntaDTO.PerguntaID); } else { //Atualização pergunta.AtribuirPergunta(perguntaDTO); //Pergunta condicinoal removida if (pergunta.PerguntaCondicionalID.HasValue && perguntaDTO.PerguntaCondicionalID.HasValue == false) { pergunta.RemoverCondicional(); ExcluirPerguntaCondicional(pergunta.PerguntaCondicionalID.Value); } else if (perguntaDTO.PerguntaCondicionalID.HasValue) { var condicional = GravarPerguntaCondicional(perguntaDTO.PerguntaCondicional, pergunta, UsuarioID); } foreach (var leiautePergunta in pergunta.LeiautePerguntas.ToList()) { //grava o leiaute vinculado à pergunta GravarLeiautePergunta(leiautePergunta, UsuarioID); } } } //Perguntas novas foreach (var perguntaDTO in modeloDTO.Perguntas.Where(c => c.PerguntaID <= 0 || modelo.Perguntas.Any(d => d.PerguntaID == c.PerguntaID))) { var pergunta = GravarPergunta(perguntaDTO, UsuarioID); pergunta.ModeloDeFormulario = modelo; modelo.Perguntas.Add(pergunta); if (perguntaDTO.PerguntaCondicional != null) { var perguntaOrigem = modelo.Perguntas.Single(c => c.PerguntaID == perguntaDTO.PerguntaCondicional.PerguntaID); var pCondicional = GravarPerguntaCondicional(perguntaDTO.PerguntaCondicional, perguntaOrigem, UsuarioID); pergunta.PerguntaCondicional = pCondicional; } foreach (var leiautePerguntaDTO in perguntaDTO.LeiautePergunta.ToList()) { var leiautePergunta = CriarLeiautePergunta(leiautePerguntaDTO); //grava o leiaute vinculado à pergunta GravarLeiautePergunta(leiautePergunta, UsuarioID); } if (perguntaDTO.LeiautePergunta.Any() == false) { GravarLeiautePergunta(LeiautePergunta.LeiautePadrao(pergunta), UsuarioID); } } return(modelo); }
public static void CreateData(IFormularioService svc, IDatabaseFactory factory, IUnitOfWOrkGeneric <IDatabaseFactory> unit) { var ctx = factory.Get(); //long Identity = 0; var repoPergunta = ctx.GetRepository <Pergunta>(); var repoPerguntaCondicional = ctx.GetRepository <PerguntaCondicional>(); var repoOpcao = ctx.GetRepository <Opcao>(); var repoModeloDeFormulario = ctx.GetRepository <ModeloDeFormulario>(); var repoRespostaModeloDeFormulario = ctx.GetRepository <RespostaModeloDeFormulario>(); var repoOpcaoAtivacao = ctx.GetRepository <OpcaoAtivacao>(); var repoLinhaPerguntaGrade = ctx.GetRepository <LinhaPerguntaGrade>(); var repoResposta = ctx.GetRepository <Resposta>(); var repoLeiautePergunta = ctx.GetRepository <LeiautePergunta>(); var repoLeiautePerguntaItem = ctx.GetRepository <LeiautePerguntaItem>(); var pMultipla = new PerguntaMultiplaEscolha { Obrigatorio = false, PerguntaCondicional = null, //TipoPergunta = Enumeradores.eMultiplaEscolha.Checkbox, TipoEntradaID = (byte)eTipoEntrada.MultiplaEscolha_CaixaDeSelecao, PerguntaID = 1, Titulo = "Linguagem", Descricao = "Ling", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), Opcoes = new List <Opcao> { new Opcao { OpcaoID = 1, Descricao = "C#", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 2, Descricao = "JAVA", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 3, Descricao = "JavaScript", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 4, Descricao = "Python", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, } }; pMultipla.Opcoes.ToList().ForEach(c => repoOpcao.Insert(c)); repoPergunta.Insert(pMultipla); var pTexto = new PerguntaTexto { PerguntaID = 2, Titulo = "Nome", TipoEntradaID = (byte)eTipoEntrada.Texto_CaixaDeTexto, Descricao = "Desc", PatternRegex = null, PerguntaCondicional = null, TamanhoMaximo = 50, TipoValidadorID = null, Obrigatorio = true, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }; repoPergunta.Insert(pTexto); var pUnica = new PerguntaEscolhaUnica { PerguntaID = 3, Descricao = "Desc Sexo", Titulo = "Sexo", PerguntaCondicional = null, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), Opcoes = new List <Opcao> { new Opcao { OpcaoID = 5, Descricao = "M", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 6, Descricao = "F", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), } }, //TipoPergunta = Enumeradores.eEscolhaUnica.Radio, TipoEntradaID = (byte)eTipoEntrada.EscolhaUnica_Radio }; pUnica.Opcoes.ToList().ForEach(c => repoOpcao.Insert(c)); repoPergunta.Insert(pUnica); var pUnicaCondicional = new PerguntaEscolhaUnica { PerguntaID = 4, Titulo = "Nível de Conhecimento C#", Descricao = "Nível", //TipoPergunta = Enumeradores.eEscolhaUnica.Star, TipoEntradaID = (byte)eTipoEntrada.EscolhaUnica_Star, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), PerguntaCondicional = new PerguntaCondicionalMultipla { PerguntaID = 1, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), OpcoesAtivacao = pMultipla.Opcoes.Where(c => c.OpcaoID == 1) .Select(c => new OpcaoAtivacao { OpcaoID = c.OpcaoID, Opcao = c, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), //PerguntaCondicionalID = pCondicional.PerguntaCondicionalID, //PerguntaCondicional = this }) .ToList(), Operacao = eOperacaoCondicional.MultiplaOpcoes_Contem, Pergunta = pMultipla, }, Opcoes = new List <Opcao> { new Opcao { OpcaoID = 11, Descricao = "Básico", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 12, Descricao = "Médio", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { OpcaoID = 13, Descricao = "Avançado", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, } }; (pUnicaCondicional.PerguntaCondicional as PerguntaCondicionalMultipla).OpcoesAtivacao.ToList().ForEach(c => repoOpcaoAtivacao.Insert(c)); repoPerguntaCondicional.Insert(pUnicaCondicional.PerguntaCondicional); pUnicaCondicional.Opcoes.ToList().ForEach(c => repoOpcao.Insert(c)); repoPergunta.Insert(pUnicaCondicional); var pIdade = new PerguntaNumero { PerguntaID = 5, CasasDecimais = 0, Descricao = "I", Titulo = "Idade", Obrigatorio = true, PerguntaCondicional = null, Prefixo = "P", Sufixo = "S", TipoEntradaID = (byte)eTipoEntrada.Numero_CaixaDeTexto, TipoValidadorID = eTipoValidador.Numero_MaiorIgualZero }; repoPergunta.Insert(pIdade); var pCondicionalIdade = new PerguntaTexto { PerguntaID = 6, Descricao = "Cond", Titulo = "Teste Condicional", Obrigatorio = true, PatternRegex = null, TamanhoMaximo = 50, TipoEntradaID = (byte)eTipoEntrada.Texto_CaixaDeTexto, TipoValidadorID = null, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), PerguntaCondicional = new PerguntaCondicionalNumero { PerguntaCondicionalID = 10, Operacao = eOperacaoCondicional.Numero_Igual, Pergunta = pIdade, PerguntaID = pIdade.PerguntaID, ValorAtivacao = 20, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, PerguntaCondicionalID = 10, }; repoPerguntaCondicional.Insert(pCondicionalIdade.PerguntaCondicional); repoPergunta.Insert(pCondicionalIdade); var opcoesGrade = new HashSet <Opcao> { new Opcao { Descricao = "Básico", OpcaoID = 21, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { Descricao = "Intermediário", OpcaoID = 22, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new Opcao { Descricao = "Avançado", OpcaoID = 23, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), } }; opcoesGrade.ToList().ForEach(c => repoOpcao.Insert(c)); var pGrade = new PerguntaGradeDeOpcoes { PerguntaID = 7, Descricao = "AV", Obrigatorio = false, Titulo = "Avaliacao", PerguntaCondicional = null, Opcoes = opcoesGrade, TipoEntradaID = (byte)eTipoEntrada.Grade_Estrela, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), TipoEntrada = new TipoEntrada { Descricao = "Estrela", TipoEntradaID = (byte)eTipoEntrada.Grade_Estrela, TipoPerguntaID = (byte)eTipoPergunta.Grade }, Linhas = new HashSet <LinhaPerguntaGrade> { new LinhaPerguntaGrade { LinhaPerguntaGradeID = 1, //PerguntaID = ++Identity, //Descricao = null, Titulo = "C#", //Obrigatorio = false, //Opcoes=opcoesGrade }, new LinhaPerguntaGrade { LinhaPerguntaGradeID = 2, //Descricao = null, Titulo = "Java", //Obrigatorio = false, //Opcoes=opcoesGrade } } }; pGrade.Linhas.ToList().ForEach(c => repoLinhaPerguntaGrade.Insert(c)); repoPergunta.Insert(pGrade); ModeloDeFormulario modelo = new ModeloDeFormulario { ModeloFormularioID = 1, Descricao = "Modelo", Html = "<b>Modelo</b>", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), Perguntas = new List <Pergunta> { pTexto, pUnica, pMultipla, pUnicaCondicional, pIdade, pCondicionalIdade, pGrade } }; repoModeloDeFormulario.Insert(modelo); modelo.AtribuirLeiautePerguntasPadrao(); modelo.Perguntas.SelectMany(c => c.LeiautePerguntas).ToList().ForEach(c => { repoLeiautePergunta.Insert(c); c.LeiauteItem.ToList().ForEach(d => { repoLeiautePerguntaItem.Insert(d); }); }); RespostaModeloDeFormulario respostaModelo = new RespostaModeloDeFormulario { ModeloDeFormulario = modelo, ModeloDeFormularioID = 1, RespostaModeloFormularioID = 1, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), Respostas = new HashSet <Resposta> { new RespostaTexto { Pergunta = pTexto, PerguntaID = pTexto.PerguntaID, RespostaID = 1, Valor = "Hernandes", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new RespostaNumero { Pergunta = pIdade, PerguntaID = pIdade.PerguntaID, RespostaID = 6, Valor = 20, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new RespostaUnica { RespostaID = 2, Pergunta = pUnica, PerguntaID = pUnica.PerguntaID, OpcaoEscolhida = pUnica.Opcoes.First(), ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new RespostaMultipla { RespostaID = 3, Pergunta = pMultipla, PerguntaID = pMultipla.PerguntaID, OpcoesEscolhida = pMultipla.Opcoes.Skip(1).Take(2).Select(c => new OpcaoRespondida { OpcaoID = c.OpcaoID }).ToList(), ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, //new RespostaUnica //{ // RespostaID=3, // Pergunta = pUnicaCondicional, // PerguntaID=pUnicaCondicional.PerguntaID, // //OpcaoEscolhida = pUnicaCondicional.Opcoes.First(), // // OpcaoEscolhidaID=pUnicaCondicional.Opcoes.First().OpcaoID, //}, new RespostaTexto { Pergunta = pCondicionalIdade, PerguntaID = pCondicionalIdade.PerguntaID, Valor = "A", ControleAtualizacao = ControleUsuario.Criar("ADMIN"), }, new RespostaGrade { RespostaID = 7, Pergunta = pGrade, PerguntaID = pGrade.PerguntaID, ControleAtualizacao = ControleUsuario.Criar("ADMIN"), Respostas = new List <RespostaLinhaPerguntaGrade> { new RespostaLinhaPerguntaGrade { RespostaGradeID = 1, LinhaPerguntaGradeID = 1, OpcaoRespondidaID = 21 }, new RespostaLinhaPerguntaGrade { RespostaGradeID = 1, LinhaPerguntaGradeID = 2, OpcaoRespondidaID = 22 } } } } }; respostaModelo.Validar(); respostaModelo.Respostas.ToList().ForEach(c => repoResposta.Insert(c)); repoRespostaModeloDeFormulario.Insert(respostaModelo); unit.Commit("ADMIN"); }