public List<FormularioElemento> getComponenteElementos(int idComponente) { List<FormularioElemento> listaElementos = new List<FormularioElemento>(); FormularioElemento formElemento; using (SqlConnection cn = new SqlConnection(helper.ConnectionString)) { string sql = "select * from PC_Componente_Elementos_CEL INNER JOIN PC_Elementos_ELE ON CEL_ELE_ID = ELE_ID where CEL_CMP_ID = @CEL_CMP_ID"; SqlParameter[] param = { new SqlParameter("@CEL_CMP_ID", idComponente) }; cn.Open(); try { SqlDataReader reader = helper.ExecuteReader(CommandType.Text, sql, param); while (reader.Read()) { formElemento = new FormularioElemento(); formElemento.Id = Convert.ToInt32(reader["CEL_ID"]); formElemento.IdComponente = Convert.ToInt32(reader["CEL_CMP_ID"]); formElemento.IdTipoElemento = Convert.ToInt32(reader["ELE_TEL_ID"]); formElemento.Titulo = reader["ELE_TITULO"].ToString(); formElemento.Ordem = Convert.ToInt32(reader["CEL_ORDEM"]); formElemento.Css = reader["ELE_CSS"].ToString(); formElemento.Linha = Convert.ToInt32(reader["CEL_LINHA"]); formElemento.Observacao = reader["ELE_OBS"].ToString(); formElemento.IsPost = Convert.ToBoolean(reader["ELE_IS_POST"]); formElemento.IsObrigatorio = Convert.ToBoolean(reader["ELE_IS_OBRIGATORIO"]); listaElementos.Add(formElemento); } } catch (Exception ex) { throw ex; } finally { cn.Close(); } } return listaElementos; }
public void ValidacaoElementos( Data.DB _db, FormularioElemento elemento, ModelStateDictionary _modelState) { //eh tenso buscar no banco, mas elimina os engracadinhos mexendo nas propriedades no client //caso, reclamem de performance tempo, coloca no cliente, alimenta as view e manter as propriedades de validacao no get elemento.Validacoes = _db.getValidacoesElemento(elemento.Id); if (elemento.IdTipoElemento == 2) //textbox { //OBRIGATORIO, é propriedade do elemento if (elemento.IsObrigatorio && (elemento.Respostas.DsResposta == null || elemento.Respostas.DsResposta.Length == 0)) _modelState.AddModelError(elemento.NameClient + ".Respostas.DsResposta", elemento.Titulo + " é obrigatório."); //aqui embaixo é relacionamento, criando Registro na Validação, precisa implementar algo em algum tipo de elemento, neste está no textbox //mas se quiser criar para outros tipos de elementos, funcionará tranquilamente bool IsValido; foreach (var val in elemento.Validacoes) { IsValido = true; //validacoes switch (val.Codigo) { case "CPF": { break; } case "MINCHAR3": { if (elemento.Respostas.DsResposta != null && elemento.Respostas.DsResposta.Length < 3) IsValido = false; break; } case "MAXCHAR50": { if (elemento.Respostas.DsResposta != null && elemento.Respostas.DsResposta.Length > 50) IsValido = false; break; } default: break; } if (IsValido == false) _modelState.AddModelError(elemento.NameClient + ".Respostas.DsResposta", elemento.Titulo + " " + val.MensErro); } } if (elemento.IdTipoElemento == 5) //combo { //OBRIGATORIO, é propriedade do elemento if (elemento.IsObrigatorio) { int idValor = 0; bool converteu = int.TryParse(elemento.Respostas.DsValor, out idValor); if (idValor == 0) _modelState.AddModelError(elemento.NameClient + ".Respostas.DsValor", elemento.Titulo + " é obrigatório."); } } }