Example #1
0
        public void Salvar(Titulo titulo)
        {
            try
            {
                titulo.Autor = new Funcionario()
                {
                    Id = User.FuncionarioId
                };

                if (titulo.Id <= 0)
                {
                    titulo.Situacao.Id      = (int)eTituloSituacao.EmCadastro;
                    titulo.DataCriacao.Data = DateTime.Now;
                }

                if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica))
                {
                    titulo.Numero.Inteiro = null;
                    titulo.Numero.Ano     = null;
                }

                //Carrega o Modelo e suas regras do modelo
                titulo.Modelo = _busModelo.Obter(titulo.Modelo.Id);

                IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault());

                string jsonEsp = (titulo.Especificidade != null) ? titulo.Especificidade.Json : null;
                titulo.Especificidade = (Especificidade)busEsp.Deserialize(jsonEsp);
                titulo.Especificidade = titulo.ToEspecificidade();

                //Delega a validação de especificidade
                _validar.ValidarEspecificidade = () =>
                {
                    busEsp.Validar.Salvar(titulo.Especificidade);
                };

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

                    ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);

                    if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema) && titulo.ArquivoPdf.Id == 0)
                    {
                        titulo.ArquivoPdf = _busArquivo.Copiar(titulo.ArquivoPdf);
                    }

                    if (titulo.Anexos != null && titulo.Anexos.Count > 0)
                    {
                        foreach (Anexo anexo in titulo.Anexos)
                        {
                            if (anexo.Arquivo.Id == 0)
                            {
                                anexo.Arquivo = _busArquivo.Copiar(anexo.Arquivo);
                            }
                        }
                    }

                    #endregion

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

                        #region Arquivos/Banco

                        ArquivoDa arquivoDa = new ArquivoDa();

                        if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema))
                        {
                            arquivoDa.Salvar(titulo.ArquivoPdf, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                        }

                        if (titulo.Anexos != null && titulo.Anexos.Count > 0)
                        {
                            foreach (Anexo anexo in titulo.Anexos)
                            {
                                if (anexo.Arquivo.Id == 0)
                                {
                                    arquivoDa.Salvar(anexo.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                                }
                            }
                        }

                        #endregion

                        _da.Salvar(titulo, bancoDeDados);

                        //Atualiza os Ids em Especificidade
                        titulo.Especificidade = titulo.ToEspecificidade();
                        busEsp.Salvar(titulo.Especificidade, bancoDeDados);

                        //Trata quando o catch do busEsp.Salvar silencia o erro.
                        if (!Validacao.EhValido)
                        {
                            return;
                        }

                        bancoDeDados.Commit();
                    }

                    Validacao.Add(Mensagem.Titulo.Salvar);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
        }
        public bool ReservaLegalSalvar(ReservaLegal reserva)
        {
            if (reserva.SituacaoId <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoObrigatorio);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.NaoInformada)
            {
                return(Validacao.EhValido);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Proposta)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:
                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.EmpreendimentoCompensacao.Id > 0)
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePreservadaOuEmRecuperacao);
                    }
                    break;

                    #endregion

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    break;

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Registrada)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:

                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.CedentePossuiEmpreendimento == 0)
                    {
                        if (reserva.ARLCedida <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ARLCedidaObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalInvalido);
                        }
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.IdentificacaoARLCedente > 0)
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePreservadaOuEmRecuperacao);
                    }

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.ARLRecebida <= 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ARLRecebidaObrigatorio);
                    }

                    break;

                    #endregion

                    #region Nesta Matrícula

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    ValidarCamposSituacaoRegistrada(reserva);

                    break;

                    #endregion

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            return(Validacao.EhValido);
        }
Example #3
0
        public List <Roteiro> ObterRoteirosPorAtividades(List <Atividade> atividades, BancoDeDados bancoInterno)
        {
            List <Roteiro> roteiros = new List <Roteiro>();

            if (atividades == null || atividades.Count <= 0)
            {
                return(roteiros);
            }

            Roteiro roteiroPadrao = ListaCredenciadoBus.RoteiroPadrao.FirstOrDefault(x => x.Setor == atividades[0].SetorId);

            if (roteiroPadrao != null)
            {
                roteiroPadrao = ObterSimplificado(roteiroPadrao.Id, bancoInterno);
            }

            List <String> titulos = new List <String>();

            foreach (var atividade in atividades)
            {
                foreach (var finalidade in atividade.Finalidades)
                {
                    finalidade.AtividadeId      = atividade.Id;
                    finalidade.AtividadeNome    = atividade.NomeAtividade;
                    finalidade.AtividadeSetorId = atividade.SetorId;

                    String modeloTituloNaoAdicionadoRoteiro = _da.ModeloTituloNaoAdicionadoRoteiro(finalidade, bancoInterno);
                    if (!String.IsNullOrWhiteSpace(modeloTituloNaoAdicionadoRoteiro))
                    {
                        titulos.Add("\"" + modeloTituloNaoAdicionadoRoteiro + "\"");
                        continue;
                    }

                    Roteiro roteiroAux = _da.ObterRoteirosPorAtividades(finalidade, bancoInterno);
                    if (roteiroAux == null)
                    {
                        roteiroPadrao.AtividadeTexto = atividade.NomeAtividade;
                        roteiros.Add(roteiroPadrao);
                        continue;
                    }

                    roteiros.Add(roteiroAux);
                }
            }

            if (titulos.Count > 0)
            {
                Validacao.Add(Mensagem.Roteiro.TituloNaoAdicionadoRoteiroCredenciado(Mensagem.Concatenar(titulos)));
            }

            #region Faz a magica de agrupar os resultados

            roteiros = roteiros.GroupBy(x => x.Id).Select(y => new Roteiro
            {
                Id             = y.First().Id,
                Nome           = y.First().Nome,
                VersaoAtual    = y.First().VersaoAtual,
                Tid            = y.First().Tid,
                AtividadeTexto = y.Select(w => w.AtividadeTexto).Distinct().Aggregate((total, atual) => total + " / " + atual)
            }).ToList();

            #endregion

            return(roteiros);
        }
        public bool Salvar(LocalInfracao localInfracao)
        {
            if (localInfracao.SetorId == 0)
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.SelecioneSetor);
            }

            if (localInfracao.AreaFiscalizacao == null)
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.AreaFiscalizacaoObrigatoria);
            }

            if (localInfracao.DentroEmpreendimento == 1 && (localInfracao.EmpreendimentoId == null || localInfracao.EmpreendimentoId == 0))
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.EmpreendimentoObrigatorio);
            }
            else if (localInfracao.DentroEmpreendimento == 0 && (localInfracao.PessoaId == 0 || localInfracao.PessoaId == null))
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.PessoaObrigatorio);
            }
            else if (localInfracao.PessoaId.GetValueOrDefault() == 0 && localInfracao.EmpreendimentoId.GetValueOrDefault() == 0)
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.PessoaEmpreendimentoObrigatorio);
            }

            if (localInfracao.EmpreendimentoId.GetValueOrDefault() > 0 && localInfracao.ResponsavelPropriedadeId.GetValueOrDefault() == 0)
            {
                Validacao.Add(Mensagem.LocalInfracaoMsg.ResponsavelPropriedadeObrigatorio);
            }

            if (localInfracao.DentroEmpreendimento == 0)
            {
                if (string.IsNullOrWhiteSpace(localInfracao.LonEasting))
                {
                    Validacao.Add(Mensagem.LocalInfracaoMsg.EastingUtmObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(localInfracao.LatNorthing))
                {
                    Validacao.Add(Mensagem.LocalInfracaoMsg.NorthingUtmObrigatorio);
                }

                if (localInfracao.MunicipioId == null || localInfracao.MunicipioId < 1)
                {
                    Validacao.Add(Mensagem.LocalInfracaoMsg.MunicipioObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(localInfracao.Local))
                {
                    Validacao.Add(Mensagem.LocalInfracaoMsg.LocalObrigatorio);
                }
            }
            else
            {
                if (localInfracao.PessoaId != localInfracao.ResponsavelId)
                {
                    Validacao.Add(Mensagem.LocalInfracaoMsg.AutuadoDiferenteEmpreendimento);
                }
            }

            return(Validacao.EhValido);
        }
        internal bool Salvar(Dominialidade dominialidade)
        {
            if (!_caracterizacaoValidar.Basicas(dominialidade.EmpreendimentoId))
            {
                return(false);
            }

            if (dominialidade.Id <= 0 && (_da.ObterPorEmpreendimento(dominialidade.EmpreendimentoId, true) ?? new Dominialidade()).Id > 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoCaracterizacaoJaCriada);
                return(false);
            }

            if (!_caracterizacaoValidar.Dependencias(empreendimentoId: dominialidade.EmpreendimentoId, projetoDigitalId: dominialidade.ProjetoDigitalId, caracterizacaoTipo: (int)eCaracterizacao.Dominialidade))
            {
                return(false);
            }

            if (Dominios(dominialidade.Dominios))
            {
                foreach (Dominio dominio in dominialidade.Dominios)
                {
                    DominioSalvar(dominio);

                    if (dominio.ReservasLegais != null && dominio.ReservasLegais.Count > 0)
                    {
                        foreach (ReservaLegal reserva in dominio.ReservasLegais)
                        {
                            ReservaLegalSalvar(reserva);
                        }
                    }
                }
            }

            string prefixo = "Dominialidade";

            if (!dominialidade.PossuiAreaExcedenteMatricula.HasValue)
            {
                Validacao.Add(Mensagem.Dominialidade.PossuiAreaExcedenteMatriculaObrigatorio);
            }

            if (String.IsNullOrWhiteSpace(dominialidade.ConfrontacaoNorte))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoNorteObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominialidade.ConfrontacaoSul))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoSulObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominialidade.ConfrontacaoLeste))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoLesteObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominialidade.ConfrontacaoOeste))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoOesteObrigatorio(prefixo));
            }

            List <string> auxiliar = _da.VerificarExcluirDominios(dominialidade);

            if (auxiliar != null && auxiliar.Count > 0)
            {
                foreach (var item in auxiliar)
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioAssossiadoReserva(item));
                }
            }

            return(Validacao.EhValido);
        }
Example #6
0
        public bool ValidarRepresentante(Pessoa representante, bool isConjuge = false)
        {
            VerificarCriarCpf(representante, isConjuge);

            if (String.IsNullOrWhiteSpace(representante.Fisica.Nome))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNomeMsg(isConjuge));
            }

            if (string.IsNullOrWhiteSpace(representante.Fisica.Nacionalidade))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNacionalidadeMsg(isConjuge));
            }

            if (string.IsNullOrWhiteSpace(representante.Fisica.Naturalidade))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNaturalidadeMsg(isConjuge));
            }

            if (!representante.Fisica.Sexo.HasValue && isConjuge)
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge));
            }
            else
            {
                if (representante.Fisica.Sexo <= 0)
                {
                    Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge));
                }
            }

            if (representante.Fisica.EstadoCivil <= 0)
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioEstadoCivilMsg(isConjuge));
            }

            if (representante.Fisica.DataNascimento.GetValueOrDefault() == DateTime.MinValue)
            {
                Validacao.Add(Mensagem.Pessoa.DataNascimentoObrigatoriaMsg(isConjuge));
            }
            else
            {
                VerificarFisicaDataNascimento(representante.Fisica.DataNascimento, isConjuge);
            }

            if (representante.Fisica.ConjugeId.GetValueOrDefault() > 0)
            {
                if (_da.ExistePessoa(representante.Fisica.ConjugeCPF, representante.CredenciadoId.GetValueOrDefault()) <= 0)
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeNaoExiste);
                }

                if (representante.Fisica.ConjugeId == representante.Id)
                {
                    Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais);
                }

                if (_da.ValidarConjugeAssociado(representante.CPFCNPJ, representante.Fisica.ConjugeCPF, User.EtramiteIdentity.FuncionarioId))
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado);
                }
            }
            else if (representante.Fisica.Conjuge != null && !string.IsNullOrEmpty(representante.Fisica.Conjuge.CPFCNPJ))
            {
                if (representante.Fisica.Conjuge.CPFCNPJ == representante.CPFCNPJ)
                {
                    Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais);
                }

                if (_da.ValidarConjugeAssociado(representante.CPFCNPJ, representante.Fisica.Conjuge.CPFCNPJ, representante.CredenciadoId.GetValueOrDefault()))
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado);
                }
            }

            return(Validacao.EhValido);
        }
Example #7
0
        public bool SalvarArquivo(TramitacaoArquivo arquivo)
        {
            if (string.IsNullOrEmpty(arquivo.Nome))
            {
                Validacao.Add(Msg.NomeArquivoObrigratorio);
            }

            if (arquivo.SetorId.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Msg.SetorArquivoObrigratorio);
            }

            if (arquivo.TipoId.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Msg.TipoArquivoObrigratorio);
            }

            if (arquivo.Estantes == null || arquivo.Estantes.Count <= 0)
            {
                Validacao.Add(Msg.EstanteArquivoObrigratorio);
            }

            int contator = 0;
            int i        = 0;

            foreach (Estante estante in arquivo.Estantes)
            {
                if (string.IsNullOrWhiteSpace(estante.Texto))
                {
                    Validacao.Add(Msg.EstanteObrigratorio(i));
                    i++;
                    continue;
                }
                else
                {
                    contator = 0;
                    foreach (var item in arquivo.Estantes)
                    {
                        if (estante.Texto.ToUpper() == item.Texto.ToUpper())
                        {
                            contator++;
                        }
                    }

                    if (contator > 1)
                    {
                        Validacao.Add(Msg.EstanteNomeIguais(estante.Texto));
                    }
                }

                if (estante.Prateleiras.Count <= 0)
                {
                    Validacao.Add(Msg.PrateleiraEstanteObrigratorio(estante.Texto));
                }

                foreach (var prateleira in estante.Prateleiras)
                {
                    if (prateleira.ModoId == 0)
                    {
                        Validacao.Add(Msg.ModoObrigratorioEstante(estante.Texto));
                        i++;
                        continue;
                    }

                    if (string.IsNullOrWhiteSpace(prateleira.Texto))
                    {
                        Validacao.Add(Msg.IdentificadorObrigratorio(estante.Texto));
                        i++;
                        continue;
                    }

                    contator = 0;
                    foreach (var item in estante.Prateleiras)
                    {
                        if (prateleira.ModoId == item.ModoId && prateleira.Texto.ToUpper() == item.Texto.ToUpper())
                        {
                            contator++;
                        }
                    }

                    if (contator > 1)
                    {
                        Validacao.Add(Msg.EstanteComModosIdenticacaoRepetidos(estante.Texto));
                    }
                }
                i++;
            }


            if (arquivo.ProtocoloSituacao.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Msg.ProcessoOuDocumentoArqObrigratorio);
            }

            if (arquivo.Id.HasValue && arquivo.Id.Value > 0)
            {
                EstantesExcluirDeArquivo(arquivo);
                PrateleirasExcluirDeArquivo(arquivo);

                TramitacaoArquivo arquivoOriginal = _da.Obter(arquivo.Id.Value, true);
                if (arquivoOriginal.SetorId != arquivo.SetorId)
                {
                    if (_da.PossuiProtocolo(arquivo.Id.Value))
                    {
                        Validacao.Add(Mensagem.Tramitacao.ArquivoEditarSetorNaoEhPossivelPorPossuirProtocolo(eTipoMensagem.Advertencia));
                    }
                }
            }

            return(Validacao.EhValido);
        }
        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);
        }
        public Resultados <credenciado.ListarFiltro> FiltrarHabilitarEmissao(IDictionary <string, DadoFiltro> filtros)
        {
            Resultados <credenciado.ListarFiltro> retorno = new Resultados <credenciado.ListarFiltro>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                string  comandtxt = string.Empty;
                Comando comando   = bancoDeDados.CriarComando("");

                #region Adicionando Filtros

                if (filtros.ContainsKey("nomerazaosocial"))
                {
                    comandtxt += " and upper(nvl(tp.nome, tp.razao_social)) like '%'|| upper(:nomerazaosocial)||'%'";
                    comando.AdicionarParametroEntrada("nomerazaosocial", filtros["nomerazaosocial"].Valor, filtros["nomerazaosocial"].Tipo);
                }

                if (filtros.ContainsKey("cpfcnpj"))
                {
                    if (ValidacoesGenericasBus.Cpf(filtros["cpfcnpj"].Valor.ToString()) ||
                        ValidacoesGenericasBus.Cnpj(filtros["cpfcnpj"].Valor.ToString()))
                    {
                        comandtxt += " and ((tp.cpf = :cpfcnpj) or (tp.cnpj = :cpfcnpj))";
                    }
                    else
                    {
                        comandtxt += "and ((tp.cpf like '%'|| :cpfcnpj ||'%') or (tp.cnpj = '%'|| :cpfcnpj ||'%'))";
                    }

                    comando.AdicionarParametroEntrada("cpfcnpj", filtros["cpfcnpj"].Valor, filtros["cpfcnpj"].Tipo);
                }

                if (filtros.ContainsKey("situacao"))
                {
                    comandtxt += " and tc.situacao = :situacao";
                    comando.AdicionarParametroEntrada("situacao", filtros["situacao"].Valor, filtros["situacao"].Tipo);
                }


                if (filtros.ContainsKey("tipo"))
                {
                    comandtxt += " and tc.tipo = :tipo";
                    comando.AdicionarParametroEntrada("tipo", filtros["tipo"].Valor, filtros["tipo"].Tipo);
                }

                if (filtros.ContainsKey("data_ativacao"))
                {
                    comandtxt += " and to_char(tc.data_cadastro, 'dd/mm/yyyy') = :data_ativacao";
                    comando.AdicionarParametroEntrada("data_ativacao", filtros["data_ativacao"].Valor, filtros["data_ativacao"].Tipo);
                }

                List <String> ordenar = new List <String>();
                List <String> colunas = new List <String>()
                {
                    "nome", "cpfcnpj", "tipo", "ativacao", "situacao"
                };

                if (filtros.ContainsKey("ordenar"))
                {
                    ordenar.Add(filtros["ordenar"].Valor.ToString());
                }
                else
                {
                    ordenar.Add("nome");
                }
                #endregion

                #region Executa a pesquisa nas tabelas

                comando.DbCommand.CommandText = DaHelper.FormatarSql(@"select count(*) from {1}tab_credenciado tc, {0}tab_pessoa tp,
					{1}lov_credenciado_tipo lct, {1}lov_credenciado_situacao lcs where tc.pessoa = tp.id 
					and tc.tipo = lct.id and tc.situacao = lcs.id and tc.situacao <> 1 "                     + comandtxt, UsuarioInterno, UsuarioCredenciado);

                retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));

                if (retorno.Quantidade < 1)
                {
                    Validacao.Add(Mensagem.Funcionario.NaoEncontrouRegistros);
                }

                if (filtros.ContainsKey("menor"))
                {
                    comando.AdicionarParametroEntrada("menor", filtros["menor"].Valor, filtros["menor"].Tipo);
                }
                else
                {
                    comando.AdicionarParametroEntrada("menor", 1, DbType.Int32);
                }

                if (filtros.ContainsKey("maior"))
                {
                    comando.AdicionarParametroEntrada("maior", filtros["maior"].Valor, filtros["maior"].Tipo);
                }
                else
                {
                    comando.AdicionarParametroEntrada("maior", 10, DbType.Int32);
                }

                comandtxt = String.Format(@"select tc.id, nvl(tp.nome, tp.razao_social) nome,
					nvl(tp.cpf, tp.cnpj) cpfcnpj, lct.texto tipo, to_char(tc.data_cadastro, 'dd/mm/yyyy') ativacao, lcs.id situacao,
					lcs.texto situacao_texto from {2}tab_credenciado tc, {3}tab_pessoa tp,
					{2}lov_credenciado_tipo lct, {2}lov_credenciado_situacao lcs
					where tc.pessoa = tp.id and tc.tipo = lct.id and tc.situacao = lcs.id and tc.situacao <> 1 {0} {1}"                    ,
                                          comandtxt, DaHelper.Ordenar(colunas, ordenar),
                                          String.IsNullOrEmpty(UsuarioCredenciado) ? "" : UsuarioCredenciado + ".",
                                          String.IsNullOrEmpty(UsuarioInterno) ? "" : UsuarioInterno + "."); //1 - Aguardando Ativação

                comando.DbCommand.CommandText = @"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor";

                #endregion

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    credenciado.ListarFiltro item;
                    while (reader.Read())
                    {
                        item    = new credenciado.ListarFiltro();
                        item.Id = reader["id"].ToString();
                        item.NomeRazaoSocial = reader["nome"].ToString();
                        item.CpfCnpj         = reader["cpfcnpj"].ToString();
                        item.DataAtivacao    = reader["ativacao"].ToString();
                        item.Situacao        = Convert.ToInt32(reader["situacao"]);
                        item.SituacaoTexto   = reader["situacao_texto"].ToString();
                        item.TipoTexto       = reader["tipo"].ToString();

                        retorno.Itens.Add(item);
                    }

                    reader.Close();
                }
            }

            return(retorno);
        }
        internal bool Salvar(ExploracaoFlorestal caracterizacao)
        {
            if (!_caracterizacaoValidar.Basicas(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

            if (caracterizacao.Id <= 0 && (_da.ObterPorEmpreendimento(caracterizacao.EmpreendimentoId, true) ?? new ExploracaoFlorestal()).Id > 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoCaracterizacaoJaCriada);
                return(false);
            }

            if (!Acessar(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

            if (caracterizacao.FinalidadeExploracao <= 0)
            {
                Validacao.Add(Mensagem.ExploracaoFlorestal.FinalidadeExploracaoObrigatorio);
            }
            else
            {
                if (caracterizacao.FinalidadeExploracao == (int)eExploracaoFlorestalFinalidade.Outros && String.IsNullOrWhiteSpace(caracterizacao.FinalidadeEspecificar))
                {
                    Validacao.Add(Mensagem.ExploracaoFlorestal.FinalidadeExploracaoEspecificarObrigatorio);
                }
            }

            foreach (ExploracaoFlorestalExploracao item in caracterizacao.Exploracoes)
            {
                if (item.GeometriaTipoId == (int)eExploracaoFlorestalGeometria.Poligono)
                {
                    if (!String.IsNullOrWhiteSpace(item.AreaRequeridaTexto))
                    {
                        if (!ValidacoesGenericasBus.ValidarDecimal(DecimalEtx.ClearMask(item.AreaRequeridaTexto), 7, 2))
                        {
                            Validacao.Add(Mensagem.ExploracaoFlorestal.AreaRequiridaInvalida(item.Identificacao));
                        }
                        else if (item.AreaRequerida <= 0)
                        {
                            Validacao.Add(Mensagem.ExploracaoFlorestal.AreaRequiridaMaiorZero(item.Identificacao));
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.ExploracaoFlorestal.AreaRequiridaObrigatoria(item.Identificacao));
                    }
                }
                else
                {
                    if (item.GeometriaTipoId == (int)eExploracaoFlorestalGeometria.Ponto || item.GeometriaTipoId == (int)eExploracaoFlorestalGeometria.Linha)
                    {
                        #region Arvores Requeridas

                        if (!String.IsNullOrWhiteSpace(item.ArvoresRequeridas))
                        {
                            if (Convert.ToDecimal(item.ArvoresRequeridas) <= 0)
                            {
                                Validacao.Add(Mensagem.ExploracaoFlorestal.ArvoresRequeridasMaiorZero(item.Identificacao));
                            }
                        }
                        else
                        {
                            Validacao.Add(Mensagem.ExploracaoFlorestal.ArvoresRequeridasObrigatoria(item.Identificacao));
                        }

                        #endregion

                        #region Numero de Arvores

                        if (!String.IsNullOrWhiteSpace(item.QuantidadeArvores))
                        {
                            bool existeProdutoSemRendimento = item.Produtos.Where(x => x.ProdutoId == (int)eProduto.SemRendimento).ToList().Count() > 0;

                            if (!existeProdutoSemRendimento)
                            {
                                if (Convert.ToInt32(item.QuantidadeArvores) <= 0)
                                {
                                    Validacao.Add(Mensagem.ExploracaoFlorestal.QdeArvoresRequeridasMaiorZero(item.Identificacao));
                                }
                            }
                        }
                        else
                        {
                            Validacao.Add(Mensagem.ExploracaoFlorestal.QdeArvoresRequeridasObrigatoria(item.Identificacao));
                        }

                        #endregion
                    }
                }

                if (item.ExploracaoTipoId <= 0)
                {
                    Validacao.Add(Mensagem.ExploracaoFlorestal.ExploracaoTipoObrigatorio(item.Identificacao));
                }

                if (item.ClassificacaoVegetacaoId <= 0)
                {
                    Validacao.Add(Mensagem.ExploracaoFlorestal.ClassificacaoVegetacaoObrigatoria(item.Identificacao));
                }

                if (item.Produtos.Count == 0)
                {
                    Validacao.Add(Mensagem.ExploracaoFlorestal.ProdutoObrigatorio(item.Identificacao));
                }
                else
                {
                    foreach (ExploracaoFlorestalProduto produto in item.Produtos)
                    {
                        if (produto.ProdutoId == (int)eProduto.SemRendimento)
                        {
                            continue;
                        }

                        if (!String.IsNullOrWhiteSpace(produto.Quantidade))
                        {
                            if (!ValidacoesGenericasBus.ValidarDecimal(DecimalEtx.ClearMask(produto.Quantidade), 7, 2))
                            {
                                Validacao.Add(Mensagem.Dominialidade.AreaInvalida("exploracao" + item.Identificacao, "Quantidade"));
                            }
                            else if (DecimalEtx.ToDecimalMask(produto.Quantidade).GetValueOrDefault() <= 0)
                            {
                                Validacao.Add(Mensagem.Dominialidade.AreaMaiorZero("exploracao" + item.Identificacao, "Quantidade"));
                            }
                        }
                        else
                        {
                            Validacao.Add(Mensagem.Dominialidade.AreaObrigatoria("exploracao" + item.Identificacao, "Quantidade"));
                        }
                    }
                }
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(ComplementacaoDados complementacao)
        {
            #region Dados do Responsavel

            if (complementacao.AutuadoTipo == (int)eTipoAutuado.Empreendimento)
            {
                if (complementacao.AutuadoId <= 0)
                {
                    Validacao.Add(Mensagem.ComplementacaoDados.ResponsavelObrigatorio);
                }
            }

            if (complementacao.ResidePropriedadeTipo <= 0)
            {
                Validacao.Add(Mensagem.ComplementacaoDados.ResidePropriedadeObrigatorio);
            }

            if (complementacao.RendaMensalFamiliarTipo <= 0)
            {
                Validacao.Add(Mensagem.ComplementacaoDados.RendaMensalFamiliarObrigatoria);
            }

            if (complementacao.NivelEscolaridadeTipo <= 0)
            {
                Validacao.Add(Mensagem.ComplementacaoDados.NivelEscolaridadeObrigatorio);
            }

            if (complementacao.VinculoComPropriedadeTipo <= 0)
            {
                Validacao.Add(Mensagem.ComplementacaoDados.VinculoComPropriedadeObrigatorio);
            }
            else
            {
                if (complementacao.VinculoComPropriedadeTipo == (int)eVinculoPropriedade.Outro)
                {
                    if (String.IsNullOrWhiteSpace(complementacao.VinculoComPropriedadeEspecificarTexto))
                    {
                        Validacao.Add(Mensagem.ComplementacaoDados.VinculoComPropriedadeEspecificarObrigatorio);
                    }
                }
            }

            if (complementacao.ConhecimentoLegislacaoTipo <= 0)
            {
                Validacao.Add(Mensagem.ComplementacaoDados.ConhecimentoLegislacaoObrigatorio);
            }
            else
            {
                if (complementacao.ConhecimentoLegislacaoTipo != (int)eRespostasDefault.NaoSeAplica)
                {
                    if (String.IsNullOrWhiteSpace(complementacao.Justificativa))
                    {
                        Validacao.Add(Mensagem.ComplementacaoDados.JustificativaObrigatoria);
                    }
                }
            }

            #endregion

            #region Dados da propriedade

            if (complementacao.AutuadoTipo == (int)eTipoAutuado.Empreendimento)
            {
                #region AreaTotalInformada

                if (!String.IsNullOrWhiteSpace(complementacao.AreaTotalInformada))
                {
                    Decimal aux = 0;
                    if (Decimal.TryParse(complementacao.AreaTotalInformada, out aux))
                    {
                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.ComplementacaoDados.AreaTotalInformadaMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.ComplementacaoDados.AreaTotalInformadaInvalida);
                    }
                }

                #endregion

                #region AreaCoberturaFlorestalNativa

                if (!String.IsNullOrWhiteSpace(complementacao.AreaCoberturaFlorestalNativa))
                {
                    Decimal aux = 0;
                    if (Decimal.TryParse(complementacao.AreaCoberturaFlorestalNativa, out aux))
                    {
                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.ComplementacaoDados.AreaCoberturaFlorestalNativaMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.ComplementacaoDados.AreaCoberturaFlorestalNativaInvalida);
                    }
                }

                #endregion


                if (complementacao.ReservalegalTipo <= 0)
                {
                    Validacao.Add(Mensagem.ComplementacaoDados.ReservalegalObrigatoria);
                }
            }

            #endregion

            return(Validacao.EhValido);
        }
        internal Resultados <EmpreendimentoAtividade> Filtrar(Dictionary <string, DadoFiltro> filtros)
        {
            Resultados <EmpreendimentoAtividade> retorno = new Resultados <EmpreendimentoAtividade>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                string  comandtxt = string.Empty;
                Comando comando   = bancoDeDados.CriarComando("");

                #region Adicionando Filtros

                if (filtros.ContainsKey("secao"))
                {
                    comandtxt += " and upper(secao) like upper(:secao)";
                    comando.AdicionarParametroEntrada("secao", filtros["secao"].Valor + "%", filtros["secao"].Tipo);
                }

                if (filtros.ContainsKey("divisao"))
                {
                    comandtxt += " and divisao = :divisao ";
                    comando.AdicionarParametroEntrada("divisao", filtros["divisao"].Valor, filtros["divisao"].Tipo);
                }

                if (filtros.ContainsKey("atividade"))
                {
                    comandtxt += " and upper(atividade) like upper(:atividade)";
                    comando.AdicionarParametroEntrada("atividade", filtros["atividade"].Valor + "%", filtros["atividade"].Tipo);
                }

                if (filtros.ContainsKey("cnae"))
                {
                    comandtxt += " and upper(cod_cnae) like upper(:cnae)";
                    comando.AdicionarParametroEntrada("cnae", filtros["cnae"].Valor + "%", filtros["cnae"].Tipo);
                }

                List <String> ordenar = new List <String>();
                List <String> colunas = new List <String>()
                {
                    "cod_cnae", "atividade"
                };

                if (filtros.ContainsKey("ordenar"))
                {
                    ordenar.Add(filtros["ordenar"].Valor.ToString());
                }
                else
                {
                    ordenar.Add("cod_cnae");
                }
                #endregion

                #region Quantidade de registro do resultado

                comando.DbCommand.CommandText = String.Format("select count(*) from {0}tab_empreendimento_atividade a where a.id > 0" + comandtxt, (string.IsNullOrEmpty(EsquemaBanco) ? "" : "."));

                retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));

                if (retorno.Quantidade < 1)
                {
                    Mensagem msgSemRegistros = Mensagem.Funcionario.NaoEncontrouRegistros;
                    Validacao.Add(msgSemRegistros);
                }

                if (filtros.ContainsKey("menor"))
                {
                    comando.AdicionarParametroEntrada("menor", filtros["menor"].Valor, filtros["menor"].Tipo);
                }
                else
                {
                    comando.AdicionarParametroEntrada("menor", 1, DbType.Int32);
                }

                if (filtros.ContainsKey("maior"))
                {
                    comando.AdicionarParametroEntrada("maior", filtros["maior"].Valor, filtros["maior"].Tipo);
                }
                else
                {
                    comando.AdicionarParametroEntrada("maior", 10, DbType.Int32);
                }

                comandtxt = String.Format(@"select a.id, a.secao, a.divisao, a.atividade, a.tid, a.cod_cnae from 
				{0}tab_empreendimento_atividade a where a.id > 0"                 + comandtxt + DaHelper.Ordenar(colunas, ordenar), (string.IsNullOrEmpty(EsquemaBanco) ? "" : "."));

                comando.DbCommand.CommandText = @"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor";

                #endregion

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    #region Adicionando os dados na classe de retorno
                    EmpreendimentoAtividade atividade;
                    while (reader.Read())
                    {
                        atividade       = new EmpreendimentoAtividade();
                        atividade.Id    = Convert.ToInt32(reader["id"]);
                        atividade.Secao = reader["secao"].ToString();
                        atividade.CNAE  = reader["cod_cnae"].ToString();

                        if (reader["divisao"] != null && !Convert.IsDBNull(reader["divisao"]))
                        {
                            atividade.Divisao = Convert.ToInt32(reader["divisao"]);
                        }
                        atividade.Atividade = reader["atividade"].ToString();
                        atividade.Tid       = reader["tid"].ToString();

                        retorno.Itens.Add(atividade);
                    }

                    reader.Close();
                    #endregion
                }
            }

            return(retorno);
        }
Example #13
0
        public bool Posse(Posse posse, int empreendimentoId)
        {
            if (string.IsNullOrWhiteSpace(posse.Identificacao))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.CampoObrigatorio);
            }

            if (posse.AreaCroqui <= 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.CampoObrigatorio);
            }

            if (posse.AreaRequerida <= 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.AreaRequeridaObrigatoria);
            }

            if (posse.RegularizacaoTipo <= 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.TipoRegularizacaoObrigatorio);
            }
            if (posse.ComprovacaoId == 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.ComprovacaoObrigatoria);
            }
            if (posse.AreaPosseDocumento <= 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.AreaPosseDocumento);
            }
            if (string.IsNullOrEmpty(posse.ConfrontacoesNorte))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.ConfrontacoesNorte);
            }
            if (string.IsNullOrEmpty(posse.ConfrontacoesSul))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.ConfrontacoesSul);
            }
            if (string.IsNullOrEmpty(posse.ConfrontacoesLeste))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.ConfrontacoesLeste);
            }
            if (string.IsNullOrEmpty(posse.ConfrontacoesOeste))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.ConfrontacoesOeste);
            }
            if (string.IsNullOrEmpty(posse.DescricaoComprovacao))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.DescricaoComprovacao);
            }



            #region Dominios Avulsos

            if (!posse.PossuiDominioAvulso.HasValue)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.PossuiDominioAvulsoObrigatorio);
            }

            if (posse.PossuiDominioAvulsoBool)
            {
                if (posse.DominiosAvulsos == null || posse.DominiosAvulsos.Count <= 0)
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.DominioAvulsoObrigatorio);
                }
                else
                {
                    posse.DominiosAvulsos.ForEach(dominio => {
                        DominioAvulso(posse.DominiosAvulsos.Where(x => x != dominio).ToList(), dominio);
                    });
                }
            }

            #endregion

            #region Transmitentes

            if (posse.Transmitentes.Count(x => x.TempoOcupacao <= 0) > 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.TempoDeOcupacaoObrigatorio);
            }

            if (posse.Transmitentes.Count(x => x.Transmitente.Id <= 0) > 0)
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.TrasmitenteObrigatorio);
            }

            if (posse.Transmitentes.Any(x => posse.Transmitentes.Count(y => y.Transmitente.Id == x.Transmitente.Id) > 1))
            {
                Validacao.Add(Mensagem.RegularizacaoFundiaria.TrasmitenteJaAdicionado);
            }

            #endregion

            if (_da.EmpreendimentoZonaAlterada(empreendimentoId, posse.Zona))
            {
                Validacao.Add(Mensagem.Caracterizacao.SegmentoEmpreendimentoAlterado);
                return(Validacao.EhValido);
            }


            #region Zona Rural

            if (posse.Zona == (int)eZonaLocalizacao.Rural)
            {
                if (posse.UsoAtualSolo.Count <= 0)
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.UsoSoloObrigatorio);
                }

                if (posse.UsoAtualSolo.Count(x => x.AreaPorcentagem <= 0) > 0)
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.UsoSoloTipoObrigatorio);
                }

                int porcentagem = posse.UsoAtualSolo.Sum(x => x.AreaPorcentagem);
                if (porcentagem > 100)
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.UsoSoloLimitePorcentagem);
                }

                if (posse.RelacaoTrabalho <= 0)
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.RelacaoTrabalhoObrigatorio);
                }

                if (string.IsNullOrWhiteSpace(posse.Benfeitorias))
                {
                    Validacao.Add(Mensagem.RegularizacaoFundiaria.BenfeitoriasEdificacoesObrigatorio);
                }
            }

            #endregion

            #region Opções

            foreach (Opcao opcao in posse.Opcoes)
            {
                switch (opcao.TipoEnum)
                {
                case eTipoOpcao.TerrenoDevoluto:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.TerrenoDevolutoObrigatorio);
                        break;
                    }

                    if (String.IsNullOrEmpty(opcao.Outro) || opcao.Outro == "0")
                    {
                        if (opcao.Valor == 0)
                        {
                            Validacao.Add(Mensagem.RegularizacaoFundiaria.EspecificarDominialidadeObrigatorio);
                        }
                        else
                        {
                            Validacao.Add(Mensagem.RegularizacaoFundiaria.HomologacaoAprovadaObrigatoria);
                        }
                    }
                    break;

                case eTipoOpcao.RequerenteResideNaPosse:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.RequerenteResidePosseObrigatorio);
                    }

                    ValidacoesGenericasBus.DataMensagem(new DateTecno()
                    {
                        DataTexto = opcao.Outro
                    }, "DataArquisicao", "aquisição ou ocupação");
                    break;

                case eTipoOpcao.ExisteLitigio:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.ExisteLitigioObrigatorio);
                        break;
                    }

                    if (opcao.Valor == 1 && String.IsNullOrEmpty(opcao.Outro))
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.NomeLitigioObrigatorio);
                    }
                    break;

                case eTipoOpcao.SobrepoeSeDivisa:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.SobrepoeFaixaDivisaObrigatorio);
                        break;
                    }

                    if (opcao.Valor == 1 && opcao.Outro == "0")
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.AQuemPertenceLimiteObrigatorio);
                    }
                    break;

                case eTipoOpcao.BanhadoPorRioCorrego:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.BanhadoRioCorregoObrigatorio);
                        break;
                    }

                    if (opcao.Valor == 1 && String.IsNullOrEmpty(opcao.Outro))
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.NomeRioCorregoObrigatorio);
                    }
                    break;

                case eTipoOpcao.PossuiNascente:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.PossuiNascenteObrigatorio);
                    }
                    break;

                case eTipoOpcao.RedeAgua:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.RedeAguaObrigatorio);
                    }
                    break;

                case eTipoOpcao.RedeEsgoto:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.RedeEsgotoObrigatorio);
                    }
                    break;

                case eTipoOpcao.LuzEletrica:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.LuzEletricaDomiciliarObrigatorio);
                    }
                    break;

                case eTipoOpcao.IluminacaoPublica:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.IluminacaoViaPublicaObrigatorio);
                    }
                    break;

                case eTipoOpcao.RedeTelefonica:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.RedeTelefonicaObrigatorio);
                    }
                    break;

                case eTipoOpcao.Calcada:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.CalcadaObrigatorio);
                    }
                    break;

                case eTipoOpcao.Pavimentacao:

                    if (!opcao.Valor.HasValue)
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.PavimentacaoObrigatorio);
                        break;
                    }

                    if (opcao.Valor == 1 && String.IsNullOrEmpty(opcao.Outro))
                    {
                        Validacao.Add(Mensagem.RegularizacaoFundiaria.TipoPavimentacaoObrigatorio);
                    }
                    break;
                }
            }

            #endregion

            return(Validacao.EhValido);
        }
Example #14
0
        public int Importar(Requerimento requerimento, BancoDeDados bancoCredenciado, BancoDeDados bancoInterno)
        {
            BancoDeDados bancoDeDadosInterno     = null;
            BancoDeDados bancoDeDadosCredenciado = null;
            int          empreedimentoIdInterno  = 0;

            RequerimentoCredenciadoBus busRequerimentoCredenciado = new RequerimentoCredenciadoBus();

            var requerimentoCredenciado = busRequerimentoCredenciado.Obter(requerimento.Id, bancoCredenciado,
                                                                           bancoInterno, true);

            requerimentoCredenciado.SetorId = 20;             //Departamento de Recursos Naturais Renováveis

            requerimentoCredenciado.Empreendimento.SelecaoTipo = (int)eExecutorTipo.Credenciado;
            requerimentoCredenciado.Pessoas.ForEach(p =>
            {
                p.SelecaoTipo = (int)eExecutorTipo.Credenciado;
            });

            List <Pessoa> pessoasRelacionadas = ObterPessoasRelacionadas(requerimentoCredenciado, bancoCredenciado);

            requerimentoCredenciado.IsCredenciado = true;

            GerenciadorTransacao.ObterIDAtual();

            using (bancoDeDadosInterno = BancoDeDados.ObterInstancia(bancoInterno))
            {
                bancoDeDadosInterno.IniciarTransacao();

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

                    requerimentoCredenciado = ImportarPessoas(requerimentoCredenciado, pessoasRelacionadas,
                                                              bancoDeDadosInterno);

                    if (requerimentoCredenciado.Empreendimento.Id > 0)
                    {
                        requerimentoCredenciado = ImportarEmpreendimento(requerimentoCredenciado, bancoDeDadosInterno,
                                                                         bancoDeDadosCredenciado);
                    }

                    _daREq.Importar(requerimentoCredenciado, bancoDeDadosInterno);

                    busRequerimentoCredenciado.AlterarSituacao(
                        new Requerimento()
                    {
                        Id         = requerimentoCredenciado.Id,
                        SituacaoId = (int)eRequerimentoSituacao.Importado
                    }, bancoDeDadosCredenciado, bancoDeDadosInterno);

                    AlterarSituacao(requerimentoCredenciado.Id, eProjetoDigitalSituacao.Finalizado, bancoDeDadosCredenciado);

                    bancoDeDadosCredenciado.Commit();
                }

                bancoDeDadosInterno.Commit();
                Validacao.Add(Mensagem.ProjetoDigital.RequerimentoImportado(requerimento.Numero.ToString()));
            }

            return(empreedimentoIdInterno);
        }
Example #15
0
        public List <Mensagem> SalvarItemUnidadeProducao(UnidadeProducaoItem unidade, int empreendimentoID)
        {
            List <Mensagem> mensagens = new List <Mensagem>();

            if (unidade.PossuiCodigoUP)
            {
                if (unidade.CodigoUP < 1)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.CodigoUPObrigatorio);
                }
                else
                {
                    if (unidade.CodigoUP.ToString().Length < 15)
                    {
                        mensagens.Add(Mensagem.UnidadeProducao.CodigoUPInvalido);
                    }
                    else
                    {
                        if (_da.CodigoUPExistente(unidade, empreendimentoID))
                        {
                            mensagens.Add(Mensagem.UnidadeProducao.CodigoUPJaExiste);
                        }
                    }
                }
            }

            if (unidade.TipoProducao == (int)eUnidadeProducaoTipoProducao.MaterialPropagacao)
            {
                if (String.IsNullOrEmpty(unidade.RenasemNumero))
                {
                    mensagens.Add(Mensagem.UnidadeProducao.RenasemNumeroObrigatorio);
                }

                if (String.IsNullOrEmpty(unidade.DataValidadeRenasem))
                {
                    mensagens.Add(Mensagem.Padrao.DataObrigatoria("UnidadeProducaoItem_DataValidadeRenasem", "validade"));
                }

                if (!String.IsNullOrEmpty(unidade.DataValidadeRenasem) && !ValidacoesGenericasBus.ValidarData(unidade.DataValidadeRenasem))
                {
                    mensagens.Add(Mensagem.Padrao.DataInvalida("UnidadeProducaoItem_DataValidadeRenasem", "validade"));
                }


                if (!String.IsNullOrEmpty(unidade.DataValidadeRenasem) && ValidacoesGenericasBus.ValidarData(unidade.DataValidadeRenasem) && Convert.ToDateTime(unidade.DataValidadeRenasem) <= DateTime.Today)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.RenasemDataVencimentoMenorQueDataAtual);
                }
            }
            else
            {
                unidade.RenasemNumero       = string.Empty;
                unidade.DataValidadeRenasem = string.Empty;
            }

            if (unidade.AreaHA <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.AreaHAObrigatorio);
            }

            if (unidade.Coordenada.EastingUtm.GetValueOrDefault() < 1 || unidade.Coordenada.NorthingUtm.GetValueOrDefault() < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CoordenadaObrigatorio);
            }

            if (unidade.Coordenada.EastingUtm <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.EastingUtmObrigatorio);
            }

            if (unidade.Coordenada.NorthingUtm <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.NorthingUtmObrigatorio);
            }

            if (unidade.CulturaId < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CulturaObrigatorio);
            }

            if (unidade.CultivarId < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.CultivarObrigatorio);
            }

            if (string.IsNullOrEmpty(unidade.DataPlantioAnoProducao))
            {
                mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoObrigatorio);
            }
            else
            {
                string[] mesAno = unidade.DataPlantioAnoProducao.Split('/');

                if (unidade.DataPlantioAnoProducao.Length != 7 || mesAno.Length < 2 || Convert.ToInt32(mesAno.GetValue(0)) <= 0 || Convert.ToInt32(mesAno.GetValue(0)) > 12 || Convert.ToInt32(mesAno.GetValue(1)) <= 0)
                {
                    mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoInvalida);
                }
                else
                {
                    if (Convert.ToInt32(mesAno.GetValue(1)) > DateTime.Now.Year || (Convert.ToInt32(mesAno.GetValue(0)) > DateTime.Now.Month && Convert.ToInt32(mesAno.GetValue(1)) == DateTime.Now.Year))
                    {
                        mensagens.Add(Mensagem.UnidadeProducao.DataPlantioAnoProducaoMaiorAtual);
                    }
                }
            }

            if (unidade.Produtores.Count < 1)
            {
                Validacao.Add(Mensagem.UnidadeProducao.ProdutorObrigatorio);
            }

            unidade.Produtores.ForEach(x =>
            {
                if (!_da.VerificarResponsavelEmpreendimento(empreendimentoID, x.Id.GetValueOrDefault()))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.ProdutorNaoEstaMaisVinculadoNoEmpreendimento(x.NomeRazao));
                }
            });

            if (unidade.ResponsaveisTecnicos.Count < 1)
            {
                mensagens.Add(Mensagem.UnidadeProducao.ResponsavelTecnicoObrigatorio);
            }
            else
            {
                foreach (var item in unidade.ResponsaveisTecnicos)
                {
                    if (!item.ArtCargoFuncao)
                    {
                        if (!ValidacoesGenericasBus.ValidarData(item.DataValidadeART))
                        {
                            mensagens.Add(Mensagem.Padrao.DataInvalida("UnidadeProducaoItem_ResponsavelTecnico_DataValidadeART", "validade da ART"));
                        }
                    }
                    else
                    {
                        item.DataValidadeART = string.Empty;
                    }
                }
            }

            if (unidade.EstimativaProducaoQuantidadeAno <= 0)
            {
                mensagens.Add(Mensagem.UnidadeProducao.EstimativaProducaoQuantidadeAnoObrigatorio);
            }

            if (string.IsNullOrEmpty(unidade.EstimativaProducaoUnidadeMedida))
            {
                mensagens.Add(Mensagem.UnidadeProducao.EstimativaProducaoUnidadeMedidaObrigatorio);
            }

            return(mensagens);
        }
        public bool ValidarAtividade(List <Atividade> atividades, string local = null)
        {
            if (atividades.Count <= 0)
            {
                Validacao.Add(Msg.AtividadeObrigatorio);
                return(Validacao.EhValido);
            }

            int    SetorId                  = atividades[0].SetorId;
            int    titulos                  = 0;
            int    titulosDeclaratorio      = 0;
            string tituloDeclaratorioModelo = string.Empty;

            foreach (Atividade atividade in atividades)
            {
                #region Atividades

                if (SetorId != atividade.SetorId)
                {
                    Validacao.Add(Msg.AtividadesSetoresDiferentes);
                    return(Validacao.EhValido);
                }

                if (atividade.Finalidades.Count < 1)
                {
                    Validacao.Add(Msg.TituloObrigatorio(atividade.NomeAtividade));
                    return(Validacao.EhValido);
                }

                if (!_atividadeBus.AtividadeAtiva(atividade.Id))
                {
                    Validacao.Add(Msg.AtividadeDesativada(atividade.NomeAtividade, local));
                }

                foreach (var item in atividade.Finalidades)
                {
                    #region Finalidades

                    if (item.TituloModelo == 0)
                    {
                        Validacao.Add(Msg.TituloObrigatorio(atividade.NomeAtividade));
                    }

                    //Verifica se a situação da atividade é encerrada ou já tem título emitido
                    if (atividade.Protocolo.Id > 0 && _atividadeBus.ValidarAtividadeComTituloOuEncerrada(atividade.Protocolo.Id.Value, atividade.Protocolo.IsProcesso, atividade.Id, item.TituloModelo))
                    {
                        continue;
                    }

                    if (!_atividadeConfigurada.AtividadeConfigurada(atividade.Id, item.TituloModelo))
                    {
                        Validacao.Add(Msg.TituloNaoConfiguradoAtividade(item.TituloModeloTexto, atividade.NomeAtividade, local));
                        continue;
                    }

                    TituloModelo modelo = _tituloModeloBus.Obter(item.TituloModelo);

                    if (modelo.TipoDocumentoEnum == eTituloModeloTipoDocumento.Titulo)
                    {
                        ++titulos;
                    }
                    else
                    {
                        ++titulosDeclaratorio;
                        tituloDeclaratorioModelo = modelo.Nome;
                    }

                    if (titulos > 0 && titulosDeclaratorio > 0)
                    {
                        Validacao.Add(Msg.TituloDeclaratorioOutroRequerimento(tituloDeclaratorioModelo));
                    }

                    if (item.Id == 3)                    //Renovação
                    {
                        #region Renovacao

                        if (!modelo.Regra(eRegra.Renovacao))
                        {
                            Validacao.Add(Msg.TituloNaoEhRenovacao(item.TituloModeloTexto, atividade.NomeAtividade, local));
                        }

                        if (modelo.Regra(eRegra.Renovacao))
                        {
                            if (item.EmitidoPorInterno)
                            {
                                if (item.TituloModeloAnteriorId == 0 || item.TituloModeloAnteriorId == null)
                                {
                                    Validacao.Add(Msg.TituloAnteriorObrigatorio(item.TituloModeloTexto, atividade.NomeAtividade));
                                }

                                if (string.IsNullOrWhiteSpace(item.TituloAnteriorNumero))
                                {
                                    Validacao.Add(Msg.NumeroAnteriorObrigatorio(item.TituloModeloTexto, atividade.NomeAtividade));
                                }
                                else
                                {
                                    if (!ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(item.TituloAnteriorNumero))
                                    {
                                        Validacao.Add(Msg.TituloAnteriorNumeroInvalido);
                                    }
                                }

                                CarregarTituloAnteriorSigla(item);
                            }
                            else
                            {
                                ValidarTituloNumeroOrgaoTexto(item, atividade);
                            }
                        }

                        #endregion
                    }
                    else
                    {
                        #region Fase Anterior

                        if (!modelo.Regra(eRegra.FaseAnterior) && (item.TituloModeloAnteriorId != null && item.TituloModeloAnteriorId != 0))
                        {
                            Validacao.Add(Msg.TituloNaoTemTituloAnterior(item.TituloModeloAnteriorTexto, item.TituloModeloTexto, local));
                            continue;
                        }

                        Boolean adicionouTituloAnterior = false;
                        Boolean validarTituloAnterior   = Convert.ToBoolean((modelo.Resposta(eRegra.FaseAnterior, eResposta.TituloAnteriorObrigatorio) ?? new TituloModeloResposta()).Valor);

                        if (item.EmitidoPorInterno)
                        {
                            adicionouTituloAnterior = (item.TituloAnteriorId.GetValueOrDefault(0) > 0) || (!String.IsNullOrWhiteSpace(item.TituloAnteriorNumero));
                        }
                        else
                        {
                            adicionouTituloAnterior = (!String.IsNullOrWhiteSpace(item.TituloModeloAnteriorTexto)) || (!String.IsNullOrWhiteSpace(item.TituloAnteriorNumero)) || (!String.IsNullOrWhiteSpace(item.OrgaoExpedidor));
                        }

                        validarTituloAnterior = validarTituloAnterior || adicionouTituloAnterior;

                        if (modelo.Regra(eRegra.FaseAnterior) && validarTituloAnterior)
                        {
                            List <TituloModeloResposta> respostas = modelo.Respostas(eRegra.FaseAnterior, eResposta.Modelo);

                            if (respostas == null || respostas.Count < 1)
                            {
                                Validacao.Add(Msg.TituloNaoEhFaseAnterior(item.TituloModeloTexto, local));
                            }

                            if (item.EmitidoPorInterno)
                            {
                                if (item.TituloModeloAnteriorId != null && item.TituloModeloAnteriorId != 0)
                                {
                                    if (respostas.SingleOrDefault(x => x.Valor.ToString() == item.TituloModeloAnteriorId.ToString()) == null)
                                    {
                                        Validacao.Add(Msg.TituloNaoTemTituloAnterior(item.TituloModeloTexto, item.TituloModeloAnteriorTexto, local));
                                    }
                                }

                                if (string.IsNullOrWhiteSpace(item.TituloAnteriorNumero))
                                {
                                    Validacao.Add(Msg.NumeroAnteriorObrigatorio(item.TituloModeloTexto, atividade.NomeAtividade));
                                }
                                else
                                {
                                    if (!(ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(item.TituloAnteriorNumero) ||
                                          ValidacoesGenericasBus.ValidarNumero(item.TituloAnteriorNumero, 12)))
                                    {
                                        Validacao.Add(Msg.TituloAnteriorNumeroInvalido);
                                    }
                                    else
                                    {
                                        if (ValidacoesGenericasBus.ValidarNumero(item.TituloAnteriorNumero, 12) &&
                                            _da.ValidarNumeroSemAnoExistente(item.TituloAnteriorNumero, item.TituloModeloAnteriorId.GetValueOrDefault()))
                                        {
                                            Validacao.Add(Msg.TituloNumeroSemAnoEncontrado);
                                        }
                                    }
                                }

                                CarregarTituloAnteriorSigla(item);
                            }
                            else
                            {
                                ValidarTituloNumeroOrgaoTexto(item, atividade);
                            }
                        }

                        #endregion
                    }
                    #endregion
                }

                #endregion
            }

            return(Validacao.EhValido);
        }
Example #17
0
        public bool Salvar(UnidadeProducao caracterizacao)
        {
            try
            {
                if (!_validar.Salvar(caracterizacao))
                {
                    return(Validacao.EhValido);
                }

                #region Configurar Salvar

                if (!caracterizacao.PossuiCodigoPropriedade)
                {
                    if (caracterizacao.Id < 1)
                    {
                        caracterizacao.CodigoPropriedade = _da.ObterSequenciaCodigoPropriedade();
                    }
                    else
                    {
                        caracterizacao.CodigoPropriedade = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id, true).CodigoPropriedade;
                    }
                }

                RequestJson requestJson                        = new RequestJson();
                ResponseJsonData <dynamic> resposta            = new ResponseJsonData <dynamic>();
                UnidadeProducao            caracterizacaoBanco = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id);

                int ultimoCodigoUP = _da.ObterUltimoCodigoUP(caracterizacao.Empreendimento.Id);
                foreach (long item in caracterizacao.UnidadesProducao.Where(x => x.PossuiCodigoUP).Select(x => x.CodigoUP))
                {
                    int aux = Convert.ToInt32(item.ToString().Substring(14));
                    if (aux > ultimoCodigoUP)
                    {
                        ultimoCodigoUP = aux;
                    }
                }

                foreach (UnidadeProducaoItem item in caracterizacao.UnidadesProducao)
                {
                    int codigoIbge = 0;
                    resposta = requestJson.Executar <dynamic>(_configCoord.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + item.Coordenada.EastingUtm + "&northing=" + item.Coordenada.NorthingUtm);

                    if (resposta.Erros != null && resposta.Erros.Count > 0)
                    {
                        Validacao.Erros.AddRange(resposta.Erros);
                        return(Validacao.EhValido);
                    }

                    var objJson = resposta.Data;
                    if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                    {
                        Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                    }

                    if (!Validacao.EhValido)
                    {
                        return(Validacao.EhValido);
                    }

                    if (objJson["Municipio"] != null)
                    {
                        codigoIbge = Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0);
                    }

                    ListaValoresDa listaValoresDa = new ListaValoresDa();
                    item.Municipio = listaValoresDa.ObterMunicipio(codigoIbge);

                    if (!item.PossuiCodigoUP)
                    {
                        item.AnoAbertura = DateTime.Today.Year.ToString().Substring(2);

                        if (item.Id < 1)
                        {
                            ultimoCodigoUP++;

                            item.CodigoUP = Convert.ToInt64(
                                item.Municipio.Ibge.ToString() +
                                caracterizacao.CodigoPropriedade.ToString("D4") +
                                item.AnoAbertura +
                                ultimoCodigoUP.ToString("D2"));
                        }
                        else
                        {
                            item.CodigoUP = caracterizacaoBanco.UnidadesProducao.Single(x => x.Id == item.Id).CodigoUP;
                        }
                    }
                    else
                    {
                        item.AnoAbertura = item.CodigoUP.ToString().Substring(11, 2);
                    }

                    foreach (var aux in item.ResponsaveisTecnicos)
                    {
                        aux.CFONumero = aux.CFONumero.Split('-').GetValue(0).ToString();
                    }
                }

                #endregion

                if (caracterizacao.UnidadesProducao.Any(x => caracterizacao.UnidadesProducao.Count(y => y.CodigoUP == x.CodigoUP) > 1))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoItemIncorreto);
                    return(false);
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    if (item.CodigoUP.ToString().Substring(7, 4) != caracterizacao.CodigoPropriedade.ToString("D4"))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                        return(false);
                    }
                }

                GerenciadorTransacao.ObterIDAtual();

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

                    _da.Salvar(caracterizacao, bancoDeDados);

                    Validacao.Add(Mensagem.UnidadeProducao.SalvoSucesso);

                    bancoDeDados.Commit();
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }
Example #18
0
        public void ConcluirCadastro(int fiscalizacaoId)
        {
            Fiscalizacao fiscalizacao    = new Fiscalizacao();
            bool         gerarAutosTermo = false;
            bool         gerouVencimento = false;

            try
            {
                if (_validar.Finalizar(fiscalizacaoId))
                {
                    GerenciadorTransacao.ObterIDAtual();

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

                        fiscalizacao = Obter(fiscalizacaoId, banco: bancoDeDados);

                        //Fiscalizacao
                        gerarAutosTermo = fiscalizacao.Infracao.IsGeradaSistema.GetValueOrDefault() ||
                                          fiscalizacao.ObjetoInfracao.TeiGeradoPeloSistema.GetValueOrDefault() > 0 ||
                                          fiscalizacao.MaterialApreendido.IsTadGeradoSistema.GetValueOrDefault();

                        #region AI

                        if (fiscalizacao.Infracao.IsGeradaSistema.HasValue)
                        {
                            if (!fiscalizacao.Infracao.IsGeradaSistema.GetValueOrDefault() && !gerarAutosTermo)
                            {
                                fiscalizacao.Vencimento.Data = fiscalizacao.Infracao.DataLavraturaAuto.Data.Value.AddDays(_prazoVencimentoDias);
                                gerouVencimento = true;
                            }
                        }

                        #endregion

                        #region TEI

                        if (fiscalizacao.ObjetoInfracao.TeiGeradoPeloSistema.HasValue)
                        {
                            if (!gerouVencimento && fiscalizacao.ObjetoInfracao.TeiGeradoPeloSistema.GetValueOrDefault() == 0 && !gerarAutosTermo)
                            {
                                fiscalizacao.Vencimento.Data = fiscalizacao.ObjetoInfracao.DataLavraturaTermo.Data.Value.AddDays(_prazoVencimentoDias);
                                gerouVencimento = true;
                            }
                        }

                        #endregion

                        #region TAD

                        if (fiscalizacao.MaterialApreendido.IsTadGeradoSistema.HasValue)
                        {
                            if (!gerouVencimento && !fiscalizacao.MaterialApreendido.IsTadGeradoSistema.GetValueOrDefault() && !gerarAutosTermo)
                            {
                                fiscalizacao.Vencimento.Data = fiscalizacao.MaterialApreendido.DataLavratura.Data.Value.AddDays(_prazoVencimentoDias);
                                gerouVencimento = true;
                            }
                        }

                        #endregion

                        if (!gerouVencimento)
                        {
                            fiscalizacao.Vencimento.Data = DateTime.Now.AddDays(_prazoVencimentoDias);
                        }

                        _da.ConcluirCadastro(fiscalizacao, gerarAutosTermo, bancoDeDados);

                        _daPrjGeo.ConcluirCadastro(fiscalizacao.Id, bancoDeDados);

                        ArquivoDa       arquivoDa  = new ArquivoDa();
                        ArquivoBus      arquivoBus = new ArquivoBus(eExecutorTipo.Interno);
                        PdfFiscalizacao pdf        = new PdfFiscalizacao();

                        if (gerarAutosTermo)
                        {
                            //AutoTermo
                            fiscalizacao.PdfAutoTermo             = new Arquivo();
                            fiscalizacao.PdfAutoTermo.Nome        = "AutoTermoFiscalizacao";
                            fiscalizacao.PdfAutoTermo.Extensao    = ".pdf";
                            fiscalizacao.PdfAutoTermo.ContentType = "application/pdf";
                            fiscalizacao.PdfAutoTermo.Buffer      = pdf.GerarAutoTermoFiscalizacao(fiscalizacao.Id, false, bancoDeDados);
                            arquivoBus.Salvar(fiscalizacao.PdfAutoTermo);

                            arquivoDa.Salvar(fiscalizacao.PdfAutoTermo, User.EtramiteIdentity.FuncionarioId, User.EtramiteIdentity.Name,
                                             User.EtramiteIdentity.Login, (int)eExecutorTipo.Interno, User.EtramiteIdentity.FuncionarioTid, bancoDeDados);
                        }
                        else
                        {
                            fiscalizacao.PdfAutoTermo.Id = null;
                        }

                        //Laudo
                        fiscalizacao.PdfLaudo             = new Arquivo();
                        fiscalizacao.PdfLaudo.Nome        = "LaudoFiscalizacao";
                        fiscalizacao.PdfLaudo.Extensao    = ".pdf";
                        fiscalizacao.PdfLaudo.ContentType = "application/pdf";
                        fiscalizacao.PdfLaudo.Buffer      = pdf.GerarLaudoFiscalizacao(fiscalizacao.Id, false, bancoDeDados);
                        arquivoBus.Salvar(fiscalizacao.PdfLaudo);

                        arquivoDa.Salvar(fiscalizacao.PdfLaudo, User.EtramiteIdentity.FuncionarioId, User.EtramiteIdentity.Name,
                                         User.EtramiteIdentity.Login, (int)eExecutorTipo.Interno, User.EtramiteIdentity.FuncionarioTid, bancoDeDados);

                        Arquivo arqCroqui = fiscalizacao.ProjetoGeo.Arquivos.SingleOrDefault(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.Croqui);

                        if (arqCroqui != null && arqCroqui.Id > 0)
                        {
                            arqCroqui = arquivoBus.Obter(arqCroqui.Id.GetValueOrDefault());

                            try
                            {
                                //Croqui
                                fiscalizacao.PdfCroqui             = new Arquivo();
                                fiscalizacao.PdfCroqui.Nome        = "CroquiFiscalizacao";
                                fiscalizacao.PdfCroqui.Extensao    = ".pdf";
                                fiscalizacao.PdfCroqui.ContentType = "application/pdf";
                                fiscalizacao.PdfCroqui.Buffer      = arqCroqui.Buffer;
                                arquivoBus.Salvar(fiscalizacao.PdfCroqui);

                                arquivoDa.Salvar(fiscalizacao.PdfCroqui, User.EtramiteIdentity.FuncionarioId, User.EtramiteIdentity.Name,
                                                 User.EtramiteIdentity.Login, (int)eExecutorTipo.Interno, User.EtramiteIdentity.FuncionarioTid, bancoDeDados);
                            }
                            finally
                            {
                                if (arqCroqui != null && arqCroqui.Buffer != null)
                                {
                                    arqCroqui.Buffer.Close();
                                }
                            }
                        }


                        _da.SalvarDocumentosGerados(fiscalizacao, bancoDeDados);

                        _da.GerarHistorico(fiscalizacao.Id, eHistoricoAcao.finalizar, bancoDeDados);

                        _da.GerarConsulta(fiscalizacao.Id, bancoDeDados);

                        Validacao.Add(Mensagem.Fiscalizacao.Concluir);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }
        }
Example #19
0
        public bool VerificarPessoaFisica(Pessoa pessoa, bool isConjuge = false)
        {
            VerificarCriarCpf(pessoa, isConjuge);

            if (String.IsNullOrWhiteSpace(pessoa.Fisica.Nome))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNomeMsg(isConjuge));
            }

            if (string.IsNullOrWhiteSpace(pessoa.Fisica.Nacionalidade))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNacionalidadeMsg(isConjuge));
            }

            if (string.IsNullOrWhiteSpace(pessoa.Fisica.Naturalidade))
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioNaturalidadeMsg(isConjuge));
            }

            if (!pessoa.Fisica.Sexo.HasValue && isConjuge)
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge));
            }
            else
            {
                if (pessoa.Fisica.Sexo <= 0)
                {
                    Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge));
                }
            }

            if (pessoa.Fisica.EstadoCivil <= 0)
            {
                Validacao.Add(Mensagem.Pessoa.ObrigatorioEstadoCivilMsg(isConjuge));
            }

            if (pessoa.Fisica.DataNascimento.GetValueOrDefault() == DateTime.MinValue)
            {
                Validacao.Add(Mensagem.Pessoa.DataNascimentoObrigatoriaMsg(isConjuge));
            }
            else
            {
                VerificarFisicaDataNascimento(pessoa.Fisica.DataNascimento, isConjuge);
            }

            if (pessoa.Fisica.ConjugeId.GetValueOrDefault() > 0)
            {
                if (_da.ExistePessoa(pessoa.Fisica.ConjugeCPF, pessoa.CredenciadoId.GetValueOrDefault(), BancoValidar) <= 0)
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeNaoExiste);
                }

                if (pessoa.Fisica.ConjugeId == pessoa.Id)
                {
                    Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais);
                }

                if (_da.ValidarConjugeAssociado(pessoa.CPFCNPJ, pessoa.Fisica.ConjugeCPF, User.EtramiteIdentity.FuncionarioId))
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado);
                }
            }
            else if (pessoa.Fisica.Conjuge != null && !string.IsNullOrEmpty(pessoa.Fisica.Conjuge.CPFCNPJ))
            {
                if (pessoa.Fisica.Conjuge.CPFCNPJ == pessoa.CPFCNPJ)
                {
                    Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais);
                }

                if (_da.ValidarConjugeAssociado(pessoa.CPFCNPJ, pessoa.Fisica.Conjuge.CPFCNPJ, pessoa.CredenciadoId.GetValueOrDefault()))
                {
                    Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado);
                }
            }

            if (!pessoa.IsCopiado && pessoa.Fisica.ConjugeId.GetValueOrDefault() > 0 && !isConjuge && User != null)
            {
                pessoa.Fisica.Conjuge = _da.Obter(pessoa.Fisica.ConjugeId.GetValueOrDefault(), null, simplificado: false);
                VerificarPessoaFisica(pessoa.Fisica.Conjuge, true);
            }


            return(Validacao.EhValido);
        }
        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)
            {
                Validacao.Add(Mensagem.Documento.QuantidadeDocumentoObrigatoria);
            }

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

            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);
        }
Example #21
0
        public ActionResult Editar(int id, int tipoCadastro = 0, int internoId = 0, bool isCopiado = false, bool isConjuge = false)
        {
            PessoaVM vm = new PessoaVM();

            vm.IsConjuge = isConjuge;

            if (id > 0)
            {
                vm.Pessoa = _bus.Obter(id);
                if (!_validar.EmPosseCredenciado(vm.Pessoa))
                {
                    Validacao.Add(Mensagem.Pessoa.Posse);

                    if (Request.IsAjaxRequest())
                    {
                        return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
                    }

                    return(RedirectToAction("Index", Validacao.QueryParamSerializer()));
                }
            }
            else
            {
                vm.Pessoa           = _busInterno.Obter(internoId);
                vm.Pessoa.IsCopiado = true;

                Pessoa pesCredenciado = _bus.Obter(vm.Pessoa.CPFCNPJ, credenciadoId: _bus.User.FuncionarioId);
                vm.Pessoa.Id        = pesCredenciado.Id;
                vm.Pessoa.InternoId = internoId;

                if (vm.Pessoa.IsJuridica)
                {
                    vm.Pessoa.Juridica.Representantes.ForEach(representante =>
                    {
                        representante.InternoId = representante.Id;
                        representante.Id        = 0;
                        representante.IsCopiado = true;
                    });
                }
                else
                {
                    if (vm.Pessoa.Fisica.ConjugeId > 0)
                    {
                        Pessoa pesCredenciadoAux = _bus.Obter(vm.Pessoa.Fisica.ConjugeCPF, simplificado: true, credenciadoId: _bus.User.FuncionarioId);
                        vm.Pessoa.Fisica.ConjugeInternoId = vm.Pessoa.Fisica.ConjugeId;
                        vm.Pessoa.Fisica.ConjugeId        = pesCredenciadoAux.Id;
                    }
                }

                if (!isCopiado && pesCredenciado.Fisica.ConjugeId.GetValueOrDefault() > 0)
                {
                    vm.Pessoa.Fisica.ConjugeId = pesCredenciado.Fisica.ConjugeId.GetValueOrDefault();
                }
            }

            vm.CpfCnpjValido          = true;
            vm.ExibirMensagensPartial = true;
            vm.OcultarLimparPessoa    = true;
            vm.TipoCadastro           = tipoCadastro;

            CarregaCampos(vm);
            PreencheSalvarVM(vm);

            vm.UrlAcao = Url.Action("Editar", "Pessoa");

            if (Request.IsAjaxRequest())
            {
                return(PartialView("PessoaPartial", vm));
            }

            return(View(vm));
        }
        internal bool Salvar(RegistroAtividadeFlorestal caracterizacao)
        {
            if (!_caracterizacaoValidar.Basicas(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

            if (caracterizacao.Id <= 0 && (_da.ObterPorEmpreendimento(caracterizacao.EmpreendimentoId, true) ?? new RegistroAtividadeFlorestal()).Id > 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoCaracterizacaoJaCriada);
                return(false);
            }

            #region Numero

            if (!caracterizacao.PossuiNumero.HasValue)
            {
                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.PossuiNumeroObrigatorio);
            }

            if (string.IsNullOrWhiteSpace(caracterizacao.NumeroRegistro) && caracterizacao.PossuiNumero.GetValueOrDefault())
            {
                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroRegistroObrigatorio);
            }
            else if (!ValidacoesGenericasBus.ValidarNumero(caracterizacao.NumeroRegistro, 9) && caracterizacao.PossuiNumero.GetValueOrDefault())
            {
                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroRegistroInvalido);
            }
            else if (_da.IsNumeroUtilizado(caracterizacao.NumeroRegistro, caracterizacao.EmpreendimentoId))
            {
                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroUtilizado);
            }
            else if (caracterizacao.PossuiNumero.GetValueOrDefault())
            {
                int numeroMaximo = _config.RegAtvFlorestalNumeroMaximo;
                if (Convert.ToInt32(caracterizacao.NumeroRegistro) > numeroMaximo)
                {
                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroRegistroSuperiorMax(numeroMaximo.ToString()));
                }
            }

            #endregion

            if (caracterizacao.Consumos.Count <= 0)
            {
                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.ConsumoObrigatorio);
            }

            #region Consumos

            var count = 0;
            caracterizacao.Consumos.ForEach(r =>
            {
                if (caracterizacao.Consumos.Any(x => caracterizacao.Consumos.Count(y => y.Atividade == x.Atividade) > 1))
                {
                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.CategoriaDuplicada);
                    return;
                }

                AtividadeSolicitada atividadeSolicitada = _da.ObterAtividadeSolicitada(r.Atividade);
                if (atividadeSolicitada != null && !atividadeSolicitada.Situacao)
                {
                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.AtividadeDesabilitada(atividadeSolicitada.Texto, count));
                }
                else
                {
                    if (r.Atividade == ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.FabricanteMotosserra) ||
                        r.Atividade == ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.ComercianteMotosserra))
                    {
                        r.FontesEnergia.Clear();
                    }
                    else
                    {
                        if (r.Atividade == 0)
                        {
                            Validacao.Add(Mensagem.RegistroAtividadeFlorestal.CategoriaObrigatoria(count));
                            return;
                        }

                        if (r.FontesEnergia.Count == 0)
                        {
                            Validacao.Add(Mensagem.RegistroAtividadeFlorestal.FonteEnergiaObrigatoria(count));
                            return;
                        }
                    }

                    if (!r.PossuiLicencaAmbiental.HasValue)
                    {
                        Validacao.Add(Mensagem.RegistroAtividadeFlorestal.PossuiLicencaAmbiental(count));
                    }
                    else
                    {
                        switch (r.PossuiLicencaAmbiental.GetValueOrDefault())
                        {
                        case ConfiguracaoSistema.NAO:
                            if (_caracterizacaoValidar.AtividadeLicencaObrigatoria(r.Atividade))
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.LicencaAmbientalObrigatoria(count, atividadeSolicitada.Categoria + " - " + atividadeSolicitada.Texto));
                            }
                            break;

                        case ConfiguracaoSistema.SIM:
                            if (!r.Licenca.EmitidoPorInterno.HasValue)
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.EmitidoIDAFOuExterno(count));
                            }
                            else
                            {
                                if (r.Licenca.TituloModelo == 0)
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.ModeloLicencaObrigatorio(count));
                                }

                                if (string.IsNullOrWhiteSpace(r.Licenca.TituloModeloTexto))
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.ModeloLicencaObrigatorio(count));
                                }

                                if (string.IsNullOrWhiteSpace(r.Licenca.TituloNumero))
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroLicencaObrigatorio(count));
                                }
                                else
                                {
                                    if (r.Licenca.EmitidoPorInterno.Value && !ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(r.Licenca.TituloNumero))
                                    {
                                        Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroLicencaInvalido(count));
                                    }
                                }

                                ValidacoesGenericasBus.DataMensagem(r.Licenca.TituloValidadeData, "TituloValidadeData_DataTexto" + count, "validade", false);

                                if (string.IsNullOrWhiteSpace(r.Licenca.ProtocoloNumero))
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroProtocoloLicencaObrigatorio(count));
                                }

                                if (r.Licenca.TituloValidadeData.Data.GetValueOrDefault() < DateTime.Today || !r.Licenca.ProtocoloRenovacaoData.IsEmpty)
                                {
                                    ValidacoesGenericasBus.DataMensagem(r.Licenca.ProtocoloRenovacaoData, "ProtocoloRenovacaoData_DataTexto" + count, "renovação");
                                }

                                if (!r.Licenca.ProtocoloRenovacaoData.IsEmpty && r.Licenca.TituloValidadeData.Data.GetValueOrDefault() < r.Licenca.ProtocoloRenovacaoData.Data)
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.RenovacaoDataMaiorValidade(count));
                                }

                                if (r.Licenca.TituloValidadeData.Data.GetValueOrDefault() < DateTime.Today && string.IsNullOrWhiteSpace(r.Licenca.ProtocoloRenovacaoNumero))
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroProtocoloRenovacaoObrigatorio(count));
                                }

                                if (!r.Licenca.EmitidoPorInterno.Value && string.IsNullOrWhiteSpace(r.Licenca.OrgaoExpedidor))
                                {
                                    Validacao.Add(Mensagem.RegistroAtividadeFlorestal.OrgaoExpedidoObrigatorio(count));
                                }
                            }
                            break;

                        case ConfiguracaoSistema.Dispensado:
                            if (!r.Licenca.EmitidoPorInterno.HasValue)
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.GrupoDispensadoEmitidoIDAFOuExterno(count));
                            }

                            if (string.IsNullOrWhiteSpace(r.Licenca.TituloModeloTexto))
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.DocumentoObrigatorio(count));
                            }

                            if (string.IsNullOrWhiteSpace(r.Licenca.ProtocoloNumero))
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.NumeroProtocoloLicencaObrigatorio(count));
                            }

                            if (string.IsNullOrWhiteSpace(r.Licenca.OrgaoExpedidor))
                            {
                                Validacao.Add(Mensagem.RegistroAtividadeFlorestal.OrgaoEmissorObrigatorio(count));
                            }
                            break;

                        default:
                            break;
                        }
                    }

                    if (string.IsNullOrWhiteSpace(r.DUANumero))
                    {
                        Validacao.Add(Mensagem.RegistroAtividadeFlorestal.DUANumeroObrigatorio(count));
                    }

                    if (Convert.ToDecimal(r.DUAValor) <= 0)
                    {
                        Validacao.Add(Mensagem.RegistroAtividadeFlorestal.DUAValorObrigatorio(count));
                    }

                    ValidacoesGenericasBus.DataMensagem(r.DUADataPagamento, "DUADataPagamento" + count, "pagamento do DUA");
                }

                count++;
            });

            #endregion

            return(Validacao.EhValido);
        }
Example #23
0
        public bool CopiarDadosCredenciado(int projetoDigitalID, BancoDeDados banco, BancoDeDados bancoCredenciado)
        {
            CaractCredBus.CaracterizacaoBus caracCredBus = new CaractCredBus.CaracterizacaoBus();
            ProjetoDigitalCredenciadoBus    projetoDigitalCredenciadoBus = new ProjetoDigitalCredenciadoBus();
            int empreendimentoID = projetoDigitalCredenciadoBus.Obter(projetoDigitalID, 0, null, null).EmpreendimentoId ?? 0;

            if (empreendimentoID < 1)
            {
                return(false);
            }

            EmpreendimentoCaracterizacao empreendimento       = caracCredBus.ObterEmpreendimentoSimplificado(empreendimentoID);
            ProjetoGeograficoBus         projetoGeograficoBus = new ProjetoGeograficoBus();

            List <Dependencia> dependencias = projetoDigitalCredenciadoBus.ObterDependencias(projetoDigitalID);
            ICaracterizacaoBus caracterizacaoBus;

            GerenciadorTransacao.ObterIDAtual();

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

                foreach (Dependencia item in dependencias.Where(x => x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico).ToList())
                {
                    projetoGeograficoBus.CopiarDadosCredenciado(item, empreendimento.InternoID, bancoDeDados, bancoCredenciado);

                    if (!Validacao.EhValido)
                    {
                        break;
                    }
                }

                if (!Validacao.EhValido)
                {
                    bancoDeDados.Rollback();
                    return(false);
                }

                foreach (Dependencia item in dependencias.Where(x => x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.Caracterizacao).ToList())
                {
                    caracterizacaoBus = CaracterizacaoBusFactory.Criar((eCaracterizacao)item.DependenciaCaracterizacao);

                    if (caracterizacaoBus == null)
                    {
                        Validacao.Add(eTipoMensagem.Erro, item.DependenciaCaracterizacaoTexto + " Bus não criada");
                    }

                    if (!caracterizacaoBus.CopiarDadosCredenciado(item, empreendimento.InternoID, bancoDeDados, bancoCredenciado))
                    {
                        break;
                    }
                }

                if (!Validacao.EhValido)
                {
                    bancoDeDados.Rollback();
                    return(false);
                }

                Validacao.Add(Mensagem.ProjetoDigital.CopiarCaracterizacao);
                bancoDeDados.Commit();
            }

            return(true);
        }
        public virtual void OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }

            if (AuthorizeCore(filterContext.HttpContext))
            {
                // ** IMPORTANT **
                // Since we're performing authorization at the action level, the authorization code runs
                // after the output caching module. In the worst case this could allow an authorized user
                // to cause the page to be cached, then an unauthorized user would later be served the
                // cached page. We work around this by telling proxies not to cache the sensitive page,
                // then we hook our custom authorization code into the caching mechanism so that we have
                // the final say on whether a page should be served from the cache.

                HttpCachePolicyBase cachePolicy = filterContext.HttpContext.Response.Cache;
                cachePolicy.SetProxyMaxAge(new TimeSpan(0));
                cachePolicy.AddValidationCallback(CacheValidateHandler, null /* data */);
            }
            else
            {
                // auth failed, redirect to login page

                /*if (filterContext.HttpContext.User.Identity.IsAuthenticated &&
                 *      _rolesSplit.Length > 0)
                 * {
                 *      PermissaoValidar validar = new PermissaoValidar();
                 *      validar.Verificar(_rolesSplit.Select(x => (ePermissao)Enum.Parse(typeof(ePermissao), x)).ToArray());
                 * }*/

                /*if (filterContext.HttpContext.User.Identity.IsAuthenticated && filterContext.HttpContext.Request.IsAjaxRequest())
                 * {
                 *      filterContext.Result = new JsonResult
                 *      {
                 *              Data = new
                 *              {
                 *                      MsgPermissoes = Validacao.Erros
                 *              },
                 *              JsonRequestBehavior = JsonRequestBehavior.AllowGet
                 *      };
                 *
                 *      filterContext.HttpContext.Response.StatusCode = 500;
                 *      //filterContext.HttpContext.Response.SubStatusCode = 1;
                 *      filterContext.HttpContext.Response.StatusDescription = Mensagem.Concatenar(Validacao.Erros.Select(x => x.Texto).ToList());
                 *      filterContext.HttpContext.Response.SuppressContent = false;
                 *      filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
                 * }
                 * else
                 * {*/
                Validacao.Add(new Mensagem()
                {
                    Tipo = eTipoMensagem.Erro, Texto = "Usuário não associado as regras do sistema. Contate o Administrador do sistema."
                });
                filterContext.Result = new HttpUnauthorizedResult();
                //string url = Validacao.QueryParamSerializer(FormsAuthentication.LoginUrl);
                //filterContext.Result = new RedirectResult(url);
                //}
            }
        }
        public bool DominioSalvar(Dominio dominio)
        {
            switch (dominio.Tipo)
            {
            case eDominioTipo.Matricula:
                #region Matricula

                if (String.IsNullOrWhiteSpace(dominio.Matricula))
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioMatriculaObrigatorio);
                }

                if (String.IsNullOrWhiteSpace(dominio.Folha))
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioFolhaObrigatorio);
                }

                if (String.IsNullOrWhiteSpace(dominio.Livro))
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioLivroObrigatorio);
                }

                if (String.IsNullOrWhiteSpace(dominio.Cartorio))
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioCartorioObrigatorio);
                }
                break;

                #endregion

            case eDominioTipo.Posse:
                #region Posse

                if (dominio.ComprovacaoId <= 0)
                {
                    Validacao.Add(Mensagem.Dominialidade.DominioComprovacaoObrigatorio);
                }

                if (dominio.ComprovacaoId != (int)eDominioComprovacao.PosseiroPrimitivo)
                {
                    if (dominio.ComprovacaoId != (int)eDominioComprovacao.Recibo &&
                        dominio.ComprovacaoId != (int)eDominioComprovacao.CertidaoPrefeitura &&
                        dominio.ComprovacaoId != (int)eDominioComprovacao.ContratoCompraVenda &&
                        dominio.ComprovacaoId != (int)eDominioComprovacao.Declaracao &&
                        dominio.ComprovacaoId != (int)eDominioComprovacao.Outros &&
                        dominio.ComprovacaoId != (int)eDominioComprovacao.CertificadoCadastroImovelRuralCCIR)
                    {
                        if (String.IsNullOrWhiteSpace(dominio.DescricaoComprovacao))
                        {
                            Validacao.Add(Mensagem.Dominialidade.RegistroObrigatorio);
                        }
                    }
                }
                break;

                #endregion
            }

            if (dominio.Tipo == eDominioTipo.Matricula || dominio.ComprovacaoId != (int)eDominioComprovacao.PosseiroPrimitivo)
            {
                if (!String.IsNullOrWhiteSpace(dominio.AreaDocumentoTexto))
                {
                    if (!ValidacoesGenericasBus.ValidarDecimal(DecimalEtx.ClearMask(dominio.AreaDocumentoTexto), 13, 2))
                    {
                        Validacao.Add(Mensagem.Dominialidade.AreaInvalida("DominioAreaDocumento", "Área " + ((dominio.Tipo == eDominioTipo.Matricula) ? "Matrícula" : "Posse") + " Documento"));
                    }
                    else if (DecimalEtx.ToDecimalMask(dominio.AreaDocumentoTexto).GetValueOrDefault() <= 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.AreaMaiorZero("DominioAreaDocumento", "Área " + ((dominio.Tipo == eDominioTipo.Matricula) ? "Matrícula" : "Posse") + " Documento"));
                    }
                }
                else
                {
                    Validacao.Add(Mensagem.Dominialidade.AreaObrigatoria("DominioAreaDocumento", "Área " + ((dominio.Tipo == eDominioTipo.Matricula) ? "Matrícula" : "Posse") + " Documento"));
                }
            }

            #region Empreendimento com localizacao Zona Rural

            if (!dominio.DataUltimaAtualizacao.IsEmpty)
            {
                ValidacoesGenericasBus.DataMensagem(dominio.DataUltimaAtualizacao, "DominioDataUltimaAtualizacao_DataTexto", "última atualização");
            }

            #endregion

            if (dominio.ReservasLegais == null || dominio.ReservasLegais.Count <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalObrigatoria);
            }

            if (dominio.ReservasLegais.Exists(x => x.SituacaoId == (int)eReservaLegalSituacao.NaoInformada) &&
                dominio.ReservasLegais.Exists(x => x.SituacaoId == (int)eReservaLegalSituacao.Proposta || x.SituacaoId == (int)eReservaLegalSituacao.Registrada))
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalNaoInformadaDeclarada);
            }

            string prefixo = "Dominio";

            if (String.IsNullOrWhiteSpace(dominio.ConfrontacaoNorte))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoNorteObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominio.ConfrontacaoSul))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoSulObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominio.ConfrontacaoLeste))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoLesteObrigatorio(prefixo));
            }

            if (String.IsNullOrWhiteSpace(dominio.ConfrontacaoOeste))
            {
                Validacao.Add(Mensagem.Dominialidade.ConfrontacaoOesteObrigatorio(prefixo));
            }

            return(Validacao.EhValido);
        }
Example #26
0
        internal bool Salvar(CARSolicitacao carSolicitacao)
        {
            if (carSolicitacao.ProjetoId < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.ProjetoObrigatorio);
                return(false);
            }

            if (carSolicitacao.Requerimento.Id < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoRequerimentoObrigatorio);
            }

            if (carSolicitacao.Atividade.Id < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoAtividadeObrigatoria);
            }

            if (carSolicitacao.Atividade.Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.CadastroAmbientalRural))
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoAtividadeInvalida);
            }

            if (carSolicitacao.Empreendimento.Id < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoEmpreendimentoObrigatorio);
            }

            if (carSolicitacao.Empreendimento.Codigo < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoEmpreendimentoCodigoObrigatorio);
            }

            if (string.IsNullOrEmpty(carSolicitacao.Empreendimento.NomeRazao))
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoEmpreendimentoNomeRazaoObrigatorio);
            }

            if (carSolicitacao.Declarante.Id < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoDeclaranteObrigatorio);
            }

            #region Projeto Digital

            ProjetoDigital projetoDigital = _busProjetoDigital.Obter(carSolicitacao.ProjetoId);

            if (projetoDigital.Situacao != (int)eProjetoDigitalSituacao.AguardandoImportacao)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SituacaoDeveSerAguardandoImportacao);
            }

            #endregion

            #region Requerimento

            Requerimento requerimento = _busRequerimento.ObterSimplificado(carSolicitacao.Requerimento.Id);

            if (requerimento == null || requerimento.Id < 1)
            {
                Validacao.Add(Mensagem.Requerimento.Inexistente);
            }

            if (requerimento.CredenciadoId != User.FuncionarioId)
            {
                Validacao.Add(Mensagem.Requerimento.PosseCredenciado);
            }

            if (requerimento.Empreendimento.Id < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.ProjetoDigitalSemEmpreendimento);
            }

            #endregion

            #region  Solitação de CAR

            EmpreendimentoCaracterizacao empreendimento = _busCaracterizacao.ObterEmpreendimentoSimplificado(carSolicitacao.Empreendimento.Id);
            if (!EmpreendimentoSolicitacaoCAR(empreendimento))
            {
                return(false);
            }

            #endregion  Solitação de CAR

            #region Validar Dados da Caracterizacao

            if (projetoDigital.Dependencias.Count(x => x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico) < 1)
            {
                Validacao.Add(Mensagem.CARSolicitacao.ProjetoDigitalDominialidadeAssociada);
            }

            projetoDigital.Dependencias.ForEach(x =>
            {
                if (x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico && x.DependenciaCaracterizacao == (int)eCaracterizacao.Dominialidade)
                {
                    if (_busProjetoGeografico.ObterSitacaoProjetoGeografico(x.DependenciaId) != (int)eProjetoGeograficoSituacao.Finalizado)
                    {
                        Validacao.Add(Mensagem.CARSolicitacao.ProjetoGeograficoNaoEstaFinalizado);
                    }
                }
            });

            #endregion

            #region Validar Dados do Titulo

            String tituloSituacao = _carSolicitacaoInternoDa.ObterSituacaoTituloCARExistente(empreendimento.InternoID);

            if (!String.IsNullOrWhiteSpace(tituloSituacao))
            {
                Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoPossuiTitulo(tituloSituacao));
            }

            #endregion

            return(Validacao.EhValido);
        }
        private bool Assinantes(Titulo titulo)
        {
            if (titulo == null)
            {
                return(false);
            }

            //Obrigatoriedade de assinante conforme configuração
            if (titulo.Modelo.Assinantes != null && titulo.Modelo.Assinantes.Count > 0)
            {
                // valida se título deve ter ao menos um assinante Dominio
                if (titulo.Assinantes != null && titulo.Assinantes.Count() <= 0)
                {
                    Validacao.Add(Mensagem.Titulo.AssinanteObrigatorio);
                    return(false);
                }
            }
            else
            {
                // valida se título deve ter ao menos um assinante Dominio
                if (titulo.Assinantes != null && titulo.Assinantes.Count() > 0)
                {
                    Validacao.Add(Mensagem.Titulo.AssinanteDesmarcar);
                    return(false);
                }

                //Não há mais validações de assinantes
                return(true);
            }

            List <FuncionarioLst> lstCnfFuncRespSetor = new List <FuncionarioLst>();
            FuncionarioLst        respSetor           = null;

            foreach (Assinante configAssinante in titulo.Modelo.Assinantes.Where(x => x.TipoId == 1))
            {
                respSetor = _funcionarioBus.ObterResponsavelSetor(configAssinante.SetorId);
                if (respSetor != null)
                {
                    lstCnfFuncRespSetor.Add(_funcionarioBus.ObterResponsavelSetor(configAssinante.SetorId));
                }
            }

            //Validar configuração de regras do modelo.
            if (lstCnfFuncRespSetor.Count == 0 && titulo.Modelo.Assinantes.Exists(x => x.TipoId == 1))
            {
                Validacao.Add(Mensagem.Titulo.AssinanteSetorSemResponsavel);
                return(false);
            }

            foreach (TituloAssinante assinante in titulo.Assinantes)
            {
                //Assinante configurado como Responsavel no modelo
                if (lstCnfFuncRespSetor.Any(x => x.Id == assinante.FuncionarioId))
                {
                    continue;
                }

                //Assinante configurado como qualquer funcionario do setor
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                {
                    bool noSetor = false;
                    foreach (Assinante configAssinante in titulo.Modelo.Assinantes.Where(x => x.TipoId == 2))
                    {
                        if (_funcionarioBus.VerificarFuncionarioContidoSetor(assinante.FuncionarioId, configAssinante.SetorId, bancoDeDados))
                        {
                            noSetor = true;
                            break;
                        }
                    }
                    if (noSetor)
                    {
                        continue;
                    }
                }
                Validacao.Add(Mensagem.Titulo.AssinanteInvalidoDesmarcar(_funcionarioBus.Obter(assinante.FuncionarioId).Nome));
            }

            if (titulo.Assinantes != null && titulo.Assinantes.Count > 0)
            {
                // valida se há algum assinante sem cargo escolhido
                foreach (TituloAssinante assinante in titulo.Assinantes)
                {
                    if (assinante.FuncionarioCargoId <= 0)
                    {
                        Validacao.Add(Mensagem.Titulo.AssinanteCargoObrigatorio);
                    }
                }
            }

            return(Validacao.EhValido);
        }
        public bool Dependencias(int empreendimentoId, int caracterizacaoTipo, List <Caracterizacao> caracterizacoes = null, bool isDependencia = false, bool validarProjetoGeoProprio = true, bool validarDscLicAtividadeProprio = true)
        {
            List <DependenciaLst> dependencias = _caracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);

            if (dependencias == null || dependencias.Count <= 0)
            {
                return(true);
            }

            if (caracterizacoes == null)
            {
                caracterizacoes = _da.ObterCaracterizacoes(empreendimentoId);
            }

            List <CaracterizacaoLst> caracterizacoesCache = _caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
            string caracterizacaoTexto = caracterizacoesCache.SingleOrDefault(x => x.Id == caracterizacaoTipo).Texto;

            dependencias = dependencias.Where(x => x.DependenteTipo == caracterizacaoTipo && x.TipoDetentorId == (int)eCaracterizacaoDependenciaTipo.Caracterizacao).ToList();

            Caracterizacao caracterizacao = null;

            foreach (DependenciaLst dependencia in dependencias)
            {
                caracterizacao = caracterizacoes.SingleOrDefault(y => (int)y.Tipo == dependencia.DependenciaTipo) ?? new Caracterizacao();

                switch (dependencia.TipoId)
                {
                case (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico:
                    if (dependencia.DependenciaTipo == caracterizacaoTipo)
                    {
                        if (!validarProjetoGeoProprio)
                        {
                            continue;
                        }
                        else if (caracterizacao.ProjetoId > 0 && caracterizacaoTipo != (int)eCaracterizacao.ExploracaoFlorestal)
                        {
                            if (!string.IsNullOrEmpty(DependenciasAlteradas(empreendimentoId, caracterizacaoTipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico,
                                                                            _da.ObterDependencias(caracterizacao.ProjetoId, (eCaracterizacao)caracterizacaoTipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico))))
                            {
                                Validacao.Add(Mensagem.Caracterizacao.DependenciaDesatualizada(true, caracterizacaoTexto));
                                continue;
                            }
                        }
                    }

                    if (dependencia.DependenteTipo == (int)eCaracterizacao.RegularizacaoFundiaria && caracterizacao.ProjetoId <= 0 && caracterizacaoTipo != (int)eCaracterizacao.RegularizacaoFundiaria)
                    {
                        Validacao.Add(Mensagem.Caracterizacao.DependenciasProjetoGeoSalvar(caracterizacaoTexto, false, caracterizacoesCache.SingleOrDefault(x => x.Id == (int)eCaracterizacao.Dominialidade).Texto));
                        continue;
                    }

                    if (dependencia.DependenteTipo == (int)eCaracterizacao.ExploracaoFlorestal && caracterizacao.ProjetoId <= 0 && caracterizacaoTipo != (int)eCaracterizacao.ExploracaoFlorestal)
                    {
                        Validacao.Add(Mensagem.Caracterizacao.DependenciasProjetoGeoSalvar(caracterizacaoTexto, false, caracterizacoesCache.SingleOrDefault(x => x.Id == dependencia.DependenciaTipo).Texto));
                        continue;
                    }
                    break;

                case (int)eCaracterizacaoDependenciaTipo.Caracterizacao:
                    if (caracterizacao.Id <= 0)
                    {
                        Validacao.Add(Mensagem.Caracterizacao.DependenciasCaracterizacaoSalvar(caracterizacaoTexto, false, caracterizacoesCache.SingleOrDefault(x => x.Id == dependencia.DependenciaTipo).Texto));
                        continue;
                    }
                    else if (validarProjetoGeoProprio || validarDscLicAtividadeProprio)
                    {
                        if (!string.IsNullOrEmpty(DependenciasAlteradas(empreendimentoId, dependencia.DependenciaTipo, eCaracterizacaoDependenciaTipo.Caracterizacao,
                                                                        _da.ObterDependencias(caracterizacao.Id, (eCaracterizacao)dependencia.DependenciaTipo, eCaracterizacaoDependenciaTipo.Caracterizacao))))
                        {
                            Validacao.Add(Mensagem.Caracterizacao.DependenciaDesatualizada(false, caracterizacoesCache.SingleOrDefault(x => x.Id == dependencia.DependenciaTipo).Texto));
                            continue;
                        }
                    }

                    Dependencias(empreendimentoId, (int)caracterizacao.Tipo, caracterizacoes, true);
                    break;

                case (int)eCaracterizacaoDependenciaTipo.DescricaoLicenciamentoAtividade:

                    if (!validarDscLicAtividadeProprio)
                    {
                        if (!string.IsNullOrEmpty(DependenciasAlteradas(empreendimentoId, dependencia.DependenciaTipo, eCaracterizacaoDependenciaTipo.Caracterizacao,
                                                                        _da.ObterDependencias(caracterizacao.Id, (eCaracterizacao)dependencia.DependenciaTipo, eCaracterizacaoDependenciaTipo.Caracterizacao))))
                        {
                            Validacao.Add(Mensagem.Caracterizacao.DependenciaDesatualizada(false, caracterizacoesCache.SingleOrDefault(x => x.Id == dependencia.DependenciaTipo).Texto));
                            continue;
                        }
                    }

                    break;
                }
            }

            return(Validacao.EhValido);
        }
        private void Obrigatoriedades(Titulo titulo)
        {
            if (titulo.Autor == null || titulo.Autor.Id <= 0)
            {
                Validacao.Add(Mensagem.Titulo.AutorObrigatorio);
            }

            if (titulo.Id == 0 && titulo.DataCriacao.IsEmpty)
            {
                Validacao.Add(Mensagem.Titulo.DataCriacaoObrigatorio);
            }

            if (titulo.Id == 0 && !titulo.DataCriacao.IsValido)
            {
                Validacao.Add(Mensagem.Titulo.DataCriacaoInvalida);
            }

            if (titulo.Setor == null || titulo.Setor.Id <= 0)
            {
                Validacao.Add(Mensagem.Titulo.SetorCadastroObrigatorio);
            }

            if (titulo.Situacao.Id <= 0)
            {
                Validacao.Add(Mensagem.Titulo.SituacaoObrigatorio);
            }

            if (titulo.LocalEmissao == null || titulo.LocalEmissao.Id <= 0)
            {
                Validacao.Add(Mensagem.Titulo.LocalEmissaoObrigatorio);
            }

            if (titulo.Modelo == null || titulo.Modelo.Id <= 0)
            {
                Validacao.Add(Mensagem.Titulo.ModeloObrigatorio);
                return;
            }

            //Valida a obrigatoriedade do protocolo [Processo/Documento]
            if (titulo.Modelo.Regra(eRegra.ProtocoloObrigatorio))
            {
                switch (titulo.Modelo.TipoProtocoloEnum)
                {
                case eTipoProtocolo.Processo:
                    if (titulo.Protocolo == null || !titulo.Protocolo.IsProcesso || titulo.Protocolo.Id <= 0)
                    {
                        Validacao.Add(Mensagem.Titulo.ProcessoObrigatorio);
                    }
                    break;

                case eTipoProtocolo.Documento:
                    if (titulo.Protocolo == null || titulo.Protocolo.IsProcesso || titulo.Protocolo.Id <= 0)
                    {
                        Validacao.Add(Mensagem.Titulo.DocumentoObrigatorio);
                    }
                    break;

                case eTipoProtocolo.Protocolo:
                    if (titulo.Protocolo == null || titulo.Protocolo.Id <= 0)
                    {
                        Validacao.Add((titulo.Protocolo.IsProcesso) ? Mensagem.Titulo.ProcessoObrigatorio : Mensagem.Titulo.DocumentoObrigatorio);
                    }
                    break;
                }
            }
            else
            {
                switch (titulo.Modelo.TipoProtocoloEnum)
                {
                case eTipoProtocolo.Processo:
                    //Verifica se é documento para apresentar mensagem
                    if (titulo.Protocolo != null && !titulo.Protocolo.IsProcesso && titulo.Protocolo.Id > 0)
                    {
                        Validacao.Add(Mensagem.Titulo.ProcessoOuEmpreendimentoObrigatorio);
                    }
                    break;

                case eTipoProtocolo.Documento:
                    //Verifica se é processo para apresentar mensagem
                    if (titulo.Protocolo != null && titulo.Protocolo.IsProcesso && titulo.Protocolo.Id > 0)
                    {
                        Validacao.Add(Mensagem.Titulo.DocumentoOuEmpreendimentoObrigatorio);
                    }
                    break;
                }

                if ((titulo.Protocolo == null || titulo.Protocolo.Id == 0) && (titulo.EmpreendimentoId ?? 0) == 0)
                {
                    string textoProcDoc = "processo/documento";

                    if (titulo.Modelo.TipoProtocoloEnum == eTipoProtocolo.Processo)
                    {
                        textoProcDoc = "processo";
                    }

                    if (titulo.Modelo.TipoProtocoloEnum == eTipoProtocolo.Documento)
                    {
                        textoProcDoc = "documento";
                    }

                    Validacao.Add(Mensagem.Titulo.ObrigatorioProcDocEmp(textoProcDoc));
                }
            }
        }
Example #30
0
        public void AlterarSituacao(Titulo titulo, BancoDeDados banco = null)
        {
            Titulo atualTitulo = _da.ObterSimplificado(titulo.Id);

            bool isGerarNumero = false;
            bool isGerarPdf    = false;

            if (!_validar.AlterarSituacao(titulo, atualTitulo.Situacao.Id == (int)eTituloSituacao.EmCadastro))
            {
                return;
            }

            #region Configurar Nova Situacao

            //Situação Nova
            switch ((eTituloSituacao)titulo.Situacao.Id)
            {
                #region 3 - Valido

            case eTituloSituacao.Valido:
                if (atualTitulo.Situacao.Id == (int)eTituloSituacao.EmCadastro)
                {
                    isGerarNumero = true;
                    isGerarPdf    = true;
                }
                break;

                #endregion
            }

            #endregion

            #region Numero de Titulo

            if (isGerarNumero)
            {
                titulo.Numero.ReiniciaPorAno = titulo.Modelo.Regra(eRegra.NumeracaoReiniciada);

                if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica))
                {
                    titulo.Numero.Automatico = true;
                    TituloModeloResposta iniciarEm = titulo.Modelo.Resposta(eRegra.NumeracaoAutomatica, eResposta.InicioNumeracao);
                    titulo.Numero.IniciaEm    = null;
                    titulo.Numero.IniciaEmAno = null;

                    if (iniciarEm != null)
                    {
                        if (iniciarEm.Valor == null || !ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(iniciarEm.Valor.ToString()))
                        {
                            Validacao.Add(Mensagem.Titulo.IniciarEmInvalido);
                            return;
                        }

                        string[] iniciar = iniciarEm.Valor.ToString().Split('/');
                        titulo.Numero.IniciaEm    = Convert.ToInt32(iniciar[0]);
                        titulo.Numero.IniciaEmAno = Convert.ToInt32(iniciar[1]);

                        if (titulo.Numero.IniciaEmAno.GetValueOrDefault() != DateTime.Now.Year)
                        {
                            titulo.Numero.IniciaEm    = null;
                            titulo.Numero.IniciaEmAno = null;
                        }
                    }
                }

                titulo.Numero.Ano = DateTime.Today.Year;
            }

            #endregion

            GerenciadorTransacao.ObterIDAtual();
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                _da.DeclaratorioAlterarSituacao(titulo, bancoDeDados);

                #region Atividades

                AtividadeBus atividadeBus = new AtividadeBus();

                #region Título Valido

                if (titulo.Situacao.Id == (int)eTituloSituacao.Valido)
                {
                    if (titulo.Atividades != null && titulo.Atividades.Count > 0)
                    {
                        foreach (Atividade atividade in titulo.Atividades)
                        {
                            if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.Valido, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados))
                            {
                                atividade.SituacaoId = (int)eAtividadeSituacao.Regular;
                                atividadeBus.AlterarSituacao(atividade, bancoDeDados);
                            }
                        }
                    }
                }

                #endregion

                #region Título Suspenso

                if (titulo.Situacao.Id == (int)eTituloSituacao.SuspensoDeclaratorio)
                {
                    if (titulo.Atividades != null && titulo.Atividades.Count > 0)
                    {
                        foreach (Atividade atividade in titulo.Atividades)
                        {
                            if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.SuspensoDeclaratorio, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados))
                            {
                                atividade.SituacaoId = (int)eAtividadeSituacao.Suspensa;
                                atividadeBus.AlterarSituacao(atividade, bancoDeDados);
                            }
                        }
                    }
                }

                #endregion

                #region Título Encerrado

                if (titulo.Situacao.Id == (int)eTituloSituacao.EncerradoDeclaratorio)
                {
                    if (titulo.Atividades != null && titulo.Atividades.Count > 0)
                    {
                        foreach (Atividade atividade in titulo.Atividades)
                        {
                            if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.EncerradoDeclaratorio, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados))
                            {
                                atividade.SituacaoId = (int)eAtividadeSituacao.Irregular;
                                atividadeBus.AlterarSituacao(atividade, bancoDeDados);
                            }
                        }
                    }
                }

                #endregion

                #endregion

                #region Gerar Pdf de Titulo

                ArquivoBus arqBus = new ArquivoBus(eExecutorTipo.Interno);

                if (isGerarPdf && titulo.Modelo.Regra(eRegra.PdfGeradoSistema))
                {
                    TituloBus bus = new TituloBus();

                    titulo.ArquivoPdf.Nome        = "Titulo.pdf";
                    titulo.ArquivoPdf.Extensao    = ".pdf";
                    titulo.ArquivoPdf.ContentType = "application/pdf";
                    titulo.ArquivoPdf.Buffer      = bus.GerarPdf(titulo, bancoDeDados);

                    if (titulo.ArquivoPdf.Buffer != null)
                    {
                        arqBus.Salvar(titulo.ArquivoPdf);

                        ArquivoDa _arquivoDa = new ArquivoDa();
                        _arquivoDa.Salvar(titulo.ArquivoPdf, User.FuncionarioId, User.Name,
                                          User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);

                        _da.SalvarPdfTitulo(titulo, bancoDeDados);
                    }
                }

                #endregion

                #region Gerar/Enviar Email

                #region Gerar Email

                Email email = null;
                if (titulo.Situacao.Id == (int)eTituloSituacao.Valido && titulo.Modelo.Regra(eRegra.EnviarEmail))
                {
                    if (titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor != null)
                    {
                        string textoEmail = titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor.ToString();

                        if (!String.IsNullOrWhiteSpace(textoEmail))
                        {
                            Dictionary <String, String> emailKeys = new Dictionary <string, string>();

                            emailKeys.Add("[orgão sigla]", _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla));
                            emailKeys.Add("[data da conclusão]", titulo.Modelo.Regra(eRegra.Prazo) ? titulo.DataInicioPrazo.DataTexto : titulo.DataEmissao.DataTexto);
                            emailKeys.Add("[nome do modelo]", titulo.Modelo.Nome);
                            emailKeys.Add("[nome do subtipo]", titulo.Modelo.SubTipo);
                            emailKeys.Add("[nº do título]", titulo.Numero.Texto);
                            emailKeys.Add("[nº processo/documento do título]", titulo.Protocolo.Numero);
                            emailKeys.Add("[nome do empreendimento]", titulo.EmpreendimentoTexto);

                            foreach (string key in emailKeys.Keys)
                            {
                                textoEmail = textoEmail.Replace(key, emailKeys[key]);
                            }

                            email         = new Email();
                            email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla);
                            email.Texto   = textoEmail;
                            email.Tipo    = eEmailTipo.TituloConcluir;
                            email.Codigo  = titulo.Id;
                        }
                    }
                }

                #endregion

                if (email != null)
                {
                    List <String> lstEmail = _da.ObterEmails(titulo.Id, bancoDeDados);

                    if (lstEmail != null && lstEmail.Count > 0)
                    {
                        email.Destinatario = String.Join(", ", lstEmail.ToArray());

                        if (titulo.Modelo.Regra(eRegra.AnexarPDFTitulo))
                        {
                            email.Anexos.Add(titulo.ArquivoPdf);
                        }

                        EmailBus emailBus = new EmailBus();
                        emailBus.Enviar(email, bancoDeDados);
                    }
                }

                #endregion

                if (!Validacao.EhValido)
                {
                    bancoDeDados.Rollback();
                    return;
                }

                #region Salvar A especificidade

                if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault()))
                {
                    IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault());
                    titulo.Especificidade = busEsp.Obter(titulo.Id) as Especificidade;
                    titulo.Especificidade = titulo.ToEspecificidade();
                    busEsp.Salvar(titulo.Especificidade, bancoDeDados);

                    List <DependenciaLst> lstDependencias = busEsp.ObterDependencias(titulo.Especificidade);
                    if (isGerarPdf && lstDependencias != null && lstDependencias.Count > 0)
                    {
                        if (!lstDependencias.Exists(x => x.TipoId == (int)eTituloDependenciaTipo.Caracterizacao && x.DependenciaTipo == (int)eCaracterizacao.Dominialidade))
                        {
                            lstDependencias.Add(new DependenciaLst()
                            {
                                TipoId = (int)eTituloDependenciaTipo.Caracterizacao, DependenciaTipo = (int)eCaracterizacao.Dominialidade
                            });
                        }
                        _da.Dependencias(titulo.Id, titulo.Modelo.Id, titulo.EmpreendimentoId.GetValueOrDefault(), lstDependencias);
                    }
                }

                #endregion

                #region Histórico

                _da.Historico.Gerar(titulo.Id, eHistoricoArtefato.titulo, eHistoricoAcao.alterarsituacao, bancoDeDados);
                _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.titulo, bancoDeDados);

                #endregion

                bancoDeDados.Commit();

                Validacao.Add(Mensagem.TituloAlterarSituacao.TituloAltSituacaoSucesso);
            }
        }