示例#1
0
        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().AddDays(-120)) < 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);
        }