Exemplo n.º 1
0
        private void btnSalva_Click(object sender, EventArgs e)
        {
            if (txtpalavra.Text == String.Empty)
            {
                InformaDiag.Erro("Palavra não pode ser vazio!");
                return;
            }
            if (ComboClasseGram.SelectedItem == null)
            {
                InformaDiag.Erro("Selecione um valor válido de Classe gramatical!");
                return;
            }
            if (ComboGenero.SelectedItem == null)
            {
                InformaDiag.Erro("Selecione um gênero válido!");
                return;
            }
            if (ComboIdioma.SelectedItem == null)
            {
                InformaDiag.Erro("É obrigatório selecionar um idioma!");
                return;
            }
            string lng;

            p.lema = txtpalavra.Text;

            switch (ComboIdioma.SelectedIndex)
            {
            case 0:
                lng = "PT";
                break;

            case 2:
                lng = "EN";
                break;

            case 1:
                lng = "ES";
                break;

            default:
                lng = "";
                break;
            }
            p.idioma          = lng;
            p.notas_gramatica = txtGramatica.Text;
            p.nota_cultura    = textCultura.Text;
            p.Definicao       = txtDefinicao.Text;
            switch (ComboGenero.SelectedIndex)
            {
            case 0:
                p.Genero = "M";
                break;

            case 1:
                p.Genero = "F";
                break;

            case 2:
                p.Genero = "N";
                break;

            default:
                p.Genero = "S";
                break;
            }
            p.ClasseGram = ComboClasseGram.Text;
            if (p.id <= 0)
            {
                if (crud.InsereLinha(tabelasBd.PALAVRA, Palavra.ToListTabela(), p.ToListValores()) > 0)
                {
                    InformaDiag.Informa("Salvo!");
                    LimpaCampos();
                    LimpaModel();
                }
                else
                {
                    ///CASO HOUVER UMA DUPLICATA, ENTÃO O REGISTRO EXISTENTE NO BANCO DEVE SER CARREGADO NO LUGAR DAS INFORMAÇÕES QUE O USUÁRIO PREENCHEU
                    InformaDiag.Erro("Não foi possível salvar.\nO item caracterizado já existe.");
                    if (InformaDiag.ConfirmaSN("Deseja carregar o registro existente?") == DialogResult.Yes)
                    {
                        p = Palavra.ConverteObject(crud.SelecionarTabela(tabelasBd.PALAVRA, Palavra.ToListTabela(true), "lema='" + p.lema + "' AND ClasseGram='" + p.ClasseGram + "' AND idioma='" + p.idioma + "' AND Genero='" + p.Genero + "'")).First();
                        MostraDados();
                    }
                }
            }
            else
            {
                crud.UpdateLine(tabelasBd.PALAVRA, Palavra.ToListTabela(), p.ToListValores(), "id=" + p.id.ToString());
                InformaDiag.Informa("Salvo!");
                LimpaCampos();
            }
            //Uma excessão pode ser lançda aqui quando os valores das chaves estrangerias forem <1, pois estão refernciando um valor que não existe. Como o int no c# não cabe um NULL, seria melhor não enviar o tal valor que evitamos o problema
        }
Exemplo n.º 2
0
        private List <string> SanitizaValores(string tabela, List <string> valores)
        { //função para trocar possíveis valores em string por suas respectivas FK
            string saida;

            for (int i = 0; i < valores.Count; i++)
            {
                if (SanitizaString(valores.ElementAt(i), out saida))
                {
                    valores.RemoveAt(i);
                    valores.Insert(i, saida);
                }
            }
            if (tabela == tabelasBd.CONJUGACAO)
            {
                List <string> FKs = new List <string>();
                int           idx, c = 0;
                bool[]        fila = { false, false };
                ///TODO: Ah, enumeradores...
                /////faço issoi para evitar que seja lançada uma exceção e os valores perdidos no cast logo abaixo
                //rubrica
                idx = Palavra.ToListTabela().FindIndex(bs => bs == "Rubrica");
                if (!int.TryParse(valores.ElementAt(idx), out int conv) && (valores.ElementAt(idx) != ""))
                {
                    FKs.Add(valores.ElementAt(idx));
                    valores.RemoveAt(idx);
                    valores.Insert(idx, "0");
                    fila[c] = true;
                }
                c++;
                //referencia
                idx = Palavra.ToListTabela().FindIndex(bs => bs == "referencia_verbete");
                if (!int.TryParse(valores.ElementAt(idx), out conv) && (valores.ElementAt(idx) != ""))
                {
                    FKs.Add(valores.ElementAt(idx));
                    valores.RemoveAt(idx);
                    valores.Insert(idx, "0");
                    fila[c++] = true;
                }
                c++;

                Palavra teste = new Palavra();
                try
                {
                    teste = (Palavra)valores;
                }
                catch (InvalidCastException)
                {
                    LoggerErros(EnumErros.Erro_dados);
                    return(null);
                }
                catch (FormatException)
                {
                    LoggerErros(EnumErros.Erro_dados);
                    return(null);
                }

                List <MarcaUso>      lrub = new List <MarcaUso>();
                List <Referencia>    lref = new List <Referencia>();
                IEnumerator <string> ff   = FKs.GetEnumerator();
                c = 0;
                if (fila[c++])
                {
                    saida = ff.Current;
                    lrub  = MarcaUso.ConverteObject(operacoes.SelecionarTabela(tabelasBd.MARCAS_USO, MarcaUso.ToListTabela(true), "sigla='" + saida + "'"));
                    if (lrub.Count() > 0)
                    {
                        // teste.rubrica = lrub.First().id;
                    }
                    else
                    {
                        return(null);
                    }
                    ff.MoveNext();
                }
                if (fila[c])
                {
                    saida = ff.Current;
                    lref  = Referencia.ConverteObject(operacoes.SelecionarTabela(tabelasBd.REFERENCIAS, Referencia.ToListTabela(true), "Cod='" + saida + "'"));
                    if (lref.Count > 0)
                    {
                        // teste.referencia_verbete = lref.First().id;
                    }
                    else
                    {
                        return(null);
                    }
                }
                valores.Clear();
                valores.AddRange(teste.ToListValores());
            }
            return(valores);
        }
Exemplo n.º 3
0
        private void btnSalva_Click(object sender, EventArgs e)
        {
            bool r;

            if (txtpalavra.Text == String.Empty)
            {
                InformaDiag.Erro("Palavra não pode ser vazio!");
                return;
            }
            if (ComboClasseGram.SelectedItem == null)
            {
                InformaDiag.Erro("Selecione um valor válido de Classe gramatical!");
                return;
            }
            if (ComboGenero.SelectedItem == null)
            {
                InformaDiag.Erro("Selecione um gênero válido!");
                return;
            }
            if (ComboIdioma.SelectedItem == null)
            {
                InformaDiag.Erro("É obrigatório selecionar um idioma!");
                return;
            }
            p.lema      = txtpalavra.Text;
            p.idioma    = PegaSiglaIdioma();
            p.Definicao = txtDefinicao.Text;
            switch (ComboGenero.SelectedIndex)
            {
            case 0:
                p.Genero = "M";
                break;

            case 1:
                p.Genero = "F";
                break;

            case 2:
                p.Genero = "N";
                break;

            case 3:
                p.Genero = "S";
                break;

            case 4:
                p.Genero = "SM";
                break;

            default:
                throw new Exception("Opção não disponível na lista de opções de gênero.");
            }
            if (p.Genero == "N" && p.idioma == "PT")
            {
                InformaDiag.Erro("Gênero inadequado ao idioma.");
                return;
            }
            p.ClasseGram = ComboClasseGram.Text;
            if (comboSinonimo1.Text == "")
            {
                p.Sinonimo1 = 0;
            }
            if (comboSinonimo2.Text == "")
            {
                p.Sinonimo2 = 0;
            }
            p.Sublema = txtSubLema.Text;
            AjustaSinonimos();
            if (p.id <= 0)
            {
                r = crud.InsereLinha(tabelasBd.PALAVRA, Palavra.ToListTabela(), p.ToListValores());
            }
            else
            {
                r = crud.UpdateLine(tabelasBd.PALAVRA, Palavra.ToListTabela(), p.ToListValores(), "id=" + p.id.ToString());
            }
            //Uma excessão pode ser lançda aqui quando os valores das chaves estrangerias forem <1, pois estão refernciando um valor que não existe. Como o int no c# não cabe um NULL, seria melhor não enviar o tal valor que evitamos o problema
            if (r)
            {
                InformaDiag.Informa("Salvo!");
                LimpaCampos();
                LimpaModel();
                btnNovo_Click(sender, e);
            }
        }