Example #1
0
 public UnidadeProducaoItem()
 {
     Municipio            = new Municipio();
     Produtores           = new List <Responsavel>();
     ResponsavelTecnico   = new ResponsavelTecnico();
     ResponsaveisTecnicos = new List <ResponsavelTecnico>();
     Coordenada           = new Coordenada();
 }
 public String ResponsavelTecnicoJson(ResponsavelTecnico item)
 {
     return(ViewModelHelper.Json(new
     {
         @Id = item.Id,
         @IdRelacionamento = item.IdRelacionamento,
         @Nome = item.NomeRazao,
         @CFONumero = item.CFONumero,
         @NumeroArt = item.NumeroArt,
         @ArtCargoFuncao = item.ArtCargoFuncao,
         @DataValidadeART = item.DataValidadeART
     }));
 }
Example #3
0
        public bool ResponsavelTecnicoValidar(List <ResponsavelTecnico> responsaveisTecnicos, List <Atividade> atividades)
        {
            Atividade atividade = _atividadeBus.ObterAtividadePorCodigo((int)eAtividadeCodigo.BarragemDeAte1HaLâminaDaguaAte10000M3DeVolumeArmazenado);

            if (atividades.Any(x => x.Id == atividade.Id) && (responsaveisTecnicos == null || responsaveisTecnicos.Count <= 0))
            {
                Validacao.Add(Mensagem.Requerimento.AtividadeResponsavelTecnicoObrigatorio(atividade.NomeAtividade));
                return(false);
            }

            for (int i = 0; i < responsaveisTecnicos.Count; i++)
            {
                ResponsavelTecnico responsavel = responsaveisTecnicos[i];

                if (string.IsNullOrEmpty(responsavel.NomeRazao))
                {
                    Validacao.Add(Msg.ResponsavelNomeRazaoObrigatorio(i));
                }

                if (string.IsNullOrEmpty(responsavel.CpfCnpj))
                {
                    Validacao.Add(Msg.ResponsavelCpfCnpjObrigatorio(i));
                }

                if (responsavel.Funcao <= 0)
                {
                    Validacao.Add(Msg.ResponsavelFuncaoObrigatorio(i));
                }

                if (string.IsNullOrEmpty(responsavel.NumeroArt))
                {
                    Validacao.Add(Msg.ResponsavelARTObrigatorio(i));
                }

                if (!_busPessoa.ExisteProfissao(responsavel.Id))
                {
                    Validacao.Add(Mensagem.ResponsavelTecnico.ResponsavelNaoPossuiProfissao(responsavel.NomeRazao));
                }
            }

            return(Validacao.EhValido);
        }
        internal UnidadeProducao Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            UnidadeProducao caracterizacao = new UnidadeProducao();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Unidade de Produção

                Comando comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.empreendimento, c.possui_cod_propriedade, c.propriedade_codigo, e.codigo empreendimento_codigo, c.local_livro 
				from {0}crt_unidade_producao c, tab_empreendimento e where c.empreendimento = e.id and c.id = :id"                , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = id;
                        caracterizacao.CodigoPropriedade       = reader.GetValue <int>("propriedade_codigo");
                        caracterizacao.Empreendimento.Id       = reader.GetValue <int>("empreendimento");
                        caracterizacao.Empreendimento.Codigo   = reader.GetValue <int>("empreendimento_codigo");
                        caracterizacao.LocalLivroDisponivel    = reader.GetValue <string>("local_livro");
                        caracterizacao.PossuiCodigoPropriedade = reader.GetValue <bool>("possui_cod_propriedade");
                        caracterizacao.Tid = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion

                if (simplificado)
                {
                    return(caracterizacao);
                }

                #region Unidades de produção

                comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.unidade_producao, c.possui_cod_up, c.codigo_up, c.tipo_producao, c.renasem, c.renasem_data_validade, c.area, c.ano_abertura, 
				c.cultura, c.cultivar, tc.texto cultura_texto, cc.cultivar cultivar_nome, c.data_plantio_ano_producao, c.estimativa_quant_ano, c.estimativa_unid_medida 
				from crt_unidade_producao_unidade c, tab_cultura_cultivar cc, tab_cultura tc 
				where cc.id(+) = c.cultivar and tc.id = c.cultura and c.unidade_producao = :unidade_producao"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("unidade_producao", caracterizacao.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        caracterizacao.UnidadesProducao.Add(new UnidadeProducaoItem()
                        {
                            Id                              = reader.GetValue <int>("id"),
                            Tid                             = reader.GetValue <string>("tid"),
                            PossuiCodigoUP                  = reader.GetValue <bool>("possui_cod_up"),
                            CodigoUP                        = reader.GetValue <long>("codigo_up"),
                            TipoProducao                    = reader.GetValue <int>("tipo_producao"),
                            RenasemNumero                   = reader.GetValue <string>("renasem"),
                            DataValidadeRenasem             = string.IsNullOrEmpty(reader.GetValue <string>("renasem_data_validade")) ? "" : Convert.ToDateTime(reader.GetValue <string>("renasem_data_validade")).ToShortDateString(),
                            AreaHA                          = reader.GetValue <decimal>("area"),
                            DataPlantioAnoProducao          = reader.GetValue <string>("data_plantio_ano_producao"),
                            EstimativaProducaoQuantidadeAno = reader.GetValue <decimal>("estimativa_quant_ano"),
                            CultivarId                      = reader.GetValue <int>("cultivar"),
                            CultivarTexto                   = reader.GetValue <string>("cultivar_nome"),
                            CulturaId                       = reader.GetValue <int>("cultura"),
                            CulturaTexto                    = reader.GetValue <string>("cultura_texto"),
                            AnoAbertura                     = reader.GetValue <string>("ano_abertura")
                        });
                    }

                    reader.Close();
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    #region Coordenadas

                    comando = bancoDeDados.CriarComando(@"
					select id, tid, unidade_producao_unidade, tipo_coordenada, datum, easting_utm, northing_utm, fuso_utm,
					hemisferio_utm, municipio from crt_unidade_producao_un_coord where unidade_producao_unidade = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        Coordenada coordenada = null;

                        if (reader.Read())
                        {
                            coordenada                    = new Coordenada();
                            coordenada.Id                 = reader.GetValue <int>("id");
                            coordenada.Tipo.Id            = reader.GetValue <int>("tipo_coordenada");
                            coordenada.Datum.Id           = reader.GetValue <int>("datum");
                            coordenada.EastingUtmTexto    = reader.GetValue <string>("easting_utm");
                            coordenada.NorthingUtmTexto   = reader.GetValue <string>("northing_utm");
                            coordenada.FusoUtm            = reader.GetValue <int>("fuso_utm");
                            coordenada.HemisferioUtm      = reader.GetValue <int>("hemisferio_utm");
                            coordenada.HemisferioUtmTexto = reader.GetValue <string>("hemisferio_utm");

                            item.Municipio.Id = reader.GetValue <int>("municipio");
                            item.Coordenada   = coordenada;
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Produtores

                    comando = bancoDeDados.CriarComando(@"
					select c.id, c.tid, c.produtor, nvl(p.nome, p.razao_social) nome_razao, nvl(p.cpf, p.cnpj) cpf_cnpj, p.tipo 
					from crt_unidade_prod_un_produtor c, tab_pessoa p where p.id = c.produtor and c.unidade_producao_unidade = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            item.Produtores.Add(new Responsavel()
                            {
                                Id               = reader.GetValue <int>("produtor"),
                                NomeRazao        = reader.GetValue <string>("nome_razao"),
                                CpfCnpj          = reader.GetValue <string>("cpf_cnpj"),
                                IdRelacionamento = reader.GetValue <int>("id"),
                                Tipo             = reader.GetValue <int>("tipo"),
                                Tid              = reader.GetValue <string>("tid")
                            });
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Responsáveis Técnicos

                    comando = bancoDeDados.CriarComando(@"
					select c.id, c.tid, c.unidade_producao_unidade, c.responsavel_tecnico, nvl(p.nome, p.razao_social) nome_razao, nvl(p.cpf, p.cnpj) cpf_cnpj, 
					pf.texto profissao, oc.orgao_sigla, pp.registro, c.numero_hab_cfo_cfoc, c.numero_art, c.art_cargo_funcao, c.data_validade_art, 
					(select h.extensao_habilitacao from tab_hab_emi_cfo_cfoc h where h.responsavel = c.responsavel_tecnico) extensao_habilitacao 
					from {0}crt_unidade_prod_un_resp_tec c, {0}tab_credenciado tc, {1}tab_pessoa p, {1}tab_pessoa_profissao pp, {0}tab_profissao pf, {0}tab_orgao_classe oc 
					where tc.id = c.responsavel_tecnico and p.id = tc.pessoa and pp.pessoa(+) = p.id and pf.id(+)  = pp.profissao and oc.id(+) = pp.orgao_classe 
					and c.unidade_producao_unidade = :id"                    , EsquemaBanco, EsquemaCredenciadoBanco);

                    comando.AdicionarParametroEntrada("id", item.Id, DbType.String);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        ResponsavelTecnico responsavel = null;

                        while (reader.Read())
                        {
                            responsavel = new ResponsavelTecnico();
                            responsavel.IdRelacionamento = reader.GetValue <int>("id");
                            responsavel.Id             = reader.GetValue <int>("responsavel_tecnico");
                            responsavel.NomeRazao      = reader.GetValue <string>("nome_razao");
                            responsavel.CpfCnpj        = reader.GetValue <string>("cpf_cnpj");
                            responsavel.CFONumero      = reader.GetValue <string>("numero_hab_cfo_cfoc");
                            responsavel.ArtCargoFuncao = reader.GetValue <bool>("art_cargo_funcao");
                            responsavel.NumeroArt      = reader.GetValue <string>("numero_art");

                            responsavel.ProfissaoTexto   = reader.GetValue <string>("profissao");
                            responsavel.OrgaoClasseSigla = reader.GetValue <string>("orgao_sigla");
                            responsavel.NumeroRegistro   = reader.GetValue <string>("registro");

                            responsavel.DataValidadeART = reader.GetValue <string>("data_validade_art");
                            if (!string.IsNullOrEmpty(responsavel.DataValidadeART))
                            {
                                responsavel.DataValidadeART = Convert.ToDateTime(responsavel.DataValidadeART).ToShortDateString();
                            }

                            if (Convert.ToBoolean(reader.GetValue <int>("extensao_habilitacao")))
                            {
                                responsavel.CFONumero += "-ES";
                            }

                            item.ResponsaveisTecnicos.Add(responsavel);
                        }

                        reader.Close();
                    }

                    #endregion
                }

                #endregion
            }

            return(caracterizacao);
        }
        public void ValidarResponsavelTecnico(List <ResponsavelTecnico> responsavelTecnicoLista, ResponsavelTecnico responsavelTecnico)
        {
            responsavelTecnicoLista = responsavelTecnicoLista ?? new List <ResponsavelTecnico>();

            if (responsavelTecnico.Id < 1)
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.ResponsavelTecnicoObrigatorio);
            }

            if (string.IsNullOrEmpty(responsavelTecnico.CFONumero))
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.NumeroHabilitacaoCFOCFOCObrigatorio);
            }

            if (string.IsNullOrWhiteSpace(responsavelTecnico.NumeroArt))
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.NumeroARTObrigatorio);
            }

            if (!responsavelTecnico.ArtCargoFuncao)
            {
                ValidacoesGenericasBus.DataMensagem(new DateTecno()
                {
                    DataTexto = responsavelTecnico.DataValidadeART
                }, "DataValidadeART", "validade da ART", false);
            }

            if (responsavelTecnicoLista.Count(x => x.Id == responsavelTecnico.Id) > 0)
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.ResponsavelTecnicoJaAdicionado);
            }
        }
        private UnidadeConsolidacao Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            UnidadeConsolidacao caracterizacao = new UnidadeConsolidacao();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Unidade de Produção

                Comando comando = bancoDeDados.CriarComando(@"
															select c.id,c.possui_codigo_uc, c.codigo_uc, c.local_livro_disponivel, c.tipo_apresentacao_produto, c.tid, 
															c.empreendimento, e.codigo empreendimento_codigo from {0}crt_unidade_consolidacao c, {0}tab_empreendimento e
															where c.empreendimento = e.id and c.id = :id"                                                            , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = reader.GetValue <int>("id");
                        caracterizacao.Empreendimento.Id     = reader.GetValue <int>("empreendimento");
                        caracterizacao.Empreendimento.Codigo = reader.GetValue <int>("empreendimento_codigo");
                        caracterizacao.PossuiCodigoUC        = reader.GetValue <bool>("possui_codigo_uc");
                        caracterizacao.CodigoUC             = reader.GetValue <long>("codigo_uc");
                        caracterizacao.LocalLivroDisponivel = reader.GetValue <string>("local_livro_disponivel");
                        caracterizacao.TipoApresentacaoProducaoFormaIdentificacao = reader.GetValue <string>("tipo_apresentacao_produto");
                        caracterizacao.Tid = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion

                if (simplificado)
                {
                    return(caracterizacao);
                }

                #region Cultivares

                comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.unidade_consolidacao, c.capacidade_mes, c.unidade_medida, lu.texto unidade_medida_texto, c.cultivar, cc.cultivar cultivar_nome, c.cultura,
				tc.texto cultura_texto from crt_unidade_cons_cultivar c, tab_cultura tc, tab_cultura_cultivar cc, lov_crt_un_conso_un_medida lu where tc.id = c.cultura 
				and cc.id(+) = c.cultivar and lu.id = c.unidade_medida and c.unidade_consolidacao = :unidade"                , EsquemaBanco);

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

                Cultivar cultivar = null;
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        cultivar = new Cultivar();
                        cultivar.CapacidadeMes      = reader.GetValue <decimal>("capacidade_mes");
                        cultivar.Id                 = reader.GetValue <int>("cultivar");
                        cultivar.IdRelacionamento   = reader.GetValue <int>("id");
                        cultivar.Nome               = reader.GetValue <string>("cultivar_nome");
                        cultivar.Tid                = reader.GetValue <string>("tid");
                        cultivar.UnidadeMedida      = reader.GetValue <int>("unidade_medida");
                        cultivar.UnidadeMedidaTexto = reader.GetValue <string>("unidade_medida_texto");
                        cultivar.CulturaId          = reader.GetValue <int>("cultura");
                        cultivar.CulturaTexto       = reader.GetValue <string>("cultura_texto");

                        caracterizacao.Cultivares.Add(cultivar);
                    }

                    reader.Close();
                }

                #endregion

                #region Responsáveis Técnicos

                comando = bancoDeDados.CriarComando(@"
				select c.id, c.unidade_consolidacao, c.responsavel_tecnico, c.numero_hab_cfo_cfoc, c.numero_art, c.art_cargo_funcao, c.data_validade_art, c.tid, 
				nvl(tp.nome, tp.razao_social) nome_razao, nvl(tp.cpf, tp.cnpj) cpf_cnpj, pf.texto profissao, oc.orgao_sigla, pp.registro, 
				(select h.extensao_habilitacao from tab_hab_emi_cfo_cfoc h where h.responsavel = c.responsavel_tecnico) extensao_habilitacao 
				from {0}crt_unida_conso_resp_tec c, {0}tab_credenciado tc, {1}tab_pessoa tp, {1}tab_pessoa_profissao pp, 
				{0}tab_profissao pf, {0}tab_orgao_classe oc where tc.id = c.responsavel_tecnico and tp.id = tc.pessoa and pp.pessoa(+) = tp.id 
				and pf.id(+) = pp.profissao and oc.id(+) = pp.orgao_classe and c.unidade_consolidacao = :unidade"                , EsquemaBanco, EsquemaCredenciadoBanco);

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

                ResponsavelTecnico responsavel = null;
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        responsavel = new ResponsavelTecnico();
                        responsavel.IdRelacionamento = reader.GetValue <int>("id");
                        responsavel.Id             = reader.GetValue <int>("responsavel_tecnico");
                        responsavel.NomeRazao      = reader.GetValue <string>("nome_razao");
                        responsavel.CpfCnpj        = reader.GetValue <string>("cpf_cnpj");
                        responsavel.CFONumero      = reader.GetValue <string>("numero_hab_cfo_cfoc");
                        responsavel.NumeroArt      = reader.GetValue <string>("numero_art");
                        responsavel.ArtCargoFuncao = reader.GetValue <bool>("art_cargo_funcao");

                        responsavel.ProfissaoTexto   = reader.GetValue <string>("profissao");
                        responsavel.OrgaoClasseSigla = reader.GetValue <string>("orgao_sigla");
                        responsavel.NumeroRegistro   = reader.GetValue <string>("registro");

                        responsavel.DataValidadeART = reader.GetValue <string>("data_validade_art");
                        if (!string.IsNullOrEmpty(responsavel.DataValidadeART))
                        {
                            responsavel.DataValidadeART = Convert.ToDateTime(responsavel.DataValidadeART).ToShortDateString();
                        }

                        if (Convert.ToBoolean(reader.GetValue <int>("extensao_habilitacao")))
                        {
                            responsavel.CFONumero += "-ES";
                        }

                        caracterizacao.ResponsaveisTecnicos.Add(responsavel);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
Example #7
0
        internal bool Salvar(EmissaoCFOC entidade)
        {
            //Valida a habilitacao antes do salvar o credenciado.

            if (!entidade.TipoNumero.HasValue)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.TipoNumeroObrigatorio);
            }
            else
            {
                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Bloco)
                {
                    if (!ValidarNumeroBloco(entidade.Numero, entidade.Id))
                    {
                        return(false);
                    }

                    ValidacoesGenericasBus.DataMensagem(entidade.DataEmissao, "CFOC_DataEmissao", "emissão");
                }

                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Digital)
                {
                    //VerificarNumeroDigitalDisponivel foi validado na BUS
                    if (!_da.NumeroCancelado(entidade.Numero))
                    {
                        Validacao.Add(Mensagem.EmissaoCFO.NumeroCancelado);
                        return(false);
                    }
                }
            }

            if (entidade.EmpreendimentoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.EmpreendimentoObrigatorio);
            }
            else
            {
                ResponsavelTecnico responsavel = _da.ObterResponsavelUC(entidade.EmpreendimentoId);
                if (responsavel.Id <= 0)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelDessassociadoUC);
                }
                else
                {
                    if (!string.IsNullOrEmpty(responsavel.DataValidadeART) && DateTime.Parse(responsavel.DataValidadeART) < DateTime.Today)
                    {
                        Validacao.Add(Mensagem.EmissaoCFOC.DataValidadeARTMenorAtual);
                    }
                }
            }

            if (entidade.Produtos.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoObrigatorio);
            }
            else
            {
                if (entidade.Produtos.Count > 5)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.LimiteMaximo);
                }
                else
                {
                    entidade.Produtos.ForEach(produto =>
                    {
                        ValidarProduto(entidade.Id, entidade.EmpreendimentoId, produto);
                    });
                }
            }

            if (entidade.Pragas.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.PragaAssociadaCulturaObrigatorio);
            }
            else
            {
                entidade.Pragas.ForEach(praga =>
                {
                    ValidarPraga(praga);
                });
            }

            if (entidade.ProdutoEspecificacao <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoEspecificacaoObrigatorio);
            }

            if (entidade.PartidaLacradaOrigem && string.IsNullOrEmpty(entidade.NumeroLacre) && string.IsNullOrEmpty(entidade.NumeroPorao) && string.IsNullOrEmpty(entidade.NumeroContainer))
            {
                Validacao.Add(Mensagem.EmissaoCFOC.LacrePoraoConteinerObrigatorio);
            }

            if (entidade.ValidadeCertificado <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeCertificadoObrigatorio);
            }
            else if (entidade.ValidadeCertificado > 30)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeCertificadoMaxima);
            }

            if (entidade.MunicipioEmissaoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.MunicipioEmissaoObrigatorio);
            }

            return(Validacao.EhValido);
        }
Example #8
0
 public ActionResult AdicionarResponsavelTecnico(List <ResponsavelTecnico> responsavelTecnicoLista, ResponsavelTecnico responsavelTecnico)
 {
     _validar.ValidarResponsavelTecnico(responsavelTecnicoLista, responsavelTecnico);
     return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
 }
Example #9
0
        public UnidadeConsolidacao ObterHistorico(int id, string tid, bool simplificado = false, BancoDeDados banco = null)
        {
            UnidadeConsolidacao caracterizacao = new UnidadeConsolidacao();
            int hst = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, EsquemaCredenciadoBanco))
            {
                Comando comando = bancoDeDados.CriarComando(@"
				select c.id, c.tid, c.interno_id, c.interno_tid, c.empreendimento_id, c.possui_codigo_uc, c.codigo_uc, c.local_livro_disponivel, 
				c.tipo_apresentacao_produto from {0}hst_crt_unidade_consolidacao c where c.unidade_consolidacao = :id and c.tid = :tid"                , EsquemaCredenciadoBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, tid);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        hst = reader.GetValue <int>("id");

                        caracterizacao.Id            = id;
                        caracterizacao.CredenciadoID = id;
                        caracterizacao.Tid           = reader.GetValue <string>("tid");
                        caracterizacao.InternoId     = reader.GetValue <int>("interno_id");
                        caracterizacao.InternoTid    = reader.GetValue <string>("interno_tid");

                        caracterizacao.Empreendimento.Id    = reader.GetValue <int>("empreendimento_id");
                        caracterizacao.PossuiCodigoUC       = reader.GetValue <bool>("possui_codigo_uc");
                        caracterizacao.CodigoUC             = reader.GetValue <long>("codigo_uc");
                        caracterizacao.LocalLivroDisponivel = reader.GetValue <string>("local_livro_disponivel");
                        caracterizacao.TipoApresentacaoProducaoFormaIdentificacao = reader.GetValue <string>("tipo_apresentacao_produto");
                    }

                    reader.Close();
                }

                if (caracterizacao.Id < 1 || simplificado)
                {
                    return(caracterizacao);
                }

                #region Cultivares

                comando = bancoDeDados.CriarComando(@"
				select c.unid_consoli_cultivar_id id, c.tid, c.cultura_id, cu.texto cultura_texto, c.cultivar_id, cc.cultivar_nome, c.capacidade_mes, c.unidade_medida_id, c.unidade_medida_texto 
				from hst_crt_unidade_cons_cultivar c, hst_cultura cu, hst_cultura_cultivar cc where cu.cultura_id = c.cultura_id and cu.tid = c.cultura_tid and cc.cultivar_id(+) = c.cultivar_id 
				and cc.tid(+) = c.cultivar_tid and c.id_hst = :id"                , EsquemaCredenciadoBanco);

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

                Cultivar cultivar = null;
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        cultivar = new Cultivar();

                        cultivar.IdRelacionamento = reader.GetValue <int>("id");
                        cultivar.Tid                = reader.GetValue <string>("tid");
                        cultivar.CulturaId          = reader.GetValue <int>("cultura_id");
                        cultivar.CulturaTexto       = reader.GetValue <string>("cultura_texto");
                        cultivar.Id                 = reader.GetValue <int>("cultivar_id");
                        cultivar.Nome               = reader.GetValue <string>("cultivar_nome");
                        cultivar.CapacidadeMes      = reader.GetValue <decimal>("capacidade_mes");
                        cultivar.UnidadeMedida      = reader.GetValue <int>("unidade_medida_id");
                        cultivar.UnidadeMedidaTexto = reader.GetValue <string>("unidade_medida_texto");

                        caracterizacao.Cultivares.Add(cultivar);
                    }

                    reader.Close();
                }

                #endregion

                #region Responsáveis Técnicos

                comando = bancoDeDados.CriarComando(@"
				select distinct 
					c.unid_consoli_resp_tec_id id,
					c.responsavel_tecnico_id,
					c.numero_hab_cfo_cfoc,
					c.numero_art,
					c.art_cargo_funcao,
					c.data_validade_art,
					c.tid,
					nvl(tp.nome, tp.razao_social) nome_razao,
					nvl(tp.cpf, tp.cnpj) cpf_cnpj,
					pf.texto profissao,
					oc.orgao_sigla,
					pp.registro,
					(select h.extensao_habilitacao
						from hst_hab_emi_cfo_cfoc h
						where h.responsavel_id = c.responsavel_tecnico_id
						and h.responsavel_tid = c.responsavel_tecnico_tid
						and h.data_execucao =
							(select max(hh.data_execucao)
							from hst_hab_emi_cfo_cfoc hh
							where hh.responsavel_id = h.responsavel_id
							and hh.responsavel_tid = h.responsavel_tid
							and hh.data_execucao <=
								(select hc.data_execucao
									from hst_crt_unidade_consolidacao hc
									where hc.id = c.id_hst))) extensao_habilitacao
				from hst_crt_unida_conso_resp_tec c,
					hst_credenciado               tc,
					hst_pessoa                    tp,
					hst_pessoa_profissao          pp,
					hst_profissao                 pf,
					tab_orgao_classe              oc
				where tc.credenciado_id = c.responsavel_tecnico_id
				and tc.tid = c.responsavel_tecnico_tid
				and tp.pessoa_id = tc.pessoa_id
				and tp.tid = tc.pessoa_tid
				and pp.id_hst(+) = tp.id
				and pf.profissao_id(+) = pp.profissao_id
				and pf.tid(+) = pp.profissao_tid
				and oc.id(+) = pp.orgao_classe_id
				and c.id_hst = :id"                , EsquemaBanco, EsquemaCredenciadoBanco);

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

                ResponsavelTecnico responsavel = null;
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        responsavel = new ResponsavelTecnico();
                        responsavel.IdRelacionamento = reader.GetValue <int>("id");
                        responsavel.Id             = reader.GetValue <int>("responsavel_tecnico_id");
                        responsavel.NomeRazao      = reader.GetValue <string>("nome_razao");
                        responsavel.CpfCnpj        = reader.GetValue <string>("cpf_cnpj");
                        responsavel.CFONumero      = reader.GetValue <string>("numero_hab_cfo_cfoc");
                        responsavel.NumeroArt      = reader.GetValue <string>("numero_art");
                        responsavel.ArtCargoFuncao = reader.GetValue <bool>("art_cargo_funcao");

                        responsavel.ProfissaoTexto   = reader.GetValue <string>("profissao");
                        responsavel.OrgaoClasseSigla = reader.GetValue <string>("orgao_sigla");
                        responsavel.NumeroRegistro   = reader.GetValue <string>("registro");

                        responsavel.DataValidadeART = reader.GetValue <string>("data_validade_art");
                        if (!string.IsNullOrEmpty(responsavel.DataValidadeART))
                        {
                            responsavel.DataValidadeART = Convert.ToDateTime(responsavel.DataValidadeART).ToShortDateString();
                        }

                        if (Convert.ToBoolean(reader.GetValue <int>("extensao_habilitacao")))
                        {
                            responsavel.CFONumero += "-ES";
                        }

                        caracterizacao.ResponsaveisTecnicos.Add(responsavel);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
Example #10
0
        public IProtocolo Obter(int id, bool simplificado = false, bool atividades = false, BancoDeDados banco = null)
        {
            Protocolo protocolo = new Protocolo();
            Documento documento = new Documento();

            if (id <= 0)
            {
                return(new Protocolo());
            }

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Protocolo

                Comando comando = bancoDeDados.CriarComando(@"
					select r.id,
						   r.fiscalizacao,
						   f.situacao fiscalizacao_situacao,
						   r.numero,
						   r.ano,
						   r.nome,
						   r.tipo,
						   r.protocolo,
						   trunc(r.data_criacao) data_criacao,
						   r.numero_autuacao,
						   trunc(r.data_autuacao) data_autuacao,
						   r.volume,
						   r.checagem,
						   r.checagem_pendencia,
						   r.requerimento,
						   to_char(tr.data_criacao, 'dd/mm/yyyy') data_requerimento,
						   tr.situacao requerimento_situacao,
						   r.interessado,
						   nvl(p.nome, p.razao_social) interessado_nome,
						   nvl(p.cpf, p.cnpj) interessado_cpf_cnpj,
						   p.tipo interessado_tipo,
						   lpt.texto tipo_texto,
						   r.empreendimento,
						   e.cnpj empreendimento_cnpj,
						   e.denominador,
						   r.situacao,
						   ls.texto situacao_texto,
						   r.protocolo_associado,
						   r.emposse,
						   r.arquivo,
						   r.tid,
						   r.setor,
						   r.setor_criacao, 
						   lfs.texto fiscalizacao_sit_texto,
						   r.interessado_livre,
						   r.interessado_livre_telefone,
						   r.folhas, r.assunto, r.descricao, r.destinatario, r.destinatario_setor, d.id destinatario_id, 
						   d.tid destinatario_tid, d.nome destinatario_nome, s.id destinatario_setor_id, s.sigla destinatario_setor_sigla, s.nome destinatario_setor_nome
					  from {0}tab_protocolo          r,
						   {0}tab_pessoa             p,
						   {0}tab_fiscalizacao       f,
						   {0}tab_empreendimento     e,
						   {0}lov_protocolo_situacao ls,
						   {0}lov_protocolo_tipo     lpt,
						   {0}tab_requerimento       tr,
						   {0}lov_fiscalizacao_situacao lfs,
						   {0}tab_setor				 s,
						   {0}tab_funcionario		 d
					 where r.interessado = p.id(+)
					   and r.empreendimento = e.id(+)
					   and r.situacao = ls.id
					   and lpt.id = r.tipo
					   and r.requerimento = tr.id(+)
					   and r.fiscalizacao = f.id(+)
					   and f.situacao = lfs.id(+)
					   and r.destinatario_setor = s.id(+)
					   and r.destinatario = d.id(+)
					   and r.id = :id"                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        #region Dados base

                        protocolo.Id  = id;
                        protocolo.Tid = reader["tid"].ToString();

                        if (reader["fiscalizacao"] != null && !Convert.IsDBNull(reader["fiscalizacao"]))
                        {
                            protocolo.Fiscalizacao.Id            = Convert.ToInt32(reader["fiscalizacao"]);
                            protocolo.Fiscalizacao.SituacaoId    = Convert.ToInt32(reader["fiscalizacao_situacao"]);
                            protocolo.Fiscalizacao.SituacaoTexto = reader.GetValue <string>("fiscalizacao_sit_texto");
                        }

                        if (reader["numero"] != null && !Convert.IsDBNull(reader["numero"]))
                        {
                            protocolo.NumeroProtocolo = Convert.ToInt32(reader["numero"]);
                        }

                        if (reader["ano"] != null && !Convert.IsDBNull(reader["ano"]))
                        {
                            protocolo.Ano = Convert.ToInt32(reader["ano"]);
                        }

                        protocolo.NumeroAutuacao = reader["numero_autuacao"].ToString();

                        if (reader["data_autuacao"] != null && !Convert.IsDBNull(reader["data_autuacao"]))
                        {
                            protocolo.DataAutuacao.Data = Convert.ToDateTime(reader["data_autuacao"]);
                        }

                        protocolo.DataCadastro.Data = Convert.ToDateTime(reader["data_criacao"]);

                        if (reader["setor"] != null && !Convert.IsDBNull(reader["setor"]))
                        {
                            protocolo.SetorId = Convert.ToInt32(reader["setor"]);
                        }

                        if (reader["setor_criacao"] != null && !Convert.IsDBNull(reader["setor_criacao"]))
                        {
                            protocolo.SetorCriacaoId = Convert.ToInt32(reader["setor_criacao"]);
                        }

                        if (reader["tipo"] != null && !Convert.IsDBNull(reader["tipo"]))
                        {
                            protocolo.Tipo.Id    = Convert.ToInt32(reader["tipo"]);
                            protocolo.Tipo.Texto = reader["tipo_texto"].ToString();
                        }

                        if (reader["volume"] != null && !Convert.IsDBNull(reader["volume"]))
                        {
                            protocolo.Volume = Convert.ToInt32(reader["volume"]);
                        }

                        if (reader["checagem"] != null && !Convert.IsDBNull(reader["checagem"]))
                        {
                            protocolo.ChecagemRoteiro.Id = Convert.ToInt32(reader["checagem"]);
                        }

                        if (reader["requerimento"] != null && !Convert.IsDBNull(reader["requerimento"]))
                        {
                            protocolo.Requerimento.Id            = Convert.ToInt32(reader["requerimento"]);
                            protocolo.Requerimento.SituacaoId    = Convert.ToInt32(reader["requerimento_situacao"]);
                            protocolo.Requerimento.DataCadastro  = Convert.ToDateTime(reader["data_requerimento"]);
                            protocolo.Requerimento.ProtocoloId   = protocolo.Id.Value;
                            protocolo.Requerimento.ProtocoloTipo = 1;
                        }

                        if (reader["interessado"] != null && !Convert.IsDBNull(reader["interessado"]))
                        {
                            protocolo.Interessado.Id   = Convert.ToInt32(reader["interessado"]);
                            protocolo.Interessado.Tipo = Convert.ToInt32(reader["interessado_tipo"]);

                            if (reader["interessado_tipo"].ToString() == "1")
                            {
                                protocolo.Interessado.Fisica.Nome = reader["interessado_nome"].ToString();
                                protocolo.Interessado.Fisica.CPF  = reader["interessado_cpf_cnpj"].ToString();
                            }
                            else
                            {
                                protocolo.Interessado.Juridica.RazaoSocial = reader["interessado_nome"].ToString();
                                protocolo.Interessado.Juridica.CNPJ        = reader["interessado_cpf_cnpj"].ToString();
                            }
                        }

                        if (reader["interessado_livre"] != null && !Convert.IsDBNull(reader["interessado_livre"]))
                        {
                            protocolo.InteressadoLivre = reader["interessado_livre"].ToString();
                        }
                        if (reader["interessado_livre_telefone"] != null && !Convert.IsDBNull(reader["interessado_livre_telefone"]))
                        {
                            protocolo.InteressadoLivreTelefone = reader["interessado_livre_telefone"].ToString();
                        }
                        if (reader["folhas"] != null && !Convert.IsDBNull(reader["folhas"]))
                        {
                            protocolo.Folhas = Convert.ToInt32(reader["folhas"]);
                        }

                        if (reader["empreendimento"] != null && !Convert.IsDBNull(reader["empreendimento"]))
                        {
                            protocolo.Empreendimento.Id          = Convert.ToInt32(reader["empreendimento"]);
                            protocolo.Empreendimento.Denominador = reader["denominador"].ToString();
                            protocolo.Empreendimento.CNPJ        = reader["empreendimento_cnpj"].ToString();
                        }

                        if (reader["emposse"] != null && !Convert.IsDBNull(reader["emposse"]))
                        {
                            protocolo.Emposse.Id = Convert.ToInt32(reader["emposse"]);
                        }

                        if (reader["situacao"] != null && !Convert.IsDBNull(reader["situacao"]))
                        {
                            protocolo.SituacaoId    = Convert.ToInt32(reader["situacao"]);
                            protocolo.SituacaoTexto = reader["situacao_texto"].ToString();
                        }

                        if (reader["arquivo"] != null && !Convert.IsDBNull(reader["arquivo"]))
                        {
                            protocolo.Arquivo.Id = Convert.ToInt32(reader["arquivo"]);
                        }

                        if (reader["protocolo"] != null && !Convert.IsDBNull(reader["protocolo"]))
                        {
                            protocolo.IsProcesso = Convert.ToInt32(reader["protocolo"]) == 1;
                        }

                        #endregion

                        if (!protocolo.IsProcesso)
                        {
                            documento           = new Documento(protocolo);
                            documento.Nome      = reader["nome"].ToString();
                            documento.Assunto   = reader["assunto"].ToString();
                            documento.Descricao = reader["descricao"].ToString();
                            if (reader["destinatario_id"] != null && !Convert.IsDBNull(reader["destinatario_id"]))
                            {
                                documento.Destinatario.Id = Convert.ToInt32(reader["destinatario_id"]);
                            }
                            documento.Destinatario.Nome = reader["destinatario_nome"].ToString();

                            if (reader["destinatario_setor_id"] != null && !Convert.IsDBNull(reader["destinatario_setor_id"]))
                            {
                                documento.DestinatarioSetor.Id = Convert.ToInt32(reader["destinatario_setor_id"]);
                            }
                            documento.DestinatarioSetor.Nome = reader["destinatario_setor_nome"].ToString();

                            if (reader["protocolo_associado"] != null && !Convert.IsDBNull(reader["protocolo_associado"]))
                            {
                                documento.ProtocoloAssociado = new Protocolo(ObterProtocolo(Convert.ToInt32(reader["protocolo_associado"])));
                            }

                            if (reader["checagem_pendencia"] != null && !Convert.IsDBNull(reader["checagem_pendencia"]))
                            {
                                documento.ChecagemPendencia.Id = Convert.ToInt32(reader["checagem_pendencia"]);
                            }
                        }
                    }

                    reader.Close();
                }

                if (simplificado)
                {
                    if (protocolo.IsProcesso)
                    {
                        return(new Processo(protocolo));
                    }
                    else
                    {
                        return(documento);
                    }
                }

                #endregion

                #region Atividades

                comando = bancoDeDados.CriarComando(@"select b.id, b.atividade, a.atividade atividade_texto, b.situacao atividade_situacao_id,
				(select s.texto from lov_atividade_situacao s where s.id = b.situacao) atividade_situacao_texto, a.setor, b.motivo,
				b.tid from {0}tab_atividade a, {0}tab_protocolo_atividades b where a.id = b.atividade and b.protocolo = :id"                , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Atividade atividade;

                    while (reader.Read())
                    {
                        atividade    = new Atividade();
                        atividade.Id = Convert.ToInt32(reader["atividade"]);
                        atividade.IdRelacionamento = Convert.ToInt32(reader["id"]);
                        atividade.Tid           = reader["tid"].ToString();
                        atividade.NomeAtividade = reader["atividade_texto"].ToString();
                        atividade.SituacaoId    = Convert.ToInt32(reader["atividade_situacao_id"]);
                        atividade.SituacaoTexto = reader["atividade_situacao_texto"].ToString();
                        atividade.SetorId       = Convert.ToInt32(reader["setor"]);
                        atividade.Motivo        = reader["motivo"].ToString();

                        #region Atividades/Finalidades/Modelos

                        comando = bancoDeDados.CriarComando(@"select a.id, a.finalidade, ltf.texto finalidade_texto, a.modelo, tm.nome modelo_nome, 
							a.titulo_anterior_tipo, a.titulo_anterior_id, a.titulo_anterior_numero, a.modelo_anterior_id, a.modelo_anterior_nome, a.modelo_anterior_sigla, a.orgao_expedidor
							from {0}tab_protocolo_ativ_finalida a, {0}tab_titulo_modelo tm, {0}lov_titulo_finalidade ltf where a.modelo = tm.id and a.finalidade = ltf.id(+) 
							and a.protocolo_ativ = :id"                            , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Finalidade fin;

                            while (readerAux.Read())
                            {
                                fin = new Finalidade();

                                fin.IdRelacionamento = Convert.ToInt32(readerAux["id"]);

                                fin.OrgaoExpedidor = readerAux["orgao_expedidor"].ToString();

                                if (readerAux["finalidade"] != DBNull.Value)
                                {
                                    fin.Id    = Convert.ToInt32(readerAux["finalidade"]);
                                    fin.Texto = readerAux["finalidade_texto"].ToString();
                                }

                                if (readerAux["modelo"] != DBNull.Value)
                                {
                                    fin.TituloModelo      = Convert.ToInt32(readerAux["modelo"]);
                                    fin.TituloModeloTexto = readerAux["modelo_nome"].ToString();
                                }

                                if (readerAux["modelo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloModeloAnteriorId = Convert.ToInt32(readerAux["modelo_anterior_id"]);
                                }

                                fin.TituloModeloAnteriorTexto = readerAux["modelo_anterior_nome"].ToString();
                                fin.TituloModeloAnteriorSigla = readerAux["modelo_anterior_sigla"].ToString();

                                if (readerAux["titulo_anterior_tipo"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorTipo = Convert.ToInt32(readerAux["titulo_anterior_tipo"]);
                                }

                                if (readerAux["titulo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorId = Convert.ToInt32(readerAux["titulo_anterior_id"]);
                                }

                                fin.TituloAnteriorNumero = readerAux["titulo_anterior_numero"].ToString();
                                fin.EmitidoPorInterno    = (fin.TituloAnteriorTipo != 3);

                                atividade.Finalidades.Add(fin);
                            }
                            readerAux.Close();
                        }

                        #endregion

                        protocolo.Atividades.Add(atividade);
                    }

                    reader.Close();
                }

                if (atividades)
                {
                    if (protocolo.IsProcesso)
                    {
                        return(new Processo(protocolo));
                    }
                    else
                    {
                        return(documento);
                    }
                }

                #endregion

                #region Responsáveis

                comando = bancoDeDados.CriarComando(@"select pr.id, pr.responsavel, pr.funcao, nvl(p.nome, p.razao_social) nome, pr.numero_art, 
				nvl(p.cpf, p.cnpj) cpf_cnpj, p.tipo from {0}tab_protocolo_responsavel pr, {0}tab_pessoa p where pr.responsavel = p.id and pr.protocolo = :protocolo"                , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ResponsavelTecnico responsavel;
                    while (reader.Read())
                    {
                        responsavel = new ResponsavelTecnico();
                        responsavel.IdRelacionamento = Convert.ToInt32(reader["id"]);
                        responsavel.Id        = Convert.ToInt32(reader["responsavel"]);
                        responsavel.Funcao    = Convert.ToInt32(reader["funcao"]);
                        responsavel.CpfCnpj   = reader["cpf_cnpj"].ToString();
                        responsavel.NomeRazao = reader["nome"].ToString();
                        responsavel.NumeroArt = reader["numero_art"].ToString();
                        protocolo.Responsaveis.Add(responsavel);
                    }
                    reader.Close();
                }

                #endregion

                #region Assinantes
                comando = bancoDeDados.CriarComando(@"select ta.id, ta.protocolo, f.id func_id, f.nome func_nome, ta.cargo, c.nome cargo_nome, ta.tid from tab_protocolo_assinantes ta, tab_funcionario f, tab_cargo c where 
					ta.funcionario = f.id and ta.cargo = c.id and ta.protocolo = :protocolo"                    , EsquemaBanco);
                comando.AdicionarParametroEntrada("protocolo", id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        TituloAssinante item = new TituloAssinante();
                        item.Id                   = Convert.ToInt32(reader["id"]);
                        item.Tid                  = reader["tid"].ToString();
                        item.FuncionarioId        = Convert.ToInt32(reader["func_id"]);
                        item.FuncionarioNome      = reader["func_nome"].ToString();
                        item.FuncionarioCargoId   = Convert.ToInt32(reader["cargo"]);
                        item.FuncionarioCargoNome = reader["cargo_nome"].ToString();
                        item.Selecionado          = true;

                        if (reader["cargo"] != null && !Convert.IsDBNull(reader["cargo"]))
                        {
                            item.FuncionarioCargoId = Convert.ToInt32(reader["cargo"]);
                        }

                        documento.Assinantes.Add(item);
                    }
                    reader.Close();
                }
                #endregion
            }

            if (protocolo.IsProcesso)
            {
                return(new Processo(protocolo));
            }
            else
            {
                return(documento);
            }
        }
        internal Requerimento Obter(int id, BancoDeDados bancoCredenciado, bool simplificado = false)
        {
            Requerimento requerimento = new Requerimento();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(bancoCredenciado, UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();

                #region Requerimento

                Comando comando = bancoDeDados.CriarComando(@"select r.id, r.numero, trunc(r.data_criacao) data_criacao, r.interessado, r.tid,
				nvl(p.nome, p.razao_social) interessado_nome, nvl(p.cpf, p.cnpj) interessado_cpf_cnpj, p.tipo interessado_tipo, r.empreendimento, e.codigo empreendimento_codigo, 
				e.cnpj empreendimento_cnpj, e.denominador, e.interno empreendimento_interno, r.situacao, r.agendamento, r.setor, r.informacoes, r.credenciado 
				from {0}tab_requerimento r, {0}tab_pessoa p, {0}tab_empreendimento e where r.interessado = p.id(+) and r.empreendimento = e.id(+) and r.id = :id"                , UsuarioCredenciado);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        requerimento.Id            = id;
                        requerimento.Tid           = reader["tid"].ToString();
                        requerimento.DataCadastro  = Convert.ToDateTime(reader["data_criacao"]);
                        requerimento.IsCredenciado = true;
                        requerimento.CredenciadoId = Convert.ToInt32(reader["credenciado"]);

                        if (reader["setor"] != null && !Convert.IsDBNull(reader["setor"]))
                        {
                            requerimento.SetorId = Convert.ToInt32(reader["setor"]);
                        }

                        if (reader["agendamento"] != null && !Convert.IsDBNull(reader["agendamento"]))
                        {
                            requerimento.AgendamentoVistoria = Convert.ToInt32(reader["agendamento"]);
                        }

                        if (reader["interessado"] != null && !Convert.IsDBNull(reader["interessado"]))
                        {
                            requerimento.Interessado.SelecaoTipo = (int)eExecutorTipo.Credenciado;
                            requerimento.Interessado.Id          = Convert.ToInt32(reader["interessado"]);
                            requerimento.Interessado.Tipo        = Convert.ToInt32(reader["interessado_tipo"]);

                            if (reader["interessado_tipo"].ToString() == "1")
                            {
                                requerimento.Interessado.Fisica.Nome = reader["interessado_nome"].ToString();
                                requerimento.Interessado.Fisica.CPF  = reader["interessado_cpf_cnpj"].ToString();
                            }
                            else
                            {
                                requerimento.Interessado.Juridica.RazaoSocial = reader["interessado_nome"].ToString();
                                requerimento.Interessado.Juridica.CNPJ        = reader["interessado_cpf_cnpj"].ToString();
                            }
                        }

                        if (reader["empreendimento"] != null && !Convert.IsDBNull(reader["empreendimento"]))
                        {
                            requerimento.Empreendimento.SelecaoTipo = (int)eExecutorTipo.Credenciado;
                            requerimento.Empreendimento.Id          = Convert.ToInt32(reader["empreendimento"]);
                            requerimento.Empreendimento.Codigo      = reader.GetValue <int>("empreendimento_codigo");
                            requerimento.Empreendimento.Denominador = reader["denominador"].ToString();
                            requerimento.Empreendimento.CNPJ        = reader["empreendimento_cnpj"].ToString();
                            requerimento.Empreendimento.InternoId   = reader.GetValue <int?>("empreendimento_interno");
                        }

                        if (reader["situacao"] != null && !Convert.IsDBNull(reader["situacao"]))
                        {
                            requerimento.SituacaoId = Convert.ToInt32(reader["situacao"]);
                        }

                        requerimento.Informacoes = reader["informacoes"].ToString();
                    }

                    reader.Close();
                }

                #endregion

                if (requerimento.Id <= 0 || simplificado)
                {
                    return(requerimento);
                }

                #region Atividades

                comando = bancoDeDados.CriarComando(@"select a.id, a.atividade, ta.situacao, a.tid from {0}tab_requerimento_atividade a, tab_atividade ta where ta.id = a.atividade and a.requerimento = :id", UsuarioCredenciado);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Atividade atividade;

                    while (reader.Read())
                    {
                        atividade                  = new Atividade();
                        atividade.Id               = Convert.ToInt32(reader["atividade"]);
                        atividade.SituacaoId       = Convert.ToInt32(reader["situacao"]);
                        atividade.IdRelacionamento = Convert.ToInt32(reader["id"]);
                        atividade.Tid              = reader["tid"].ToString();

                        #region Atividades/Finalidades/Modelos
                        comando = bancoDeDados.CriarComando(@"select a.id, a.finalidade, a.modelo, a.titulo_anterior_tipo, a.titulo_anterior_id,
						a.titulo_anterior_numero, a.modelo_anterior_id, a.modelo_anterior_nome, a.modelo_anterior_sigla, a.orgao_expedidor 
						from {0}tab_requerimento_ativ_finalida a where a.requerimento_ativ = :id"                        , UsuarioCredenciado);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Finalidade fin;

                            while (readerAux.Read())
                            {
                                fin = new Finalidade();

                                fin.IdRelacionamento = Convert.ToInt32(readerAux["id"]);


                                fin.OrgaoExpedidor = readerAux["orgao_expedidor"].ToString();

                                if (readerAux["finalidade"] != DBNull.Value)
                                {
                                    fin.Id = Convert.ToInt32(readerAux["finalidade"]);
                                }

                                if (readerAux["modelo"] != DBNull.Value)
                                {
                                    fin.TituloModelo = Convert.ToInt32(readerAux["modelo"]);
                                }

                                if (readerAux["modelo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloModeloAnteriorId = Convert.ToInt32(readerAux["modelo_anterior_id"]);
                                }

                                fin.TituloModeloAnteriorTexto = readerAux["modelo_anterior_nome"].ToString();
                                fin.TituloModeloAnteriorSigla = readerAux["modelo_anterior_sigla"].ToString();

                                if (readerAux["titulo_anterior_tipo"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorTipo = Convert.ToInt32(readerAux["titulo_anterior_tipo"]);
                                }

                                if (readerAux["titulo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorId = Convert.ToInt32(readerAux["titulo_anterior_id"]);
                                }

                                fin.TituloAnteriorNumero = readerAux["titulo_anterior_numero"].ToString();
                                fin.EmitidoPorInterno    = (fin.TituloAnteriorTipo != 3);
                                atividade.Finalidades.Add(fin);
                            }
                            readerAux.Close();
                        }
                        #endregion

                        requerimento.Atividades.Add(atividade);
                    }

                    reader.Close();
                }

                #endregion

                #region Responsáveis

                comando = bancoDeDados.CriarComando(@"select pr.id, pr.responsavel, pr.funcao, nvl(p.nome, p.razao_social) nome, pr.numero_art, 
				nvl(p.cpf, p.cnpj) cpf_cnpj, p.tipo from {0}tab_requerimento_responsavel pr, {0}tab_pessoa p where pr.responsavel = p.id and pr.requerimento = :requerimento"                , UsuarioCredenciado);

                comando.AdicionarParametroEntrada("requerimento", requerimento.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ResponsavelTecnico responsavel;
                    while (reader.Read())
                    {
                        responsavel = new ResponsavelTecnico();
                        responsavel.IdRelacionamento = reader.GetValue <int>("id");
                        responsavel.Id        = reader.GetValue <int>("responsavel");
                        responsavel.Funcao    = reader.GetValue <int>("funcao");
                        responsavel.CpfCnpj   = reader.GetValue <string>("cpf_cnpj");
                        responsavel.NomeRazao = reader.GetValue <string>("nome");
                        responsavel.NumeroArt = reader.GetValue <string>("numero_art");

                        if (reader.GetValue <int>("tipo") == PessoaTipo.JURIDICA)
                        {
                            comando = bancoDeDados.CriarComando(@"select pr.id, pr.pessoa, pr.representante, p.nome, p.cpf, p.tipo 
							from {0}tab_pessoa_representante pr, {0}tab_pessoa p where pr.representante = p.id and pr.pessoa = :pessoa"                            , UsuarioCredenciado);

                            comando.AdicionarParametroEntrada("pessoa", responsavel.Id, DbType.Int32);

                            using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                            {
                                Pessoa representante;
                                responsavel.Representantes = new List <Pessoa>();
                                while (readerAux.Read())
                                {
                                    representante             = new Pessoa();
                                    representante.Id          = readerAux.GetValue <int>("representante");
                                    representante.Tipo        = readerAux.GetValue <int>("tipo");
                                    representante.Fisica.Nome = readerAux.GetValue <string>("nome");
                                    representante.Fisica.CPF  = readerAux.GetValue <string>("cpf");
                                    responsavel.Representantes.Add(representante);
                                }
                                readerAux.Close();
                            }
                        }
                        requerimento.Responsaveis.Add(responsavel);
                    }
                    reader.Close();
                }

                #endregion
            }

            return(requerimento);
        }
        internal bool Salvar(EmissaoCFO entidade)
        {
            //Valida a habilitacao antes do salvar o credenciado.

            if (!entidade.TipoNumero.HasValue)
            {
                Validacao.Add(Mensagem.EmissaoCFO.TipoNumeroObrigatorio);
            }
            else
            {
                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Bloco)
                {
                    if (!ValidarNumeroBloco(entidade.Numero, entidade.Id))
                    {
                        return(false);
                    }

                    ValidacoesGenericasBus.DataMensagem(entidade.DataEmissao, "CFO_DataEmissao", "emissão");
                }

                if (entidade.TipoNumero == (int)eDocumentoFitossanitarioTipoNumero.Digital)
                {
                    //VerificarNumeroDigitalDisponivel foi validado na BUS
                    string num_serie = entidade.Serie == null ? entidade.Numero : (entidade.Numero + "/" + entidade.Serie);
                    if (!_da.NumeroCancelado(num_serie))
                    {
                        Validacao.Add(Mensagem.EmissaoCFO.NumeroCancelado);
                        return(false);
                    }
                }
            }

            if (!_da.VerificarProdutorAssociado(entidade.ProdutorId))
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutorNaoEstaMaisAssociado);
            }

            if (!_da.VerificarProdutorAssociadoEmpreendimento(entidade.ProdutorId))
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutorNaoEstaMaisAssociadoEmpreendimento);
            }

            if (entidade.ProdutorId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutorObrigatorio);
            }

            if (entidade.EmpreendimentoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.EmpreendimentoObrigatorio);
            }

            if (entidade.Produtos.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutoObrigatorio);
            }
            else
            {
                if (entidade.Produtos.Count > 5)
                {
                    Validacao.Add(Mensagem.EmissaoCFO.LimiteMaximo);
                }
                else
                {
                    entidade.Produtos.ForEach(produto =>
                    {
                        ResponsavelTecnico responsavel = _da.ObterResponsavelUC(produto.UnidadeProducao);
                        if (!string.IsNullOrEmpty(responsavel.DataValidadeART) && DateTime.Parse(responsavel.DataValidadeART) < DateTime.Today)
                        {
                            Validacao.Add(Mensagem.EmissaoCFO.DataValidadeARTMenorAtual);
                        }

                        ValidarProduto(entidade.Id, entidade.EmpreendimentoId, produto, entidade.Produtos);
                    });
                }
            }

            if (entidade.Pragas.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.PragaAssociadaCulturaObrigatorio);
            }
            else
            {
                entidade.Pragas.ForEach(praga =>
                {
                    ValidarPraga(praga);
                });
            }

            //if (!entidade.PossuiLaudoLaboratorial.HasValue)
            //{
            //    Validacao.Add(Mensagem.EmissaoCFO.PossuiLaudoLaboratorialObrigatorio);
            //}
            //else
            //{
            //    if (entidade.PossuiLaudoLaboratorial.Value)
            //    {
            //        if (string.IsNullOrEmpty(entidade.NomeLaboratorio))
            //        {
            //            Validacao.Add(Mensagem.EmissaoCFO.NomeLaboratorioObrigatorio);
            //        }

            //        if (string.IsNullOrEmpty(entidade.NumeroLaudoResultadoAnalise))
            //        {
            //            Validacao.Add(Mensagem.EmissaoCFO.NumeroLaudoResultadoAnaliseObrigatorio);
            //        }

            //        if (entidade.EstadoId <= 0)
            //        {
            //            Validacao.Add(Mensagem.EmissaoCFO.EstadoObrigatorio);
            //        }

            //        if (entidade.MunicipioId <= 0)
            //        {
            //            Validacao.Add(Mensagem.EmissaoCFO.MunicipioObrigatorio);
            //        }
            //    }
            //}

            if (entidade.ProdutoEspecificacao <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ProdutoEspecificacaoObrigatorio);
            }

            //if (!entidade.PossuiTratamentoFinsQuarentenario.HasValue)
            //{
            //    Validacao.Add(Mensagem.EmissaoCFO.PossuiTratamentoFinsQuarentenarioObrigatorio);
            //}
            //else
            //{
            //    if (entidade.PossuiTratamentoFinsQuarentenario.Value)
            //    {
            //        entidade.TratamentosFitossanitarios.ForEach(tratamento =>
            //        {
            //            ValidarTratamento(tratamento);
            //        });
            //    }
            //}

            if (entidade.PartidaLacradaOrigem && string.IsNullOrEmpty(entidade.NumeroLacre) && string.IsNullOrEmpty(entidade.NumeroPorao) && string.IsNullOrEmpty(entidade.NumeroContainer))
            {
                Validacao.Add(Mensagem.EmissaoCFO.LacrePoraoConteinerObrigatorio);
            }

            if (entidade.ValidadeCertificado <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ValidadeCertificadoObrigatorio);
            }
            else if (entidade.ValidadeCertificado > 30)
            {
                Validacao.Add(Mensagem.EmissaoCFO.ValidadeCertificadoMaxima);
            }

            if (entidade.MunicipioEmissaoId <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFO.MunicipioEmissaoObrigatorio);
            }

            return(Validacao.EhValido);
        }