Exemplo n.º 1
0
        public ActionResult CertidaoDispensaLicenciamentoAmbiental(EspecificidadeVME especificidade)
        {
            var _busLista    = new ListaBus();
            var _busCertidao = new CertidaoDispensaLicenciamentoAmbientalBus();
            List <AtividadeSolicitada> lstAtividades = new List <AtividadeSolicitada>();

            var titulo   = new Titulo();
            var certidao = new CertidaoDispensaLicenciamentoAmbiental();

            string htmlEspecificidade = string.Empty;

            if (especificidade.TituloId > 0)
            {
                titulo            = _busTitulo.ObterSimplificado(especificidade.TituloId);
                titulo.Atividades = _busTitulo.ObterAtividades(especificidade.TituloId);
                certidao          = _busCertidao.Obter(especificidade.TituloId) as CertidaoDispensaLicenciamentoAmbiental;

                if (certidao != null)
                {
                    especificidade.AtividadeProcDocReq = certidao.ProtocoloReq;
                }

                lstAtividades = _busAtividade.ObterAtividadesListaReq(titulo.RequerimetoId.GetValueOrDefault());
            }

            CertidaoDispensaLicenciamentoAmbientalVM vm = new CertidaoDispensaLicenciamentoAmbientalVM(certidao, lstAtividades, _busLista.ObterVinculoPropriedade, especificidade.IsVisualizar);

            htmlEspecificidade = ViewModelHelper.RenderPartialViewToString(ControllerContext, "~/Areas/Especificidades/Views/Certidao/CertidaoDispensaLicenciamentoAmbiental.ascx", vm);
            return(Json(new { Msg = Validacao.Erros, EhValido = Validacao.EhValido, @Html = htmlEspecificidade }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
 public CredenciadoIntBus()
 {
     _busCredenciado   = new CredenciadoBus();
     _validar          = new CredenciadoIntValidar();
     _daCredenciado    = new CredenciadoIntDa();
     _daHabilitar      = new HabilitarEmissaoCFOCFOCDa();
     _busPessoa        = new PessoaBus();
     _emailBus         = new EmailBus();
     _busLista         = new ListaBus();
     _busOrgaoParceiro = new OrgaoParceiroConveniadoBus();
 }
Exemplo n.º 3
0
        public static int EstadoDefaultId()
        {
            ListaBus _busLista = new ListaBus();
            Estado   estado    = _busLista.Estados.SingleOrDefault(x => String.Equals(x.Texto, _configSys.Obter <String>(ConfiguracaoSistema.KeyEstadoDefault), StringComparison.InvariantCultureIgnoreCase));

            if (estado != null)
            {
                return(estado.Id);
            }

            return(0);
        }
Exemplo n.º 4
0
 public RequerimentoBus(RequerimentoValidar validacao)
 {
     _validar    = validacao;
     _da         = new RequerimentoDa();
     _empBus     = new EmpreendimentoBus();
     _busPessoa  = new PessoaBus();
     _modeloBus  = new TituloModeloBus(new TituloModeloValidacao());
     _roteiroBus = new RoteiroBus();
     _atividadeConfiguracaoBus = new AtividadeConfiguracaoBus();
     _busLista  = new ListaBus();
     _configSys = new GerenciadorConfiguracao <ConfiguracaoSistema>(new ConfiguracaoSistema());
 }
 public ProcessoController()
 {
     _busProtocolo         = new ProtocoloBus();
     _busLista             = new ListaBus();
     _bus                  = new ProcessoBus();
     _validarJuntarApensar = new JuntarApensarValidar();
     _validar              = new ProcessoValidar();
     _busJuntarApensar     = new JuntarApensarBus();
     _busDoc               = new DocumentoBus();
     _busRequerimento      = new RequerimentoBus(new RequerimentoValidar());
     _busFuncionario       = new FuncionarioBus();
     _busTramitacao        = new TramitacaoBus();
     _busAtividade         = new AtividadeBus();
     _validarFiscalizacao  = new FiscalizacaoValidar();
     _busFiscalizacao      = new FiscalizacaoBus();
 }
Exemplo n.º 6
0
        public List <Lista> ObterSituacoes(int situacao)
        {
            ListaBus listaBus = new ListaBus();

            switch ((eCARSolicitacaoSituacao)situacao)
            {
            case eCARSolicitacaoSituacao.Pendente:
                return(listaBus.CadastroAmbientalRuralSolicitacaoSituacao
                       .Where(x => int.Parse(x.Id) == (int)eCARSolicitacaoSituacao.Invalido).ToList());

            case eCARSolicitacaoSituacao.Valido:
                return(listaBus.CadastroAmbientalRuralSolicitacaoSituacao
                       .Where(x => int.Parse(x.Id) == (int)eCARSolicitacaoSituacao.Invalido).ToList());

            case eCARSolicitacaoSituacao.Suspenso:
                return(listaBus.CadastroAmbientalRuralSolicitacaoSituacao
                       .Where(x => int.Parse(x.Id) == (int)eCARSolicitacaoSituacao.Valido || int.Parse(x.Id) == (int)eCARSolicitacaoSituacao.Invalido).ToList());

            default:
                return(new List <Lista>());
            }
        }
Exemplo n.º 7
0
        public void ValidarProcessoTodosCampos(Processo processo, bool isConversao = false)
        {
            ListaBus      listaBus = new ListaBus();
            ProtocoloTipo configuracaoProtocoloTipo = listaBus.TiposProcesso.FirstOrDefault(x => x.Id == processo.Tipo.Id);

            if (processo.ChecagemRoteiro.Id <= 0 && processo.Requerimento.Id <= 0)
            {
                if (processo.Interessado.Id <= 0)
                {
                    Validacao.Add(Mensagem.Processo.InteressadoObrigatorio);
                }
            }
            else
            {
                if ((configuracaoProtocoloTipo.ChecagemRoteiroObrigatorio && processo.ChecagemRoteiro.Id <= 0) ||
                    processo.Requerimento.Id > 0 && processo.ChecagemRoteiro.Id <= 0)
                {
                    Validacao.Add(Mensagem.Processo.ChecagemObrigatoria);
                    return;
                }

                if (configuracaoProtocoloTipo.FiscalizacaoObrigatorio && processo.Fiscalizacao.Id <= 0)
                {
                    Validacao.Add(Mensagem.Processo.FiscalizacaoObrigatoria);
                }

                if ((configuracaoProtocoloTipo.RequerimentoObrigatorio && processo.Requerimento.Id <= 0) ||
                    processo.ChecagemRoteiro.Id > 0 && processo.Requerimento.Id <= 0)
                {
                    Validacao.Add(Mensagem.Processo.RequerimentoObrigatorio);
                }
                else
                {
                    if (!isConversao)
                    {
                        RequerimentoFinalizado(processo.Requerimento.Id, processo.Id.GetValueOrDefault());
                    }

                    if (processo.Atividades.Count <= 0)
                    {
                        Validacao.Add(Mensagem.Processo.AtividadeObrigatoria);
                    }
                    else
                    {
                        Processo processoBanco = processo.Id.GetValueOrDefault() > 0 ? _da.Obter(processo.Id.Value) as Processo : new Processo();
                        ValidarAtividades(processo.Atividades, (processoBanco.Requerimento.Id != processo.Requerimento.Id));

                        if (processoBanco.Requerimento.Id == processo.Requerimento.Id)
                        {
                            foreach (Atividade atividade in processoBanco.Atividades)
                            {
                                Atividade atividadeAux = processo.Atividades.SingleOrDefault(x => x.Id == atividade.Id);
                                foreach (var finalidade in atividade.Finalidades)
                                {
                                    if (!atividadeAux.Finalidades.Exists(x => x.Id == finalidade.Id) && _atividadeDa.VerificarAtividadeAssociadaTitulo(processoBanco.Id.Value, true, atividade.Id, finalidade.TituloModelo))
                                    {
                                        Validacao.Add(Mensagem.Atividade.FinalidadeAssociadaTitulo(finalidade.TituloModeloTexto));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 8
0
        public static int MunicipioDefaultId()
        {
            ListaBus _busLista = new ListaBus();

            return((_busLista.Municipios(_configSys.Obter <String>(ConfiguracaoSistema.KeyEstadoDefault)).SingleOrDefault(x => String.Equals(x.Texto, _configSys.Obter <String>(ConfiguracaoSistema.KeyMunicipioDefault), StringComparison.InvariantCultureIgnoreCase)) ?? new Municipio()).Id);
        }
Exemplo n.º 9
0
        public bool Salvar(Documento documento)
        {
            try
            {
                documento.Emposse.Id = User.FuncionarioId;

                if (documento.Arquivo == null)
                {
                    documento.Arquivo = new Arquivo();
                }

                bool isEdicao = (documento.Id > 0);

                if (_validar.Salvar(documento))
                {
                    #region Arquivos/Diretorio

                    if (documento.Arquivo.Id != null && documento.Arquivo.Id == 0)
                    {
                        ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);
                        documento.Arquivo = _busArquivo.Copiar(documento.Arquivo);
                    }

                    #endregion

                    #region Setar Valores

                    ListaBus      listaBus     = new ListaBus();
                    ProtocoloTipo configuracao = listaBus.TiposDocumento.FirstOrDefault(x => x.Id == documento.Tipo.Id);

                    documento.ProtocoloAssociado = (configuracao.PossuiProcesso || configuracao.ProcessoObrigatorio) ? documento.ProtocoloAssociado : new Protocolo();
                    documento.ChecagemPendencia  = (configuracao.PossuiChecagemPendencia || configuracao.ChecagemPendenciaObrigatorio) ? documento.ChecagemPendencia : new ChecagemPendencia();
                    documento.ChecagemRoteiro    = (configuracao.PossuiChecagemRoteiro || configuracao.ChecagemRoteiroObrigatorio) ? documento.ChecagemRoteiro : new ChecagemRoteiro();
                    documento.Requerimento       = (configuracao.PossuiRequerimento || configuracao.RequerimentoObrigatorio) ? documento.Requerimento : new Requerimento();

                    #endregion

                    GerenciadorTransacao.ObterIDAtual();

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

                        #region Arquivos/Banco

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

                        #endregion

                        ChecagemPendenciaBus _checagemPendenciaBus = new ChecagemPendenciaBus();

                        using (BancoDeDados bancoDeDadosCredenciado = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                        {
                            bancoDeDadosCredenciado.IniciarTransacao();

                            #region Alterar Situacao Requerimento

                            if (documento.Id.HasValue)
                            {
                                Documento docOriginal = _da.ObterSimplificado(documento.Id.Value) as Documento;
                                docOriginal.Requerimento = _busRequerimento.ObterSimplificado(docOriginal.Requerimento.Id);

                                if (docOriginal.Requerimento.Id != documento.Requerimento.Id)
                                {
                                    AlterarRequerimentoSituacao(docOriginal, banco: bancoDeDados);

                                    if (docOriginal.Requerimento.IsRequerimentoDigital)
                                    {
                                        CARSolicitacaoBus carSolicitacaoCredenciadoBus = new CARSolicitacaoBus();
                                        carSolicitacaoCredenciadoBus.DesassociarProtocolo(new CARSolicitacao()
                                        {
                                            Requerimento = docOriginal.Requerimento
                                        }, bancoDeDadosCredenciado);

                                        if (!_busProjetoDigital.AlterarSituacao(docOriginal.Requerimento.Id, eProjetoDigitalSituacao.AguardandoProtocolo, bancoDeDadosCredenciado))
                                        {
                                            bancoDeDados.Rollback();
                                            return(false);
                                        }
                                    }
                                }
                            }

                            #endregion

                            Documento documentoOriginal = new Documento();
                            if (documento.Id != null && documento.Id.GetValueOrDefault() > 0)
                            {
                                documentoOriginal = ObterSimplificado(documento.Id.Value);
                            }

                            #region Titulo

                            if (documento.ChecagemPendencia.Id > 0 && documento.Id.GetValueOrDefault() == 0)
                            {
                                documento.ChecagemPendencia = _checagemPendenciaBus.Obter(documento.ChecagemPendencia.Id);

                                TituloBus tituloBus = new TituloBus();
                                Titulo    titulo    = tituloBus.Obter(documento.ChecagemPendencia.TituloId);

                                if (titulo.Situacao.Id != 5)                                //5 - Encerrado
                                {
                                    titulo.DataEncerramento.Data = DateTime.Now;
                                    titulo.MotivoEncerramentoId  = 7;                                   //Encerrado
                                    TituloSituacaoBus tituloSituacaoBus = new TituloSituacaoBus();
                                    tituloSituacaoBus.AlterarSituacao(titulo, (int)eAlterarSituacaoAcao.Encerrar, bancoDeDados);

                                    if (Validacao.EhValido)
                                    {
                                        Validacao.Erros.Clear();
                                    }
                                }

                                #region Itens da Analise

                                AnaliseItensBus busAnalise = new AnaliseItensBus(new AnaliseItensValidar());

                                AnaliseItem analiseItem = busAnalise.ObterAnaliseTitulo(documento.ChecagemPendencia.TituloId);
                                analiseItem = busAnalise.Obter(analiseItem.Id, bancoDeDados);
                                //int setorId = _busProc.ObterSetor(analiseItem.Protocolo.Id);

                                foreach (Item item in analiseItem.Itens)
                                {
                                    if (documento.ChecagemPendencia.Itens.Exists(x => x.Id == item.Id))
                                    {
                                        item.Analista = User.Name;
                                        item.Situacao = (int)eAnaliseItemSituacao.Recebido;
                                        item.Motivo   = String.Empty;
                                        item.Recebido = true;
                                        item.Editado  = true;
                                        //item.SetorId = setorId;
                                        item.DataAnalise = DateTime.Now.ToString();
                                    }
                                }

                                AnaliseItensDa _daAnalise = new AnaliseItensDa();
                                _daAnalise.Salvar(analiseItem, bancoDeDados);

                                #endregion
                            }

                            #endregion

                            #region Atividade

                            List <Atividade> lstAtividadesAtual = null;
                            if ((documento.Id ?? 0) > 0)
                            {
                                lstAtividadesAtual = _da.ObterAtividades(documento.Id.GetValueOrDefault(), bancoDeDados).Atividades;
                            }

                            if (documento.Atividades != null && documento.Atividades.Count > 0)
                            {
                                documento.Atividades.ForEach(x =>
                                {
                                    x.Protocolo.Id         = documento.Id.GetValueOrDefault();
                                    x.Protocolo.IsProcesso = false;
                                });

                                AtividadeBus atividadeBus = new AtividadeBus();
                                atividadeBus.AlterarSituacaoProcDoc(documento.Atividades, lstAtividadesAtual, bancoDeDados);
                                atividadeBus.TituloAnteriores(documento.Atividades, lstAtividadesAtual, bancoDeDados);
                            }

                            #endregion

                            _da.Salvar(documento, bancoDeDados);

                            #region Checagens

                            // cadastrando, seta situação da checagem de itens de roteiro/pendencia como protocolada
                            if (documentoOriginal.Id.GetValueOrDefault() <= 0)
                            {
                                _busCheckList.AlterarSituacao(documento.ChecagemRoteiro.Id, 2, bancoDeDados); //protocolada

                                documento.ChecagemPendencia.SituacaoId = 2;                                   //protocolada
                                _checagemPendenciaBus.AlterarSituacao(documento.ChecagemPendencia, bancoDeDados);
                            }
                            else                             // editando documento
                            {                                // se checagem de itens de roteiro foi alterada, setar o status da antiga como finalizada e setar o status da nova como protocolada
                                if (documento.ChecagemRoteiro.Id != documentoOriginal.ChecagemRoteiro.Id)
                                {
                                    _busCheckList.AlterarSituacao(documentoOriginal.ChecagemRoteiro.Id, 1, bancoDeDados);                            //finalizada
                                    _busCheckList.AlterarSituacao(documento.ChecagemRoteiro.Id, 2, bancoDeDados);                                    //protocolada
                                }
                            }

                            #endregion

                            documento.Requerimento = _busRequerimento.ObterSimplificado(documento.Requerimento.Id);

                            if (documento.Requerimento.IsRequerimentoDigital)
                            {
                                CARSolicitacaoBus carSolicitacaoCredenciadoBus = new CARSolicitacaoBus();
                                carSolicitacaoCredenciadoBus.AssociarProtocolo(new CARSolicitacao()
                                {
                                    Requerimento = documento.Requerimento
                                }, bancoDeDadosCredenciado);

                                if (documentoOriginal.Requerimento.Id != documento.Requerimento.Id)
                                {
                                    if (!_busProjetoDigital.AlterarSituacao(documento.Requerimento.Id, eProjetoDigitalSituacao.AguardandoAnalise, bancoDeDadosCredenciado))
                                    {
                                        bancoDeDados.Rollback();
                                        return(false);
                                    }
                                }
                            }

                            AlterarRequerimentoSituacao(documento, 3, bancoDeDados);                            // Protocolado

                            #region Fiscalizacao

                            if (isEdicao && documento.Fiscalizacao.Id != documentoOriginal.Fiscalizacao.Id && documentoOriginal.Fiscalizacao.Id > 0)
                            {
                                documentoOriginal.Fiscalizacao.SituacaoNovaTipo      = (int)eFiscalizacaoSituacao.CadastroConcluido;
                                documentoOriginal.Fiscalizacao.SituacaoNovaData.Data = DateTime.Now;
                                documentoOriginal.Fiscalizacao.SituacaoAtualTipo     = documento.Fiscalizacao.SituacaoId;

                                _busFiscalizacao.AlterarSituacaoProcDoc(documentoOriginal.Fiscalizacao, bancoDeDados);
                            }

                            if (documento.Fiscalizacao.Id != documentoOriginal.Fiscalizacao.Id)
                            {
                                documento.Fiscalizacao.SituacaoNovaTipo      = (int)eFiscalizacaoSituacao.Protocolado;
                                documento.Fiscalizacao.SituacaoNovaData.Data = DateTime.Now;
                                documento.Fiscalizacao.SituacaoAtualTipo     = documento.Fiscalizacao.SituacaoId;

                                _busFiscalizacao.AlterarSituacaoProcDoc(documento.Fiscalizacao, bancoDeDados);
                            }

                            #endregion

                            //sempre no final esse if
                            if (!Validacao.EhValido)
                            {
                                bancoDeDadosCredenciado.Rollback();
                                bancoDeDados.Rollback();
                                return(false);
                            }

                            bancoDeDadosCredenciado.Commit();
                        }

                        bancoDeDados.Commit();
                    }

                    Mensagem msgSucesso = Mensagem.Documento.Salvar(documento.Numero);
                    if (isEdicao)
                    {
                        msgSucesso = Mensagem.Documento.Editar;
                    }

                    Validacao.Add(msgSucesso);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 10
0
        public List <Municipio> ObterLocais()
        {
            ListaBus busLista = new ListaBus();

            return(busLista.Municipios(_busLista.EstadoDefault));
        }
Exemplo n.º 11
0
        public bool VerificarHabilitarEmissaoCFOCFOC(HabilitarEmissaoCFOCFOC habilitar)
        {
            if (habilitar.Responsavel.Id == 0)
            {
                Validacao.Add(Msg.ResponsavelObrigatorio);
            }

            int auxiliar = 0;

            if (int.TryParse(habilitar.NumeroHabilitacao, out auxiliar) && String.IsNullOrEmpty(habilitar.NumeroHabilitacao))
            {
                Validacao.Add(Msg.NumeroHabilitacaoObrigatorio);
            }
            else
            {
                if (habilitar.NumeroHabilitacao.Length != 8)
                {
                    Validacao.Add(Msg.NumeroHabilitacaoTamanhoInvalido);
                }
            }

            if (String.IsNullOrEmpty(habilitar.ValidadeRegistro))
            {
                Validacao.Add(Msg.ValidadeRegistroObrigatorio);
            }
            else
            {
                if (!ValidacoesGenericasBus.ValidarData(habilitar.ValidadeRegistro))
                {
                    Validacao.Add(Msg.ValidadeRegistroInvalida);
                }
            }

            if (String.IsNullOrEmpty(habilitar.NumeroDua))
            {
                Validacao.Add(Msg.NumeroDuaObrigatorio);
            }

            if (Convert.ToBoolean(habilitar.ExtensaoHabilitacao))
            {
                if (string.IsNullOrWhiteSpace(habilitar.NumeroHabilitacaoOrigem))
                {
                    Validacao.Add(Msg.NumeroHabilitacaoOrigemObrigatorio);
                }
                else
                {
                    if (habilitar.NumeroHabilitacaoOrigem.Length != 8)
                    {
                        Validacao.Add(Msg.NumeroHabilitacaoOrigemTamanhoInvalido);
                    }

                    if (habilitar.NumeroHabilitacao != habilitar.NumeroHabilitacaoOrigem)
                    {
                        Validacao.Add(Msg.NumeroHabilitacaoOrigemInvalido);
                    }
                }
            }

            if (habilitar.UF == 0)
            {
                Validacao.Add(Msg.UFObrigatorio);
            }
            else
            {
                ListaBus listaBus     = new ListaBus();
                Estado   estadoPadrao = listaBus.Estados.SingleOrDefault(x => String.Equals(x.Texto, _configSys.Obter <String>(ConfiguracaoSistema.KeyEstadoDefault), StringComparison.InvariantCultureIgnoreCase));

                if (estadoPadrao.Id != habilitar.UF && string.IsNullOrWhiteSpace(habilitar.NumeroVistoCrea))
                {
                    Validacao.Add(Msg.NumeroVistoCreaObrigatorio);
                }
            }

            if (habilitar.Pragas.Count == 0)
            {
                Validacao.Add(Msg.PragaObrigatorio);
            }

            foreach (var item in habilitar.Pragas)
            {
                if (String.IsNullOrEmpty(item.DataInicialHabilitacao))
                {
                    Validacao.Add(Msg.DataInicialHabilitacaoObrigatoria);
                }
                else
                {
                    if (!ValidacoesGenericasBus.ValidarData(item.DataInicialHabilitacao))
                    {
                        Validacao.Add(Msg.DataInicialHabilitacaoInvalida);
                    }
                    else if (Convert.ToDateTime(item.DataInicialHabilitacao) > DateTime.Today.AddDays(1).Subtract(TimeSpan.FromSeconds(1)))
                    {
                        Validacao.Add(Msg.DataInicialHabilitacaoMaiorAtual);
                    }
                }

                if (String.IsNullOrEmpty(item.DataFinalHabilitacao))
                {
                    Validacao.Add(Msg.DataFinalHabilitacaoObrigatorio);
                }
                else
                {
                    if (!ValidacoesGenericasBus.ValidarData(item.DataFinalHabilitacao))
                    {
                        Validacao.Add(Msg.DataFinalHabilitacaoInvalida);
                    }
                }
            }

            return(Validacao.EhValido);
        }
Exemplo n.º 12
0
        public bool Salvar(Documento documento)
        {
            #region Validações Genéricas

            if (documento.SetorId <= 0 && documento.Id.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Mensagem.Documento.SetorObrigatorio);
            }

            if (!documento.DataCadastro.Data.HasValue)
            {
                Validacao.Add(Mensagem.Documento.DataCriacaoObrigatoria);
            }
            else
            {
                if (documento.DataCadastro.Data > DateTime.Today)
                {
                    Validacao.Add(Mensagem.Documento.DataCriacaoMaiorAtual);
                }
            }

            if (documento.Tipo.Id <= 0)
            {
                Validacao.Add(Mensagem.Documento.DocumentoTipoObrigatorio);
            }

            if (documento.Volume.GetValueOrDefault() <= 0 && documento.Tipo.QuantidadeDocumentoObrigatorio)             //Documento Avulso
            {
                Validacao.Add(Mensagem.Documento.QuantidadeDocumentoObrigatoria);
            }

            if (string.IsNullOrEmpty(documento.Nome) && documento.Tipo.NomeObrigatorio)
            {
                Validacao.Add(Mensagem.Documento.NomeObrigatorio);
            }

            if (string.IsNullOrEmpty(documento.Assunto) && documento.Tipo.AssuntoObrigatorio)
            {
                Validacao.Add(Mensagem.Documento.AssuntoObrigatorio);
            }

            if (string.IsNullOrEmpty(documento.Descricao) && documento.Tipo.DescricaoObrigatoria)
            {
                Validacao.Add(Mensagem.Documento.DescricaoObrigatoria);
            }

            if (documento.Tipo.DestinatarioLivreObrigatorio)
            {
                if (string.IsNullOrWhiteSpace(documento.Descricao))
                {
                    Validacao.Add(Mensagem.Documento.ConteudoOficioObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(documento.OrgaoDestino))
                {
                    Validacao.Add(Mensagem.Documento.OrgaoDestinoObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(documento.CargoFuncaoDestinatario))
                {
                    Validacao.Add(Mensagem.Documento.CargoFuncaoDestinatarioObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(documento.NomeDestinatario))
                {
                    Validacao.Add(Mensagem.Documento.NomeDestinatarioObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(documento.EnderecoDestinatario))
                {
                    Validacao.Add(Mensagem.Documento.EnderecoDestinatarioObrigatorio);
                }
            }

            if (documento.Tipo.Id == (int)eProtocoloTipo.FiscalizacaoSemAI_TEI_TAD)
            {
                if (documento.Fiscalizacao.Id == 0)
                {
                    Validacao.Add(Mensagem.Documento.FiscalizacaoObrigatoria);
                }
                else
                {
                    FiscalizacaoValidar fiscValidar = new FiscalizacaoValidar();

                    if (fiscValidar.PossuiAI_TED_TAD(documento.Fiscalizacao.Id))
                    {
                        Validacao.Add(Mensagem.Documento.PossuiAI_TEI_TAD);
                    }

                    String numeroProtocoloAssociado = ValidarFiscalizacaoAssociadaOutroProtocolo(documento.Id.GetValueOrDefault(0), documento.Fiscalizacao.Id);
                    if (!String.IsNullOrWhiteSpace(numeroProtocoloAssociado))
                    {
                        Validacao.Add(Mensagem.Fiscalizacao.FiscalizacaoJaAssociada(numeroProtocoloAssociado));
                    }
                }
            }

            if (documento.Tipo.Id <= 0)
            {
                return(false);
            }

            ListaBus      listaBus = new ListaBus();
            ProtocoloTipo configuracaoDocumentoTipo = listaBus.TiposDocumento.FirstOrDefault(x => x.Id == documento.Tipo.Id);
            Documento     documentoOriginal         = documento.Id.GetValueOrDefault() > 0 ? _da.Obter(documento.Id.Value) as Documento : new Documento();

            if (configuracaoDocumentoTipo.ProcessoObrigatorio && documento.ProtocoloAssociado.Id.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Mensagem.Documento.ProcessoObrigatorio);
            }

            if (configuracaoDocumentoTipo.ChecagemPendenciaObrigatorio)
            {
                if (documento.ChecagemPendencia.Id <= 0)
                {
                    Validacao.Add(Mensagem.Documento.ChecagemPendenciaObrigatoria);
                }
                else
                {
                    ChecagemPendenciaJaAssociada(documento.ChecagemPendencia.Id, documento.Id.GetValueOrDefault());
                }
            }

            if (configuracaoDocumentoTipo.InteressadoObrigatorio && documento.Interessado.Id == 0)
            {
                Validacao.Add(Mensagem.Documento.InteressadoObrigatorio);
            }

            if (configuracaoDocumentoTipo.RequerimentoObrigatorio)
            {
                if (documento.ChecagemRoteiro.Id <= 0)
                {
                    Validacao.Add(Mensagem.Documento.ChecagemObrigatoria);
                }

                if (documento.Requerimento.Id <= 0)
                {
                    Validacao.Add(Mensagem.Documento.RequerimentoObrigatorio);
                }
                else
                {
                    if (_requerimentoValidar.RequerimentoDeclaratorio(documento.Requerimento.Id))
                    {
                        Validacao.Add(Mensagem.Documento.AssociarDeclaratorio);
                    }

                    RequerimentoFinalizado(documento.Requerimento.Id, documento.Id.GetValueOrDefault());

                    ResponsavelTecnico(documento.Responsaveis);

                    if (documento.Atividades.Count <= 0)
                    {
                        Validacao.Add(Mensagem.Documento.AtividadeObrigatoria);
                    }
                    else
                    {
                        Atividades(documento.Atividades, (documentoOriginal.Requerimento.Id != documento.Requerimento.Id));

                        if (documentoOriginal.Requerimento.Id == documento.Requerimento.Id)
                        {
                            foreach (Atividade atividade in documentoOriginal.Atividades)
                            {
                                Atividade atividadeAux = documento.Atividades.SingleOrDefault(x => x.Id == atividade.Id);
                                foreach (var finalidade in atividade.Finalidades)
                                {
                                    if (!atividadeAux.Finalidades.Exists(x => x.Id == finalidade.Id) && _atividadeDa.VerificarAtividadeAssociadaTitulo(documentoOriginal.Id.Value, false, atividade.Id, finalidade.TituloModelo))
                                    {
                                        Validacao.Add(Mensagem.Atividade.FinalidadeAssociadaTitulo(finalidade.TituloModeloTexto));
                                    }
                                }
                            }
                        }
                    }
                }
            }

            #endregion

            if (documento.Id > 0)
            {
                #region Editar

                if (!_da.EmPosse(documento.Id.Value))
                {
                    Validacao.Add(Mensagem.Documento.PosseDocumentoNecessariaEditar);
                    return(Validacao.EhValido);
                }

                if ((documento.ChecagemRoteiro.Id > 0 && documento.Requerimento.Id > 0) &&
                    (documentoOriginal.ChecagemRoteiro.Id != documento.ChecagemRoteiro.Id || documentoOriginal.Requerimento.Id != documento.Requerimento.Id))
                {
                    _requerimentoValidar.RoteirosChecagemRequerimento(documento.ChecagemRoteiro.Id, documento.Requerimento.Id, documento.Requerimento.SituacaoId);
                }

                if (documentoOriginal.ChecagemRoteiro.Id != documento.ChecagemRoteiro.Id)
                {
                    if (_da.VerificarChecagemTemTituloPendencia(ModeloCodigosPendencia, documento.Id.Value).Count > 0)
                    {
                        Validacao.Add(Mensagem.Documento.ChecagemAssociadaTitulo);
                    }
                    else
                    {
                        _busCheckListRoteiro.ValidarAssociarCheckList(documento.ChecagemRoteiro.Id, documento.Id.Value, false);
                    }
                }

                if (documentoOriginal.Requerimento.Id != documento.Requerimento.Id)
                {
                    List <String> titulos = _da.VerificarAtividadeAssociadaTitulo(documento.Id.GetValueOrDefault());

                    if (titulos.Count < 0)
                    {
                        Validacao.Add(Mensagem.Documento.RequerimentoAssociadoTitulo());
                    }
                }

                if (documento.ChecagemPendencia.Id != documentoOriginal.ChecagemPendencia.Id)
                {
                    Validacao.Add(Mensagem.Documento.ChecagemPendenciaAlterada);
                }

                #endregion
            }
            else
            {
                #region Criar

                if (documento.ChecagemRoteiro != null && documento.ChecagemRoteiro.Id > 0)
                {
                    _busCheckListRoteiro.ValidarAssociarCheckList(documento.ChecagemRoteiro.Id, documento.Id.GetValueOrDefault(), false);
                }

                if ((documento.ChecagemRoteiro != null && documento.ChecagemRoteiro.Id > 0) && (documento.Requerimento != null && documento.Requerimento.Id > 0))
                {
                    _requerimentoValidar.RoteirosChecagemRequerimento(documento.ChecagemRoteiro.Id, documento.Requerimento.Id, documento.Requerimento.SituacaoId);
                }

                #endregion
            }

            return(Validacao.EhValido);
        }
        public RequerimentoRelatorio Obter(int id)
        {
            RequerimentoRelatorio requerimento = new RequerimentoRelatorio();

            #region Banco do Credenciado

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(EsquemaBanco))
            {
                #region Requerimento

                Comando comando = bancoDeDados.CriarComando(@"
												select r.id,
												r.credenciado,
												trunc(r.data_criacao) data_criacao,
												r.interessado,
												r.empreendimento,
												r.situacao,
												r.agendamento agendamento,
												to_char(r.data_criacao, 'dd') dia,
												to_char(r.data_criacao, 'MM') mes,
												to_char(r.data_criacao, 'yyyy') ano,
												r.setor,
												r.informacoes,
												p.situacao projeto_digital_situacao,
												(select pe.municipio from {0}tab_pessoa_endereco pe, {0}tab_credenciado c where pe.pessoa = c.pessoa and c.id = r.credenciado) municipio
											from {0}tab_requerimento r, tab_projeto_digital p 
											where r.id = p.requerimento and r.id = :id"                                            , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        requerimento.Id           = id;
                        requerimento.AutorId      = reader.GetValue <int>("credenciado");
                        requerimento.DataCadastro = Convert.ToDateTime(reader["data_criacao"]);
                        requerimento.DiaCadastro  = reader["dia"].ToString();
                        int mes = reader.GetValue <int>("mes");
                        requerimento.MesCadastro              = _configSys.Obter <List <String> >(ConfiguracaoSistema.KeyMeses).ElementAt(mes - 1);
                        requerimento.AnoCadastro              = reader["ano"].ToString();
                        requerimento.MunicipioId              = reader.GetValue <int>("municipio");
                        requerimento.Interessado.Id           = reader.GetValue <int>("interessado");
                        requerimento.Empreendimento.Id        = reader.GetValue <int>("empreendimento");
                        requerimento.ProjetoDigitalSituacaoId = reader.GetValue <int>("projeto_digital_situacao");
                        requerimento.SituacaoId          = reader.GetValue <int>("situacao");
                        requerimento.AgendamentoVistoria = reader["agendamento"].ToString();
                        requerimento.SetorId             = reader.GetValue <int>("setor");
                        requerimento.Informacoes         = reader["informacoes"].ToString();
                    }

                    reader.Close();
                }

                #endregion

                #region Atividades

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

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

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

                    while (reader.Read())
                    {
                        atividade    = new RequerimentoAtividadeRelatorio();
                        atividade.Id = Convert.ToInt32(reader["atividade"]);
                        atividade.IdRelacionamento = Convert.ToInt32(reader["id"]);

                        #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"                                                , 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"]);
                                }

                                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 Interessado

                comando = bancoDeDados.CriarComando(@"
											select p.id,
												   p.tipo,
												   p.nome,
												   p.cpf,
												   p.rg,
												   p.estado_civil,
												   p.cnpj,
												   p.razao_social,
												   p.nome_fantasia,
												   p.ie,
												   p.apelido,
												   tpp.profissao
											  from {0}tab_pessoa p, {0}tab_pessoa_profissao tpp
											 where p.id = tpp.pessoa(+)
											   and p.id = :id"                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", requerimento.Interessado.Id, DbType.Int32);
                PessoaRelatorio pessoa = new PessoaRelatorio();

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        pessoa.Id   = requerimento.Interessado.Id;
                        pessoa.Tipo = Convert.ToInt32(reader["tipo"]);

                        if (pessoa.IsFisica)
                        {
                            pessoa.Fisica.Nome    = reader["nome"].ToString();
                            pessoa.Fisica.CPF     = reader["cpf"].ToString();
                            pessoa.Fisica.RG      = reader["rg"].ToString();
                            pessoa.Fisica.Apelido = reader["apelido"].ToString();
                        }
                        else                         // juridica
                        {
                            pessoa.Juridica.CNPJ         = reader["cnpj"].ToString();
                            pessoa.Juridica.RazaoSocial  = reader["razao_social"].ToString();
                            pessoa.Juridica.NomeFantasia = reader["nome_fantasia"].ToString();
                            pessoa.Juridica.IE           = reader["ie"].ToString();
                        }
                    }
                    reader.Close();
                }

                #region Meio de Contato

                comando = bancoDeDados.CriarComando(@"select a.id, a.pessoa, a.meio_contato tipo_contato_id, a.valor
					from {0}tab_pessoa_meio_contato a where a.pessoa = :pessoa"                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ContatoRelatorio contato;
                    while (reader.Read())
                    {
                        contato             = new ContatoRelatorio();
                        contato.Id          = Convert.ToInt32(reader["id"]);
                        contato.PessoaId    = Convert.ToInt32(reader["pessoa"]);
                        contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), reader["tipo_contato_id"].ToString());
                        contato.Valor       = reader["valor"].ToString();
                        pessoa.MeiosContatos.Add(contato);
                    }
                    reader.Close();
                }

                #endregion

                #region Endereços

                comando = bancoDeDados.CriarComando(@"
													select te.id,
														   te.pessoa,
														   te.cep,
														   te.logradouro,
														   te.bairro,
														   te.estado      estado_id,
														   te.municipio   municipio_id,
														   te.numero,
														   te.complemento,
														   te.distrito
													  from {0}tab_pessoa_endereco te
													 where te.pessoa = :pessoa"                                                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        pessoa.Endereco.Id          = Convert.ToInt32(reader["id"]);
                        pessoa.Endereco.Cep         = reader["cep"].ToString();
                        pessoa.Endereco.Logradouro  = reader["logradouro"].ToString();
                        pessoa.Endereco.Bairro      = reader["bairro"].ToString();
                        pessoa.Endereco.EstadoId    = Convert.IsDBNull(reader["estado_id"]) ? 0 : Convert.ToInt32(reader["estado_id"]);
                        pessoa.Endereco.MunicipioId = Convert.IsDBNull(reader["municipio_id"]) ? 0 : Convert.ToInt32(reader["municipio_id"]);
                        pessoa.Endereco.Numero      = reader["numero"].ToString();
                        pessoa.Endereco.Complemento = reader["complemento"].ToString();
                        pessoa.Endereco.Distrito    = reader["distrito"].ToString();
                    }
                    reader.Close();
                }

                #endregion

                requerimento.Interessado = pessoa;

                #endregion

                #region Responsáveis

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

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ResponsavelTecnicoRelatorio responsavel;
                    while (reader.Read())
                    {
                        responsavel             = new ResponsavelTecnicoRelatorio();
                        responsavel.Id          = Convert.ToInt32(reader["responsavel"]);
                        responsavel.FuncaoTexto = reader["funcao"].ToString();
                        responsavel.CpfCnpj     = reader["cpf_cnpj"].ToString();
                        responsavel.RgIe        = reader["rg_ie"].ToString();
                        responsavel.NomeRazao   = reader["nome"].ToString();
                        responsavel.NumeroArt   = reader["numero_art"].ToString();

                        if (reader["data_nascimento"] != null && !Convert.IsDBNull(reader["data_nascimento"]))
                        {
                            responsavel.DataNascimento = Convert.ToDateTime(reader["data_nascimento"]).ToShortDateString();
                        }

                        responsavel.DataVencimento = "Falta";

                        #region Meio de Contato

                        comando = bancoDeDados.CriarComando(@"select a.id, a.pessoa, a.meio_contato tipo_contato_id, a.valor
							from tab_pessoa_meio_contato a
							where a.pessoa = :pessoa"                            , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            ContatoRelatorio contato;
                            while (readerAux.Read())
                            {
                                contato             = new ContatoRelatorio();
                                contato.Id          = Convert.ToInt32(readerAux["id"]);
                                contato.PessoaId    = Convert.ToInt32(readerAux["pessoa"]);
                                contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), readerAux["tipo_contato_id"].ToString());
                                contato.Valor       = readerAux["valor"].ToString();
                                responsavel.MeiosContatos.Add(contato);
                            }
                            readerAux.Close();
                        }

                        #endregion

                        #region Endereços

                        comando = bancoDeDados.CriarComando(@"
														select te.id,
															   te.pessoa,
															   te.cep,
															   te.logradouro,
															   te.bairro,
															   te.estado      estado_id,
															   te.municipio   municipio_id,
															   te.numero,
															   te.complemento,
															   te.distrito
														  from {0}tab_pessoa_endereco te
														 where te.pessoa = :pessoa"                                                        , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            while (readerAux.Read())
                            {
                                responsavel.Endereco.Id          = Convert.ToInt32(readerAux["id"]);
                                responsavel.Endereco.Cep         = readerAux["cep"].ToString();
                                responsavel.Endereco.Logradouro  = readerAux["logradouro"].ToString();
                                responsavel.Endereco.Bairro      = readerAux["bairro"].ToString();
                                responsavel.Endereco.EstadoId    = Convert.IsDBNull(readerAux["estado_id"]) ? 0 : Convert.ToInt32(readerAux["estado_id"]);
                                responsavel.Endereco.MunicipioId = Convert.IsDBNull(readerAux["municipio_id"]) ? 0 : Convert.ToInt32(readerAux["municipio_id"]);
                                responsavel.Endereco.Numero      = readerAux["numero"].ToString();
                                responsavel.Endereco.Complemento = readerAux["complemento"].ToString();
                                responsavel.Endereco.Distrito    = readerAux["distrito"].ToString();
                            }
                            readerAux.Close();
                        }

                        #endregion

                        requerimento.Responsaveis.Add(responsavel);
                    }
                    reader.Close();
                }

                #endregion

                #region Empreendimento

                if (requerimento.Empreendimento.Id > 0)
                {
                    comando = bancoDeDados.CriarComando(@"
					select e.id,
							e.codigo,
							e.segmento,
							e.denominador,
							e.cnpj,
							e.atividade,
							e.nome_fantasia,
							e.denominador razao_social
					from tab_empreendimento e
					where e.id = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", requerimento.Empreendimento.Id, DbType.Int32);
                    EmpreendimentoRelatorio empreendimento = new EmpreendimentoRelatorio();

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            empreendimento.Id             = requerimento.Empreendimento.Id;
                            empreendimento.Codigo         = reader.GetValue <int>("codigo");
                            empreendimento.CNPJ           = reader["cnpj"].ToString();
                            empreendimento.NomeFantasia   = reader["nome_fantasia"].ToString();
                            empreendimento.Denominador    = reader["denominador"].ToString();
                            empreendimento.SegmentoTexto  = reader["segmento"].ToString();
                            empreendimento.AtividadeTexto = Convert.ToString(reader["atividade"]);
                            empreendimento.NomeRazao      = Convert.ToString(reader["razao_social"]);
                        }

                        reader.Close();
                    }

                    #region Endereços

                    comando = bancoDeDados.CriarComando(@"
											select te.id,
													te.empreendimento,
													te.correspondencia,
													te.cep,
													te.logradouro,
													te.bairro,
													te.estado estado_id,
													te.municipio municipio_id,
													te.numero,
													te.complemento,
													(case
														when te.zona = 1 then
														'Urbana'
														else
														'Rural'
													end) zona,
													te.distrito,
													te.corrego,
													te.complemento
												from tab_empreendimento_endereco te
												where te.empreendimento = :empreendimento"                                                , EsquemaBanco);

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

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        EnderecoRelatorio end;
                        while (reader.Read())
                        {
                            end    = new EnderecoRelatorio();
                            end.Id = Convert.ToInt32(reader["id"]);
                            end.Correspondencia = Convert.IsDBNull(reader["correspondencia"]) ? 0 : Convert.ToInt32(reader["correspondencia"]);
                            end.Cep             = reader["cep"].ToString();
                            end.Logradouro      = reader["logradouro"].ToString();
                            end.Bairro          = reader["bairro"].ToString();
                            end.EstadoId        = Convert.IsDBNull(reader["estado_id"]) ? 0 : Convert.ToInt32(reader["estado_id"]);
                            end.MunicipioId     = Convert.IsDBNull(reader["municipio_id"]) ? 0 : Convert.ToInt32(reader["municipio_id"]);
                            end.Numero          = reader["numero"].ToString();
                            end.Complemento     = reader["complemento"].ToString();
                            end.Corrego         = reader["corrego"].ToString();
                            end.Zona            = reader["zona"].ToString();
                            end.Distrito        = reader["distrito"].ToString();
                            end.Complemento     = reader["complemento"].ToString();
                            empreendimento.Enderecos.Add(end);
                        }
                        reader.Close();
                    }

                    #endregion

                    #region Coordenada

                    comando = bancoDeDados.CriarComando(@"
													select aec.id,
														   aec.tipo_coordenada,
														   aec.datum,
														   aec.easting_utm,
														   aec.northing_utm,
														   aec.fuso_utm,
														   aec.hemisferio_utm,
														   aec.latitude_gms,
														   aec.longitude_gms,
														   aec.latitude_gdec,
														   aec.longitude_gdec,
														   aec.forma_coleta    forma_coleta,
														   aec.local_coleta    local_coleta,
														   aec.datum           datum_texto,
														   aec.hemisferio_utm  hemisferio_utm_texto
													  from {0}tab_empreendimento_coord aec
													 where aec.empreendimento = :empreendimentoid"                                                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("empreendimentoid", empreendimento.Id, DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            empreendimento.Coordenada.Id = Convert.ToInt32(reader["id"]);
                            empreendimento.Coordenada.EastingUtmTexto  = Convert.ToString(reader["easting_utm"]);
                            empreendimento.Coordenada.NorthingUtmTexto = Convert.ToString(reader["northing_utm"]);
                            empreendimento.Coordenada.FusoUtm          = Convert.IsDBNull(reader["fuso_utm"]) ? 0 : Convert.ToInt32(reader["fuso_utm"]);
                            empreendimento.Coordenada.HemisferioUtm    = Convert.IsDBNull(reader["hemisferio_utm"]) ? 0 : Convert.ToInt32(reader["hemisferio_utm"]);
                            empreendimento.Coordenada.LatitudeGms      = reader["latitude_gms"].ToString();
                            empreendimento.Coordenada.LongitudeGms     = reader["longitude_gms"].ToString();
                            empreendimento.Coordenada.LatitudeGdec     = Convert.IsDBNull(reader["latitude_gdec"]) ? 0 : Convert.ToDouble(reader["latitude_gdec"]);
                            empreendimento.Coordenada.LongitudeGdec    = Convert.IsDBNull(reader["longitude_gdec"]) ? 0 : Convert.ToDouble(reader["longitude_gdec"]);
                            empreendimento.Coordenada.Datum.Id         = Convert.ToInt32(reader["datum"]);
                            empreendimento.Coordenada.Tipo.Id          = Convert.ToInt32(reader["tipo_coordenada"]);
                            empreendimento.Coordenada.FormaColetaTexto = Convert.ToString(reader["forma_coleta"]);
                            empreendimento.Coordenada.LocalColetaTexto = Convert.ToString(reader["local_coleta"]);
                        }
                        reader.Close();
                    }

                    #endregion

                    #region Meio de Contato

                    comando = bancoDeDados.CriarComando(@"select a.id, a.empreendimento, a.meio_contato tipo_contato_id, a.valor
				  from {0}tab_empreendimento_contato a
				 where a.empreendimento = :empreendimento"                , EsquemaBanco);

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

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        ContatoRelatorio contato;
                        while (reader.Read())
                        {
                            contato             = new ContatoRelatorio();
                            contato.Id          = Convert.ToInt32(reader["id"]);
                            contato.PessoaId    = Convert.ToInt32(reader["empreendimento"]);
                            contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), reader["tipo_contato_id"].ToString());
                            contato.Valor       = reader["valor"].ToString();
                            empreendimento.MeiosContatos.Add(contato);
                        }
                        reader.Close();
                    }

                    #endregion

                    requerimento.Empreendimento = empreendimento;
                }

                #endregion

                #region Elaborador

                comando = bancoDeDados.CriarComando(@"
				select nvl(p.nome, p.razao_social) NomeRazaoSocial, lc.texto TipoTexto 
				from {0}tab_credenciado c, {0}tab_pessoa p, {0}lov_credenciado_tipo lc 
				where c.pessoa = p.id and c.tipo = lc.id and c.id = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", requerimento.AutorId, DbType.Int32);
                requerimento.UsuarioCredenciado = bancoDeDados.ObterEntity <CredenciadoRelatorio>(comando);

                #endregion
            }

            #endregion

            #region Banco do Interno

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                #region Requerimento

                requerimento.Municipio = ObterMunicipio(requerimento.MunicipioId, bancoDeDados);

                #region Situacao

                Comando comando = bancoDeDados.CriarComando(@"select l.texto situacao_texto from {0}lov_requerimento_situacao l where l.id = :id", EsquemaInterno);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        requerimento.SituacaoTexto = reader["situacao_texto"].ToString();
                    }
                    reader.Close();
                }

                #endregion

                #region Agendamento

                if (!string.IsNullOrWhiteSpace(requerimento.AgendamentoVistoria))
                {
                    comando = bancoDeDados.CriarComando(@"select l.texto agendamento from {0}lov_requerimento_agendamento l where l.id = :id", EsquemaInterno);

                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(requerimento.AgendamentoVistoria), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.AgendamentoVistoria = reader["agendamento"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #region Setor

                if (requerimento.SetorId > 0)
                {
                    comando = bancoDeDados.CriarComando(@"select m.texto from tab_setor_endereco se, lov_municipio m 
						where se.municipio = m.id (+) and se.setor = :setor"                        , EsquemaInterno);

                    comando.AdicionarParametroEntrada("setor", Convert.ToInt32(requerimento.SetorId), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.Municipio = reader["texto"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #endregion

                if (requerimento.Atividades.Count > 0)
                {
                    #region Atividades

                    comando = bancoDeDados.CriarComando(@"select b.id, b.atividade atividade_texto, b.conclusao from {0}tab_atividade b", EsquemaInterno);

                    comando.DbCommand.CommandText += comando.AdicionarIn("where", "b.id", DbType.Int32, requerimento.Atividades.Select(x => x.Id).ToList());

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            int idr = Convert.ToInt32(reader["id"]);
                            RequerimentoAtividadeRelatorio atividade = requerimento.Atividades.FirstOrDefault(x => x.Id == idr);
                            atividade.NomeAtividade = reader["atividade_texto"].ToString();
                            atividade.Conclusao     = reader.GetValue <string>("conclusao");
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Atividades/Finalidades/Modelos

                    comando = bancoDeDados.CriarComando(@"
							select ltf.texto finalidade_texto, tm.nome modelo_nome
							  from {0}tab_titulo_modelo tm, {0}lov_titulo_finalidade ltf
							 where tm.id = :modelo and ltf.id = :fin"                            , EsquemaInterno);

                    comando.AdicionarParametroEntrada("fin", DbType.Int32);
                    comando.AdicionarParametroEntrada("modelo", DbType.Int32);

                    var finalidades = requerimento.Atividades.SelectMany(x => x.Finalidades);

                    foreach (Finalidade f in finalidades)
                    {
                        comando.SetarValorParametro("fin", f.Id);
                        comando.SetarValorParametro("modelo", f.TituloModelo);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            if (readerAux.Read())
                            {
                                f.Texto             = readerAux["finalidade_texto"].ToString();
                                f.TituloModeloTexto = readerAux["modelo_nome"].ToString();
                            }

                            readerAux.Close();
                        }
                    }

                    #endregion
                }

                #region Interessado

                #region Profissao

                if (!string.IsNullOrWhiteSpace(requerimento.Interessado.Fisica.Profissao))
                {
                    comando = bancoDeDados.CriarComando(@"select texto from {0}tab_profissao where id = :id", EsquemaInterno);

                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(requerimento.Interessado.Fisica.Profissao), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.Interessado.Fisica.Profissao = reader["texto"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from {0}tab_meio_contato b", EsquemaInterno);

                comando.DbCommand.CommandText += comando.AdicionarIn("where", "b.id", DbType.Int32, requerimento.Interessado.MeiosContatos.Select(x => x.Id).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = requerimento.Interessado.MeiosContatos.Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Endereco

                EnderecoRelatorio end = requerimento.Interessado.Endereco;
                end.MunicipioTexto = ObterMunicipio(end.MunicipioId, bancoDeDados);
                end.EstadoSigla    = ObterEstado(end.EstadoId, bancoDeDados);

                #endregion

                #endregion

                #region Responsaveis

                #region Funcao

                comando = bancoDeDados.CriarComando(@"select lf.texto funcao from {0}lov_protocolo_resp_funcao lf where lf.id = :id", EsquemaInterno);
                comando.AdicionarParametroEntrada("id", DbType.Int32);

                foreach (var resp in requerimento.Responsaveis)
                {
                    comando.SetarValorParametro("id", int.Parse(resp.FuncaoTexto));
                    resp.FuncaoTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from {0}tab_meio_contato b", EsquemaInterno);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = requerimento.Responsaveis.SelectMany(x => x.MeiosContatos).Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Endereços

                foreach (var endResp in requerimento.Responsaveis.Select(x => x.Endereco))
                {
                    endResp.MunicipioTexto = ObterMunicipio(endResp.MunicipioId, bancoDeDados);
                    endResp.EstadoSigla    = ObterEstado(endResp.EstadoId, bancoDeDados);
                }

                #endregion

                #endregion

                #region Empreendimento

                EmpreendimentoRelatorio emp = requerimento.Empreendimento;

                #region Atividade

                if (!string.IsNullOrWhiteSpace(emp.AtividadeTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select a.atividade from {0}tab_empreendimento_atividade a where a.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.AtividadeTexto), DbType.Int32);
                    requerimento.Empreendimento.AtividadeTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Segmento

                if (!string.IsNullOrWhiteSpace(emp.SegmentoTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select les.texto from {0}lov_empreendimento_segmento les where les.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.SegmentoTexto), DbType.Int32);
                    requerimento.Empreendimento.SegmentoTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Endereços

                foreach (var endEmp in emp.Enderecos)
                {
                    endEmp.MunicipioTexto = ObterMunicipio(endEmp.MunicipioId, bancoDeDados);
                    endEmp.EstadoSigla    = ObterEstado(endEmp.EstadoId, bancoDeDados);
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from tab_meio_contato b", EsquemaInterno);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = emp.MeiosContatos.Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Coordenada

                ListaBus bus = new ListaBus();

                emp.Coordenada.DatumTexto = ObterDatum(emp.Coordenada.Datum.Id, bancoDeDados);
                emp.Coordenada.Tipo.Texto = ObterTipoCoordenada(emp.Coordenada.Tipo.Id, bancoDeDados);

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.HemisferioUtmTexto))
                {
                    emp.Coordenada.HemisferioUtmTexto = bus.Hemisferios.FirstOrDefault(x => x.Id == Convert.ToInt32(emp.Coordenada.HemisferioUtmTexto)).Texto;
                }

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.FormaColetaTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select c.texto from {0}lov_empreendimento_forma_colet c where c.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.Coordenada.FormaColetaTexto), DbType.Int32);
                    emp.Coordenada.FormaColetaTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.LocalColetaTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select c.texto from {0}lov_empreendimento_local_colet c where c.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.Coordenada.LocalColetaTexto), DbType.Int32);
                    emp.Coordenada.LocalColetaTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #endregion
            }

            #endregion

            return(requerimento);
        }
Exemplo n.º 14
0
        public ActionResult OutrosLegitimacaoTerraDevoluta(EspecificidadeVME especificidade)
        {
            OutrosLegitimacaoTerraDevolutaBus bus             = new OutrosLegitimacaoTerraDevolutaBus();
            List <Protocolos>          lstProcessosDocumentos = _busTitulo.ObterProcessosDocumentos(especificidade.ProtocoloId);
            List <AtividadeSolicitada> lstAtividades          = new List <AtividadeSolicitada>();
            List <PessoaLst>           destinatarios          = new List <PessoaLst>();

            Titulo       titulo = new Titulo();
            TituloModelo modelo = _tituloModeloBus.Obter(especificidade.ModeloId ?? 0);
            OutrosLegitimacaoTerraDevoluta outros = new OutrosLegitimacaoTerraDevoluta();

            int atividadeSelecionada = 0;

            if (especificidade.TituloId > 0)
            {
                titulo            = _busTitulo.Obter(especificidade.TituloId);
                titulo.Atividades = _busTitulo.ObterAtividades(especificidade.TituloId);

                if (titulo.Atividades.Count > 0)
                {
                    atividadeSelecionada = titulo.Atividades[0].Id;
                }

                especificidade.AtividadeProcDocReq = _busTitulo.ObterProcDocReqEspecificidade(especificidade.TituloId);

                if (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado)
                {
                    outros        = bus.Obter(especificidade.TituloId) as OutrosLegitimacaoTerraDevoluta;
                    destinatarios = _busTitulo.ObterDestinatarios(especificidade.ProtocoloId);
                }
                else
                {
                    outros = bus.ObterHistorico(especificidade.TituloId, 0) as OutrosLegitimacaoTerraDevoluta;
                }
            }

            if (especificidade.ProtocoloId > 0)
            {
                if (_busEspecificidade.ExisteProcDocFilhoQueFoiDesassociado(especificidade.TituloId))
                {
                    lstAtividades     = new List <AtividadeSolicitada>();
                    titulo.Atividades = new List <Atividade>();
                }
                else
                {
                    lstAtividades = _busAtividade.ObterAtividadesLista(especificidade.AtividadeProcDocReq.ToProtocolo());
                }

                if (!especificidade.IsVisualizar)
                {
                    _busEspecificidade.PossuiAtividadeEmAndamento(especificidade.ProtocoloId);
                }
            }

            if (!Validacao.EhValido)
            {
                return(Json(new { Msg = Validacao.Erros, EhValido = Validacao.EhValido, @Html = string.Empty }, JsonRequestBehavior.AllowGet));
            }

            ListaBus listaBus = new ListaBus();
            OutrosLegitimacaoTerraDevolutaVM vm = new OutrosLegitimacaoTerraDevolutaVM(
                lstProcessosDocumentos,
                lstAtividades,
                destinatarios,
                bus.ObterDominios(especificidade.ProtocoloId),
                outros,
                listaBus.Municipios(ViewModelHelper.EstadoDefaultId()),
                especificidade.AtividadeProcDocReqKey,
                especificidade.IsVisualizar,
                atividadeSelecionada);

            if (especificidade.TituloId > 0)
            {
                vm.Atividades.Atividades = titulo.Atividades;
            }

            string htmlEspecificidade = ViewModelHelper.RenderPartialViewToString(ControllerContext, "~/Areas/Especificidades/Views/Outros/OutrosLegitimacaoTerraDevoluta.ascx", vm);

            return(Json(new { Msg = Validacao.Erros, EhValido = Validacao.EhValido, @Html = htmlEspecificidade }, JsonRequestBehavior.AllowGet));
        }
        internal bool Salvar(HabilitacaoEmissaoPTV habilitacao)
        {
            if (habilitacao.Funcionario.Id <= 0)
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.VerificarCPFObrigatorio);
                return(false);
            }

            if (string.IsNullOrEmpty(habilitacao.NumeroHabilitacao))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroHabilitacaoObrigatorio);
            }
            else
            {
                if (habilitacao.NumeroHabilitacao.Length != 8)
                {
                    Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroHabilitacaoInvalido);
                }
                else if (_da.ExisteNumeroHabilitacao(habilitacao.NumeroHabilitacao, habilitacao.Funcionario.Id))
                {
                    Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroHabilitacaoJaExiste);
                }
            }

            if (string.IsNullOrEmpty(habilitacao.RG))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.RGObrigatorio);
            }

            if (string.IsNullOrEmpty(habilitacao.NumeroMatricula))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumberoMatriculaObrigatorio);
            }
            else if (habilitacao.NumeroMatricula.Length != 7)
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumberoMatriculaInvalido);
            }

            if (habilitacao.EstadoRegistro <= 0)
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.UFHabilitacaoObrigatorio);
            }
            else
            {
                ListaBus _busLista = new ListaBus();
                Estado   estado    = _busLista.Estados.SingleOrDefault(x => String.Equals(x.Texto, _configSys.Obter <String>(ConfiguracaoSistema.KeyEstadoDefault), StringComparison.InvariantCultureIgnoreCase)) ?? new Estado();

                if (habilitacao.EstadoRegistro != estado.Id)
                {
                    if (string.IsNullOrEmpty(habilitacao.NumeroVistoCREA))
                    {
                        Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroVistoCREAObrigatorio);
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(habilitacao.NumeroCREA))
                    {
                        Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroCREAObrigatorio);
                    }
                }
            }

            if (string.IsNullOrEmpty(habilitacao.TelefoneResidencial) && string.IsNullOrEmpty(habilitacao.TelefoneCelular) && string.IsNullOrEmpty(habilitacao.TelefoneComercial))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.MeioContatoObrigatorio);
            }

            if (string.IsNullOrEmpty(habilitacao.Endereco.Logradouro))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.LogradouroObrigatorio);
            }

            if (string.IsNullOrEmpty(habilitacao.Endereco.Bairro))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.BairroObrigatorio);
            }

            if (habilitacao.Endereco.EstadoId <= 0)
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.UFObrigatorio);
            }

            if (habilitacao.Endereco.MunicipioId <= 0)
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.MunicipioObrigatorio);
            }

            if (string.IsNullOrEmpty(habilitacao.Endereco.Numero))
            {
                Validacao.Add(Mensagem.HabilitacaoEmissaoPTV.NumeroObrigatorio);
            }

            return(Validacao.EhValido);
        }