public string BaixarArquivo(int id, string fileType, Veros.Paperless.Model.Entidades.FileTransfer fileTransfer, bool usarCache = true, bool baixarThumbnail = false)
 {
     return(this.BaixarArquivo(fileTransfer, id, fileType, usarCache: usarCache, baixarThumbnail: baixarThumbnail));
 }
        public string BaixarArquivo(
            Veros.Paperless.Model.Entidades.FileTransfer fileTransferDoArquivo,
            int id,
            string fileType,
            bool baixarArquivoOriginal = false,
            bool manterNomeOriginal    = false,
            bool usarCache             = true,
            bool baixarThumbnail       = false)
        {
            ////var fileTransferDoArquivo = this.obtemFileTransferDaPaginaServico.Obter(id, dataCenterId);
            var fileName = string.Format("{0}.{1}", id.ToString("000000000"), fileType);

            if (baixarArquivoOriginal)
            {
                fileName = string.Format("{0}ORIGINAL.{1}", id.ToString("000000000"), fileType);
            }

            if (baixarThumbnail)
            {
                fileName = string.Format("{0}_THUMB.{1}", id.ToString("000000000"), fileType);
            }

            var arquivoLocal = manterNomeOriginal ?
                               Path.Combine(CacheDeImagensLocal.CaminhoPadrao, fileName) :
                               Path.Combine(CacheDeImagensLocal.CaminhoPadrao,
                                            fileName.Replace("ORIGINAL", string.Empty));

            Log.Application.DebugFormat(
                "Filetransfer: arquivo solicitado: {0}. UsarCache: {1}",
                arquivoLocal, usarCache);

            if (fileType.ToUpper().Equals("PDF"))
            {
                Log.Application.DebugFormat("Pagina #{0} não usará o cache pq é PDF", id);
                usarCache = false;
            }

            if (usarCache)
            {
                if (File.Exists(arquivoLocal))
                {
                    Log.Application.DebugFormat("Pagina #{0} recuperada do cache", id);
                    return(arquivoLocal);
                }
            }

            var imagemFileTransfer = string.Format(@"/{0}/F/{1}",
                                                   Files.GetEcmPath(id),
                                                   fileName).ToUpper().Replace("\\", "/");

            Directories.CreateIfNotExist(Path.GetDirectoryName(arquivoLocal));

            try
            {
                using (var fileTransfer = FileTransferCliente.Obter())
                {
                    fileTransfer.Conectar(
                        fileTransferDoArquivo.ConfiguracaoIp.Host,
                        fileTransferDoArquivo.ConfiguracaoIp.Porta);

                    fileTransfer.Baixar(arquivoLocal, imagemFileTransfer);
                }
            }
            catch (System.Exception exception)
            {
                if (exception.Message.Equals("Erro : No such file or directory"))
                {
                    throw new FileNotFoundException("Arquivo nao encontrado");
                }

                if (exception.Message.Contains("Arquivo não encontrado no file transfer"))
                {
                    throw new FileNotFoundException("Arquivo nao encontrado");
                }

                throw;
            }

            Log.Application.DebugFormat(
                "Filetransfer[{2}]: baixou arquivo de {0} para {1}",
                imagemFileTransfer,
                arquivoLocal,
                fileTransferDoArquivo.ConfiguracaoIp.DataCenterId);

            return(arquivoLocal);
        }