Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("Codigo,Nome,QtdDisponivel,UnidadeMedida")] Agrotoxico agrotoxico)
        {
            if (id != agrotoxico.Codigo)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(agrotoxico);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AgrotoxicoExists(agrotoxico.Codigo))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(agrotoxico));
        }
Exemplo n.º 2
0
        public void CarregarMotivoAgrotoxicoDesativado(Agrotoxico agrotoxico)
        {
            try
            {
                foreach (var ingredienteAtivo in agrotoxico.IngredientesAtivos)
                {
                    if (ingredienteAtivo.SituacaoId != (int)eIngredienteAtivoSituacao.Ativo)
                    {
                        agrotoxico.MotivoId    = (int)eAgrotoxicoDesativadoMotivo.IngredienteAtivoDesativado;
                        agrotoxico.MotivoTexto = _busLista.AgrotoxicoDesativadosMensagens.SingleOrDefault(x => x.Id == (int)eAgrotoxicoDesativadoMotivo.IngredienteAtivoDesativado).Texto;
                        return;
                    }
                }

                if (!agrotoxico.CadastroAtivo)
                {
                    agrotoxico.MotivoId    = (int)eAgrotoxicoDesativadoMotivo.AgrotoxicoDesativado;
                    agrotoxico.MotivoTexto = _busLista.AgrotoxicoDesativadosMensagens.SingleOrDefault(x => x.Id == (int)eAgrotoxicoDesativadoMotivo.AgrotoxicoDesativado).Texto;
                }
                else
                {
                    agrotoxico.MotivoId    = null;
                    agrotoxico.MotivoTexto = string.Empty;
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            CertificadoCadastroProdutoAgrotoxico esp = especificidade as CertificadoCadastroProdutoAgrotoxico;

            Destinatario(esp.Titulo.Protocolo.Id, esp.DestinatarioId, "Certificado_Destinatario");

            if (esp.AgrotoxicoId <= 0)
            {
                Validacao.Add(Mensagem.CertificadoCadastroProdutoAgrotoxico.AgrotoxicoObrigatorio);
            }
            else
            {
                Agrotoxico agrotoxico = _daEspecificidade.ObterAgrotoxico(esp.AgrotoxicoId, simplificado: true);

                if (esp.AgrotoxicoTid != agrotoxico.Tid)
                {
                    Validacao.Add(Mensagem.CertificadoCadastroProdutoAgrotoxico.AgrotoxicoDesatualizado);
                }
                else
                {
                    if (!_daEspecificidade.ProcessoPossuiSEP(esp.ProtocoloReq.Id, agrotoxico.NumeroProcessoSep))
                    {
                        Validacao.Add(Mensagem.CertificadoCadastroProdutoAgrotoxico.NumeroSEPAlterado);
                    }

                    if (!agrotoxico.CadastroAtivo)
                    {
                        Validacao.Add(Mensagem.CertificadoCadastroProdutoAgrotoxico.AgrotoxicoInativo);
                    }
                }
            }

            return(Validacao.EhValido);
        }
        internal Agrotoxico ObterAgrotoxicoPorProtocolo(int protocoloId, BancoDeDados banco = null)
        {
            Agrotoxico agrotoxico = null;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Dados da Especificidade

                Comando comando = bancoDeDados.CriarComando(@"select t.id, t.nome_comercial, t.tid from tab_agrotoxico t where t.numero_processo_sep =  
															(select numero_autuacao from tab_protocolo where id = :protocolo)"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("protocolo", protocoloId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        agrotoxico               = new Agrotoxico();
                        agrotoxico.Id            = reader.GetValue <int>("id");
                        agrotoxico.NomeComercial = reader.GetValue <string>("nome_comercial");
                        agrotoxico.Tid           = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion
            }

            return(agrotoxico);
        }
Exemplo n.º 5
0
        public ActionResult ObterDadosAgrotoxico(Protocolo protocolo)
        {
            CertificadoCadastroProdutoAgrotoxicoBus bus = new CertificadoCadastroProdutoAgrotoxicoBus();
            Agrotoxico agrotoxico = bus.ObterAgrotoxico(protocolo.Id.GetValueOrDefault());

            return(Json(new
            {
                @Agrotoxico = agrotoxico,
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Create([Bind("Codigo,Nome,QtdDisponivel,UnidadeMedida")] Agrotoxico agrotoxico)
        {
            if (ModelState.IsValid)
            {
                _context.Add(agrotoxico);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(agrotoxico));
        }
Exemplo n.º 7
0
        public ActionResult Editar(Agrotoxico agrotoxico)
        {
            _bus.Salvar(agrotoxico);

            return(Json(new
            {
                @Valido = Validacao.EhValido,
                @Erros = Validacao.Erros,
                @Url = Url.Action("Index", "Agrotoxico", new { Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 8
0
        public AgrotoxicoVM(Agrotoxico agrotoxico, List <Lista> ingredienteAtivoUnidadesMedida, List <ConfiguracaoVegetalItem> classesUso, List <Lista> formasApresentacao, List <Lista> gruposQuimicos, List <Lista> periculosidadesAmbientais, List <Lista> classToxicologicas, bool isVisualizar = false)
        {
            IsVisualizar = isVisualizar;
            Agrotoxico   = agrotoxico;
            ClassesUso   = classesUso;

            IngredienteAtivoUnidadeMedidaLst = ViewModelHelper.CriarSelectList(ingredienteAtivoUnidadesMedida, true, true);
            FormasApresentacao        = ViewModelHelper.CriarSelectList(formasApresentacao, true, true, agrotoxico.FormaApresentacao.Id.ToString());
            GruposQuimicos            = ViewModelHelper.CriarSelectList(gruposQuimicos, true, true);
            PericulosidadesAmbientais = ViewModelHelper.CriarSelectList(periculosidadesAmbientais, true, true, agrotoxico.PericulosidadeAmbiental.Id.ToString());
            ClassToxicologicas        = ViewModelHelper.CriarSelectList(classToxicologicas, true, true, agrotoxico.ClassificacaoToxicologica.Id.ToString());
        }
Exemplo n.º 9
0
        public ActionResult ObterMensagemAgrotoxicoDesativado(Agrotoxico agrotoxico)
        {
            _bus.CarregarMotivoAgrotoxicoDesativado(agrotoxico);

            return(Json(new
            {
                @Valido = Validacao.EhValido,
                @Erros = Validacao.Erros,
                @MotivoId = agrotoxico.MotivoId,
                @MotivoTexto = agrotoxico.MotivoTexto,
            }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 10
0
        public ActionResult ExcluirConfirm(int id)
        {
            ConfirmarVM vm = new ConfirmarVM();

            Agrotoxico agrotoxico = _bus.Obter(id);

            vm.Id       = agrotoxico.Id;
            vm.Mensagem = Mensagem.Agrotoxico.MensagemExcluir(agrotoxico.NumeroCadastro.ToString());
            vm.Titulo   = "Excluir Agrotóxico";

            return(PartialView("Confirmar", vm));
        }
Exemplo n.º 11
0
        public Agrotoxico Obter(int id, BancoDeDados banco = null)
        {
            Agrotoxico agrotoxico = null;

            try
            {
                using (BancoDeDados bancoDedados = BancoDeDados.ObterInstancia(banco))
                {
                    agrotoxico = _da.Obter(id);

                    agrotoxico.Bula = new ArquivoDa().Obter(agrotoxico.Bula.Id.Value, bancoDedados);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(agrotoxico);
        }
Exemplo n.º 12
0
        public AgrotoxicoPDF(Agrotoxico agrotoxico)
        {
            Numero            = agrotoxico.NumeroCadastro.ToString();
            NomeComercial     = agrotoxico.NomeComercial;
            NumeroProcessoSEP = agrotoxico.NumeroProcessoSep.ToString();
            TitularRegistro   = new PessoaPDF()
            {
                NomeRazaoSocial = agrotoxico.TitularRegistro.NomeRazaoSocial, CPFCNPJ = agrotoxico.TitularRegistro.CPFCNPJ
            };
            ClassificacaoToxicologica.Nome = agrotoxico.ClassificacaoToxicologica.Texto;
            Periculosidade.Nome            = agrotoxico.PericulosidadeAmbiental.Texto;

            //Classes
            foreach (var item in agrotoxico.ClassesUso)
            {
                Classes.Add(new ConfiguracaoVegetalItemPDF()
                {
                    Nome = item.Texto
                });
            }

            //Ingredientes
            foreach (var item in agrotoxico.IngredientesAtivos)
            {
                Ingredientes.Add(new ConfiguracaoVegetalItemPDF()
                {
                    Nome = item.Texto
                });
            }

            //Culturas
            foreach (var item in agrotoxico.Culturas)
            {
                Culturas.Add(new AgrotoxicoCulturaPDF()
                {
                    Nome = item.Cultura.Nome
                });
            }
        }
Exemplo n.º 13
0
        public bool Salvar(Agrotoxico agrotoxico)
        {
            try
            {
                agrotoxico.IngredientesAtivos.ForEach(item =>
                {
                    if (item.UnidadeMedidaOutro != null)
                    {
                        item.UnidadeMedidaOutro = item.UnidadeMedidaOutro.DeixarApenasUmEspaco();
                    }
                });

                if (_validar.Salvar(agrotoxico))
                {
                    if (!agrotoxico.PossuiCadastro)
                    {
                        if (agrotoxico.Id < 1)
                        {
                            agrotoxico.NumeroCadastro = _da.ObterSequenciaNumeroCadastro();
                        }
                        else
                        {
                            agrotoxico.NumeroCadastro = _da.Obter(agrotoxico.Id, true).NumeroCadastro;
                        }
                    }

                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        #region Arquivo Bula

                        if (agrotoxico.Bula != null)
                        {
                            if (!string.IsNullOrWhiteSpace(agrotoxico.Bula.Nome))
                            {
                                if (agrotoxico.Bula.Id != null && agrotoxico.Bula.Id == 0)
                                {
                                    ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);
                                    agrotoxico.Bula = _busArquivo.Copiar(agrotoxico.Bula);
                                }

                                if (agrotoxico.Bula.Id == 0)
                                {
                                    ArquivoDa _arquivoDa = new ArquivoDa();
                                    _arquivoDa.Salvar(agrotoxico.Bula, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                                }
                            }
                            else
                            {
                                agrotoxico.Bula.Id = null;
                            }
                        }
                        else
                        {
                            agrotoxico.Bula = new Blocos.Arquivo.Arquivo();
                        }

                        #endregion

                        _da.Salvar(agrotoxico, bancoDeDados);

                        bancoDeDados.Commit();

                        Validacao.Add(Mensagem.Agrotoxico.SalvoSucesso(agrotoxico.NumeroCadastro.ToString()));
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 14
0
        internal bool Salvar(Agrotoxico agrotoxico)
        {
            if (agrotoxico.Id > 0)
            {
                if (!_da.Existe(agrotoxico.Id))
                {
                    Validacao.Add(Mensagem.Agrotoxico.AgrotoxicoInexistente);
                    return(Validacao.EhValido);
                }
            }

            if (agrotoxico.PossuiCadastro)
            {
                if (agrotoxico.NumeroCadastro < 1)
                {
                    Validacao.Add(Mensagem.Agrotoxico.NumeroCadastroObrigatorio);
                }
                else
                {
                    GerenciadorConfiguracao <ConfiguracaoSistema> configSys = new GerenciadorConfiguracao <ConfiguracaoSistema>(new ConfiguracaoSistema());
                    if (agrotoxico.NumeroCadastro > Convert.ToInt32(configSys.Obter <String>(ConfiguracaoSistema.KeyAgrotoxicoMaxNumeroCadastro)))
                    {
                        Validacao.Add(Mensagem.Agrotoxico.NumeroCadastroSuperiorMaximo);
                    }
                    else if (_da.NumeroCadastroExiste(agrotoxico))
                    {
                        Validacao.Add(Mensagem.Agrotoxico.NumeroCadastroExistente);
                    }
                }
            }

            if (string.IsNullOrEmpty(agrotoxico.NomeComercial))
            {
                Validacao.Add(Mensagem.Agrotoxico.NomeComercialObrigatorio);
            }

            if (agrotoxico.NumeroRegistroMinisterio <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.NumeroRegistroObrigatorio);
            }

            if (agrotoxico.NumeroProcessoSep <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.NumeroProcessoSepObrigatorio);
            }

            if (agrotoxico.TitularRegistro.Id <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.TitularRegistroObrigatorio);
            }
            else
            {
                if (!_pessoaDa.ExistePessoa(agrotoxico.TitularRegistro.Id))
                {
                    Validacao.Add(Mensagem.Agrotoxico.PessoaNaoCadastrada(agrotoxico.TitularRegistro.NomeRazaoSocial));
                }
            }

            if (agrotoxico.PericulosidadeAmbiental.Id <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.PericulosidadeAmbientalObrigatorio);
            }

            if (agrotoxico.ClassificacaoToxicologica.Id <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.ClassificacaoToxicologicaObrigatorio);
            }

            if (agrotoxico.FormaApresentacao.Id <= 0)
            {
                Validacao.Add(Mensagem.Agrotoxico.FormaApresentacaoObrigatorio);
            }

            if (_da.ProcessoSepEmOutroCadastro(agrotoxico))
            {
                Validacao.Add(Mensagem.Agrotoxico.ProcessoSepEmOutroCadastro);
            }

            if (agrotoxico.ClassesUso.Count < 1)
            {
                Validacao.Add(Mensagem.Agrotoxico.ClasseUsoObrigatorio);
            }

            if (agrotoxico.GruposQuimicos.Count < 1)
            {
                Validacao.Add(Mensagem.Agrotoxico.GrupoQuimicoObrigatorio);
            }

            if (agrotoxico.IngredientesAtivos.Count < 1)
            {
                Validacao.Add(Mensagem.Agrotoxico.IngredienteAtivoObrigatorio);
            }
            else
            {
                IngredienteAtivoBus ingredienteAtivoBus = new IngredienteAtivoBus();
                ingredienteAtivoBus.ObterValores(agrotoxico.IngredientesAtivos);

                agrotoxico.IngredientesAtivos.ForEach(ingrediente =>
                {
                    //if (ingrediente.Concentracao <= 0)
                    //{
                    //	Validacao.Add(Mensagem.Agrotoxico.ConcentracaoObrigatorio);
                    //}

                    //if (ingrediente.UnidadeMedidaId <= 0)
                    //{
                    //	Validacao.Add(Mensagem.Agrotoxico.UnidadeMedidaObrigatoria);
                    //}

                    //if (ingrediente.UnidadeMedidaId == (int)eAgrotoxicoIngredienteAtivoUnidadeMedida.Outros && string.IsNullOrEmpty(ingrediente.UnidadeMedidaOutro))
                    //{
                    //	Validacao.Add(Mensagem.Agrotoxico.UnidadeMedidaOutroObrigatorio);
                    //}

                    if (ingrediente.SituacaoId == (int)eIngredienteAtivoSituacao.Inativo)
                    {
                        Validacao.Add(Mensagem.Agrotoxico.IngredienteAtivoInativo(ingrediente.Texto));
                    }
                });
            }

            return(Validacao.EhValido);
        }
        internal Agrotoxico ObterAgrotoxico(int id, bool simplificado = false, BancoDeDados banco = null)
        {
            Agrotoxico agrotoxico = new Agrotoxico();

            using (BancoDeDados bancoDedados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDedados.CriarComando(@"select t.id, t.possui_cadastro, t.numero_cadastro, t.cadastro_ativo, t.motivo, t.nome_comercial,
															t.numero_registro_ministerio, t.numero_processo_sep, t.titular_registro, nvl(p.nome, p.razao_social) 
															titular_registro_nome_razao, nvl(p.cpf, p.cnpj) titular_registro_cpf_cnpj, t.classificacao_toxicologica, 
															c.texto class_toxicologica_texto, t.periculosidade_ambiental, pa.texto periculosidade_ambiental_texto, 
															t.forma_apresentacao, t.observacao_interna, t.observacao_geral, t.arquivo, t.tid from tab_agrotoxico t,
															tab_pessoa p, tab_class_toxicologica c, tab_peric_ambiental pa where c.id = classificacao_toxicologica 
															and p.id = t.titular_registro and pa.id = t.periculosidade_ambiental and t.id = :id"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        agrotoxico.Id            = id;
                        agrotoxico.Bula.Id       = reader.GetValue <int>("arquivo");
                        agrotoxico.CadastroAtivo = reader.GetValue <bool>("cadastro_ativo");
                        agrotoxico.ClassificacaoToxicologica.Id    = reader.GetValue <int>("classificacao_toxicologica");
                        agrotoxico.ClassificacaoToxicologica.Texto = reader.GetValue <string>("class_toxicologica_texto");
                        agrotoxico.FormaApresentacao.Id            = reader.GetValue <int>("forma_apresentacao");
                        agrotoxico.MotivoId                      = reader.GetValue <int?>("motivo");
                        agrotoxico.NomeComercial                 = reader.GetValue <string>("nome_comercial");
                        agrotoxico.NumeroCadastro                = reader.GetValue <int>("numero_cadastro");
                        agrotoxico.NumeroRegistroMinisterio      = reader.GetValue <long>("numero_registro_ministerio");
                        agrotoxico.NumeroProcessoSep             = reader.GetValue <long>("numero_processo_sep");
                        agrotoxico.ObservacaoGeral               = reader.GetValue <string>("observacao_geral");
                        agrotoxico.ObservacaoInterna             = reader.GetValue <string>("observacao_interna");
                        agrotoxico.PericulosidadeAmbiental.Id    = reader.GetValue <int>("periculosidade_ambiental");
                        agrotoxico.PericulosidadeAmbiental.Texto = reader.GetValue <string>("periculosidade_ambiental_texto");
                        agrotoxico.PossuiCadastro                = reader.GetValue <bool>("possui_cadastro");
                        agrotoxico.Tid = reader.GetValue <string>("tid");
                        agrotoxico.TitularRegistro.Id = reader.GetValue <int>("titular_registro");
                        agrotoxico.TitularRegistro.NomeRazaoSocial = reader.GetValue <string>("titular_registro_nome_razao");
                        agrotoxico.TitularRegistro.CPFCNPJ         = reader.GetValue <string>("titular_registro_cpf_cnpj");
                    }
                    reader.Close();
                }

                if (simplificado)
                {
                    return(agrotoxico);
                }

                #region Classes de Uso

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.classe_uso, c.texto classe_uso_texto, t.tid from tab_agrotoxico_classe_uso t, tab_classe_uso c 
                where t.classe_uso = c.id and t.agrotoxico =:agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem classeUso = null;

                    while (reader.Read())
                    {
                        classeUso = new ConfiguracaoVegetalItem();
                        classeUso.IdRelacionamento = reader.GetValue <int>("id");
                        classeUso.Id    = reader.GetValue <int>("classe_uso");
                        classeUso.Texto = reader.GetValue <string>("classe_uso_texto");
                        classeUso.Tid   = reader.GetValue <string>("tid");
                        agrotoxico.ClassesUso.Add(classeUso);
                    }

                    reader.Close();
                }

                #endregion

                #region Ingredientes Ativos

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.ingrediente_ativo, i.texto ingrediente_ativo_texto, i.situacao, t.concentracao, t.tid from tab_agrotoxico_ing_ativo 
                t, tab_ingrediente_ativo i where t.ingrediente_ativo = i.id and t.agrotoxico = :agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem ingrediente = null;

                    while (reader.Read())
                    {
                        ingrediente = new ConfiguracaoVegetalItem();
                        ingrediente.IdRelacionamento = reader.GetValue <int>("id");
                        ingrediente.Id           = reader.GetValue <int>("ingrediente_ativo");
                        ingrediente.Texto        = reader.GetValue <string>("ingrediente_ativo_texto");
                        ingrediente.SituacaoId   = reader.GetValue <int>("situacao");
                        ingrediente.Tid          = reader.GetValue <string>("tid");
                        ingrediente.Concentracao = reader.GetValue <decimal>("concentracao");
                        agrotoxico.IngredientesAtivos.Add(ingrediente);
                    }

                    reader.Close();
                }

                #endregion

                #region Grupos químicos

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.grupo_quimico, g.texto grupo_quimico_texto, t.tid from tab_agrotoxico_grupo_quimico t, 
                tab_grupo_quimico g where t.grupo_quimico = g.id and t.agrotoxico = :agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem grupo = null;

                    while (reader.Read())
                    {
                        grupo = new ConfiguracaoVegetalItem();
                        grupo.IdRelacionamento = reader.GetValue <int>("id");
                        grupo.Id    = reader.GetValue <int>("grupo_quimico");
                        grupo.Texto = reader.GetValue <string>("grupo_quimico_texto");
                        grupo.Tid   = reader.GetValue <string>("tid");
                        agrotoxico.GruposQuimicos.Add(grupo);
                    }

                    reader.Close();
                }

                #endregion

                #region Culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.cultura, c.texto cultura_texto, t.intervalo_seguranca, 
													t.tid from tab_agrotoxico_cultura t, tab_cultura c where t.cultura = c.id 
													and t.agrotoxico = :agrotoxico"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    AgrotoxicoCultura cultura = null;

                    while (reader.Read())
                    {
                        cultura = new AgrotoxicoCultura();
                        cultura.IdRelacionamento   = reader.GetValue <int>("id");
                        cultura.Cultura.Id         = reader.GetValue <int>("cultura");
                        cultura.Cultura.Nome       = reader.GetValue <string>("cultura_texto");
                        cultura.IntervaloSeguranca = reader.GetValue <string>("intervalo_seguranca");
                        cultura.Tid = reader.GetValue <string>("tid");
                        agrotoxico.Culturas.Add(cultura);
                    }

                    reader.Close();
                }

                #endregion

                #region Pragas das culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico_cultura, t.praga, p.nome_cientifico, p.nome_comum, t.tid from tab_agrotoxico_cultura_praga t, tab_praga p ", EsquemaBanco);
                comando.DbCommand.CommandText += String.Format(" where t.praga = p.id {0}",
                                                               comando.AdicionarIn("and", "t.agrotoxico_cultura", DbType.Int32, agrotoxico.Culturas.Select(x => x.IdRelacionamento).ToList()));

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    Praga praga = null;

                    while (reader.Read())
                    {
                        praga = new Praga();
                        praga.IdRelacionamento = reader.GetValue <int>("id");
                        praga.Id             = reader.GetValue <int>("praga");
                        praga.NomeCientifico = reader.GetValue <string>("nome_cientifico");
                        praga.NomeComum      = reader.GetValue <string>("nome_comum");
                        praga.Tid            = reader.GetValue <string>("tid");

                        if (agrotoxico.Culturas != null && agrotoxico.Culturas.Count > 0)
                        {
                            agrotoxico.Culturas.Single(x => x.IdRelacionamento == reader.GetValue <int>("agrotoxico_cultura")).Pragas.Add(praga);
                        }
                    }

                    reader.Close();
                }

                #endregion

                #region Modalidades de aplicacao das culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico_cultura, t.modalidade_aplicacao, m.texto modalidade_texto, t.tid from tab_agro_cult_moda_aplicacao t, 
                tab_modalidade_aplicacao m ", EsquemaBanco);

                comando.DbCommand.CommandText += String.Format(" where t.modalidade_aplicacao = m.id {0}",
                                                               comando.AdicionarIn("and", "t.agrotoxico_cultura", DbType.Int32, agrotoxico.Culturas.Select(x => x.IdRelacionamento).ToList()));


                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem modalidade = null;

                    while (reader.Read())
                    {
                        modalidade    = new ConfiguracaoVegetalItem();
                        modalidade.Id = reader.GetValue <int>("modalidade_aplicacao");
                        modalidade.IdRelacionamento = reader.GetValue <int>("id");
                        modalidade.Texto            = reader.GetValue <string>("modalidade_texto");

                        if (agrotoxico.Culturas != null && agrotoxico.Culturas.Count > 0)
                        {
                            agrotoxico.Culturas.Single(x => x.IdRelacionamento == reader.GetValue <int>("agrotoxico_cultura")).ModalidadesAplicacao.Add(modalidade);
                        }
                    }

                    reader.Close();
                }

                #endregion
            }

            return(agrotoxico);
        }