Beispiel #1
0
        public ArquivoProjeto EnviarArquivo(ProjetoGeografico projeto)
        {
            ArquivoProjeto arquivoEnviado;

            if (projeto.Arquivos == null || projeto.Arquivos.Count <= 0)
            {
                Validacao.Add(Mensagem.ProjetoGeografico.ArquivoNaoEncontrado);
            }

            arquivoEnviado = projeto.Arquivos[0];

            try
            {
                if (_validar.EnviarArquivo(arquivoEnviado))
                {
                    GerenciadorTransacao.ObterIDAtual();

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

                        _busArquivo.Copiar(arquivoEnviado);

                        _busArquivo.ObterTemporario(arquivoEnviado);

                        arquivoEnviado.IdRelacionamento = _da.ExisteArquivoFila(arquivoEnviado);

                        List <ArquivoProjeto> arquivosSalvos = _da.ObterArquivos(arquivoEnviado.ProjetoId).Where(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.ArquivoEnviado).ToList();

                        #region Erro de Duplicaçao de arquivos enviados

                        if (arquivosSalvos.Count > 1)
                        {
                            _da.ExcluirArquivoDuplicados(arquivoEnviado.ProjetoId, bancoDeDados);
                            arquivosSalvos = _da.ObterArquivos(arquivoEnviado.ProjetoId, bancoDeDados).Where(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.ArquivoEnviado).ToList();
                        }

                        #endregion

                        Arquivo arqAnterior = null;

                        if (arquivosSalvos.Count > 0)
                        {
                            ArquivoProjeto arq = arquivosSalvos.SingleOrDefault(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.ArquivoEnviado);
                            try
                            {
                                arqAnterior = _busArquivo.Obter((arq ?? new ArquivoProjeto()).Id.GetValueOrDefault());
                                if (arqAnterior != null)
                                {
                                    arquivoEnviado.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);
                            }
                        }

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

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

                        arquivoEnviado.Buffer.Close();
                        arquivoEnviado.Buffer.Dispose();
                        arquivoEnviado.Buffer   = null;
                        arquivoEnviado.Etapa    = (int)eFilaEtapaGeo.Validacao;                     //1;
                        arquivoEnviado.Situacao = (int)eFilaSituacaoGeo.Aguardando;                 //1;

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

                        bancoDeDados.Commit();

                        ObterSituacao(arquivoEnviado);
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(arquivoEnviado);
        }