Ejemplo n.º 1
0
        public ArquivoProjeto ProcessarDesenhador(ProjetoGeografico projeto)
        {
            ArquivoProjeto arquivoEnviado = projeto.Arquivos.FirstOrDefault() ?? new ArquivoProjeto();

            try
            {
                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                {
                    arquivoEnviado.Etapa = (int)eFilaEtapaGeo.Validacao;                    //1;

                    arquivoEnviado.Situacao = (int)eFilaSituacaoGeo.Aguardando;             //1;

                    arquivoEnviado.IdRelacionamento = _da.ExisteArquivoFila(arquivoEnviado);

                    //Atualiza a lista de arquivos do projeto
                    _da.AtualizarArquivosEnviado(arquivoEnviado, bancoDeDados);

                    if (arquivoEnviado.IdRelacionamento == 0)
                    {
                        _da.InserirFila(arquivoEnviado, bancoDeDados);
                    }
                    else
                    {
                        _da.AlterarSituacaoFila(arquivoEnviado, bancoDeDados);
                    }

                    ObterSituacao(arquivoEnviado);

                    bancoDeDados.Commit();
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(arquivoEnviado);
        }
        public ArquivoProjeto EnviarArquivo(ArquivoProjeto arquivo)
        {
            try
            {
                if (_validar.EnviarArquivo(arquivo))
                {
                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(EsquemaBancoCredenciado))
                    {
                        ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Credenciado);

                        _busArquivo.Copiar(arquivo);

                        _busArquivo.ObterTemporario(arquivo);

                        arquivo.Processamento.Id = _da.ExisteItemFila(arquivo.Processamento);

                        _da.ExcluirArquivoDuplicados(arquivo.ProjetoId, bancoDeDados);

                        ArquivoProjeto arq = _da.ObterArquivos(arquivo.ProjetoId, bancoDeDados).SingleOrDefault(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.ArquivoEnviado) ?? new ArquivoProjeto();
                        if (arq.Id.GetValueOrDefault() > 0 && !_da.ArquivoAssociadoProjetoDigital(arq.Id.GetValueOrDefault()))
                        {
                            Arquivo arqAnterior = null;

                            try
                            {
                                arqAnterior = _busArquivo.Obter(arq.Id.GetValueOrDefault());
                                if (arqAnterior != null)
                                {
                                    arquivo.Id = arqAnterior.Id.Value;
                                    _busArquivo.Deletar(arqAnterior.Caminho);
                                }
                            }
                            catch
                            {
                                ArquivoDa arqDa = new ArquivoDa();
                                if (arqAnterior == null && (arq ?? new ArquivoProjeto()).Id.GetValueOrDefault() > 0)
                                {
                                    arqAnterior = _busArquivo.ObterDados((arq ?? new ArquivoProjeto()).Id.GetValueOrDefault());
                                }
                                arqDa.MarcarDeletado(arqAnterior.Id.Value, arqAnterior.Caminho, bancoDeDados);
                            }
                        }

                        ArquivoDa arquivoDa = new ArquivoDa();
                        arquivoDa.Salvar(arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);

                        //Atualiza a lista de arquivos do projeto
                        _da.AtualizarArquivosEnviado(arquivo, bancoDeDados);

                        arquivo.Buffer.Close();
                        arquivo.Buffer.Dispose();
                        arquivo.Buffer = null;
                        arquivo.Processamento.Etapa    = (int)eFilaEtapaGeo.Validacao;
                        arquivo.Processamento.Situacao = (int)eFilaSituacaoGeo.Aguardando;

                        if (arquivo.Processamento.Id <= 0)
                        {
                            _da.InserirFila(arquivo.Processamento, bancoDeDados);
                        }
                        else
                        {
                            _da.AlterarSituacaoFila(arquivo.Processamento, bancoDeDados);
                        }

                        bancoDeDados.Commit();

                        ObterSituacao(arquivo.Processamento);
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(arquivo);
        }