public BarragemDispensaLicencaBus(BarragemDispensaLicencaValidar validar)
 {
     _validar = validar;
 }
        public bool CopiarDadosInstitucional(int empreendimentoID, int empreendimentoInternoID, BancoDeDados banco)
        {
            if (banco == null)
            {
                return(false);
            }

            if (_validar == null)
            {
                _validar = new BarragemDispensaLicencaValidar();
            }

            BarragemDispensaLicencaInternoBus barragemDispLicencaInternoBus = new BarragemDispensaLicencaInternoBus();
            BarragemDispensaLicenca           caracterizacao = barragemDispLicencaInternoBus.ObterPorEmpreendimento(empreendimentoInternoID);

            caracterizacao.EmpreendimentoID = empreendimentoID;
            caracterizacao.InternoID        = caracterizacao.Id;
            caracterizacao.InternoTID       = caracterizacao.Tid;

            if (_validar.CopiarDadosInstitucional(caracterizacao))
            {
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, EsquemaCredenciadoBanco))
                {
                    bancoDeDados.IniciarTransacao();

                    #region Configurar

                    caracterizacao.Id = ObterPorEmpreendimento(empreendimentoID, simplificado: true, banco: bancoDeDados).Id;

                    if (caracterizacao.PossuiMonge.HasValue && !Convert.ToBoolean(caracterizacao.PossuiMonge))
                    {
                        caracterizacao.MongeTipo          = null;
                        caracterizacao.EspecificacaoMonge = string.Empty;
                    }

                    if (caracterizacao.PossuiVertedouro.HasValue && !Convert.ToBoolean(caracterizacao.PossuiVertedouro))
                    {
                        caracterizacao.VertedouroTipo          = null;
                        caracterizacao.EspecificacaoVertedouro = string.Empty;
                    }

                    #endregion

                    #region Arquivo

                    if (caracterizacao.Autorizacao != null && caracterizacao.Autorizacao.Id > 0)
                    {
                        ArquivoBus _busArquivoInterno     = new ArquivoBus(eExecutorTipo.Interno);
                        ArquivoBus _busArquivoCredenciado = new ArquivoBus(eExecutorTipo.Credenciado);

                        Arquivo aux = _busArquivoInterno.Obter(caracterizacao.Autorizacao.Id.Value); //Obtém o arquivo completo do diretorio do Institucional(nome, buffer, etc)

                        aux.Id = 0;                                                                  //Zera o ID
                        aux    = _busArquivoCredenciado.SalvarTemp(aux);                             //salva no diretório temporário
                        aux    = _busArquivoCredenciado.Copiar(aux);                                 //Copia para o diretório oficial

                        //Salvar na Oficial
                        ArquivoDa arquivoDa = new ArquivoDa();
                        arquivoDa.Salvar(aux, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Credenciado, User.FuncionarioTid, bancoDeDados);

                        caracterizacao.Autorizacao.Id = aux.Id;
                    }

                    #endregion

                    _da.CopiarDadosInstitucional(caracterizacao, bancoDeDados);

                    bancoDeDados.Commit();
                }
            }

            return(Validacao.EhValido);
        }