예제 #1
0
        internal static void MoverArquivosParaOlds(string caminho, string subpasta, Processo processo, int codigoHistoricoExecucaoProcesso)
        {
            try
            {
                string   caminhoOrigem  = string.Empty;
                string   caminhoDestino = string.Empty;
                string   nomeArquivo    = string.Empty;
                string   destino        = string.Empty;
                string[] arquivos       = null;

                caminhoOrigem  = Path.Combine(caminho, subpasta);
                arquivos       = Directory.GetFiles(caminhoOrigem, "*.xml", SearchOption.TopDirectoryOnly);
                caminhoDestino = Path.Combine(caminhoOrigem, "olds");

                VerificarDiretorio(caminhoDestino);

                foreach (string arquivo in arquivos)
                {
                    nomeArquivo = string.Format("{0}{1}{2}{3}{4}{5}.xml", DateTime.Now.Year, DateTime.Now.Month.ToString().PadLeft(2, '0'), DateTime.Now.Day.ToString().PadLeft(2, '0'), DateTime.Now.Hour.ToString().PadLeft(2, '0'), DateTime.Now.Minute.ToString().PadLeft(2, '0'), DateTime.Now.Second.ToString().PadLeft(2, '0'));
                    destino     = string.Format("{0}/{1}", caminhoDestino, nomeArquivo);

                    try
                    {
                        File.Move(arquivo, destino);
                        var listaDeArquivos = CompressHelper.ObterListaDeArquivos(caminhoDestino, "*.xml", DateTime.Now.AddDays(-1), null);
                        CompressHelper.Comprimir(listaDeArquivos);
                        ExpurgoHelper.ExpurgarArquivos(caminhoDestino, "*.xml", DateTime.Now.AddDays(-1), null);
                        RegistrarTransferenciaDeArquivo(codigoHistoricoExecucaoProcesso, DateTime.Now, Direcao.Movido, Status.Sucesso, arquivo, destino, subpasta);
                    }
                    catch (Exception ex)
                    {
                        RegistrarTransferenciaDeArquivo(codigoHistoricoExecucaoProcesso, DateTime.Now, Direcao.Movido, Status.Erro, arquivo, destino, subpasta);

                        LogHelper.GravarDetalheErro(processo, codigoHistoricoExecucaoProcesso, ex, string.Format("{0} {1}", subpasta, Direcao.Movido));

                        throw new Exception(string.Format("Ocorreu um erro ao mover o arquivo {0} para pasta 'olds'. Detalhes {1}. Codigo execucao {2} \n", arquivo, ex.ToString(), codigoHistoricoExecucaoProcesso));
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Ocorreu um erro ao preprarar os arquivos para serem movidos para pasta 'olds'. Detalhes {0}. Codigo execucao {1} \n", ex.ToString(), codigoHistoricoExecucaoProcesso));
            }
        }