internal bool Salvar(IEnumerable <ExploracaoFlorestal> exploracoes)
        {
            foreach (var caracterizacao in exploracoes)
            {
                if (!_caracterizacaoValidar.Basicas(caracterizacao.EmpreendimentoId))
                {
                    return(false);
                }

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

                if (caracterizacao.TipoExploracao <= 0)
                {
                    Validacao.Add(Mensagem.ExploracaoFlorestal.ExploracaoTipoObrigatorio);
                }

                foreach (ExploracaoFlorestalExploracao item in caracterizacao.Exploracoes)
                {
                    if (item.GeometriaTipoId == (int)eExploracaoFlorestalGeometria.Poligono)
                    {
                        if (!String.IsNullOrWhiteSpace(item.AreaRequeridaTexto))
                        {
                            if (!ValidacoesGenericasBus.ValidarDecimal(DecimalEtx.ClearMask(item.AreaRequeridaTexto), 8, 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 && (item.ParecerFavoravel ?? false))
                                {
                                    if (Convert.ToInt32(item.QuantidadeArvores) <= 0)
                                    {
                                        Validacao.Add(Mensagem.ExploracaoFlorestal.QdeArvoresRequeridasMaiorZero(item.Identificacao));
                                    }
                                }
                            }
                            else
                            {
                                Validacao.Add(Mensagem.ExploracaoFlorestal.QdeArvoresRequeridasObrigatoria(item.Identificacao));
                            }

                            #endregion
                        }
                    }

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

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

                    if (item.ParecerFavoravel == null)
                    {
                        Validacao.Add(Mensagem.ExploracaoFlorestal.ParecerFavoravelObrigatorio(item.Identificacao));
                    }

                    if (Convert.ToBoolean(item.ParecerFavoravel))
                    {
                        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), 8, 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 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);
        }