/// <summary> /// Выполнение задачи /// </summary> /// <exception cref="NotImplementedException"></exception> public override void DoTask(EpsFastReport[] reports) { bool deleteSrcFile = FindByName(EpsTaskParams.MoveFile) != null && FindByName(EpsTaskParams.CopyFile) == null; var fileMask = GetParamValue <string>(EpsTaskParams.FileMask); if (!string.IsNullOrEmpty(fileMask)) { FilePumper.AddSearchPattern(fileMask); } var sourceFolder = GetParamValue <string>(EpsTaskParams.SourceFolder); if (!string.IsNullOrEmpty(sourceFolder)) { FilePumper.SetSourcePath(sourceFolder); } FilePumper.SetDestinationMove(deleteSrcFile); // Вызывать ProcessFiles только после обработки параметров задачи ProcessFiles(reports); var logger = LogManager.GetLogger(GetType()); logger.Info(string.Format("Dcl: file '{0}' was dcl'ed.", string.Join(", ", Files.Select(p => Path.GetFileName(p.FullFileName))))); }
protected EpsOtcBase() { FilePumper = new FilePumper(Environment.MachineName, Environment.UserName, string.Empty); FilePumper.OnEventErrorHandler += LogClient.Logger.OnEventErrorHandler; Files = new List <FileStruct>(); Sb = new SubstMacros(); Sb.SetMacro("USERNAME", Environment.UserName); Sb.SetMacro("HOSTNAME", Environment.MachineName); }
public override void DoTask(EpsFastReport[] reports) { var targetFolder = GetParamValue <string>(EpsTaskParams.TargetFolder); var deleteSrcFile = FindByName(EpsTaskParams.MoveFile) != null && FindByName(EpsTaskParams.CopyFile) == null; var fileRecordProtect = GetParamValue <EpsTaskProtect>(EpsTaskParams.FileRecordProtect); var supportTargetFolder = GetParamValue <string>(EpsTaskParams.SupportTargetFolder); var supportFileName = GetParamValue <string>(EpsTaskParams.SupportFileName); var serverName = GetParamValue <string>(EpsTaskParams.FTPServerName); var serverLogin = GetParamValue <string>(EpsTaskParams.FTPServerLogin); var serverPasswd = GetParamValue <string>(EpsTaskParams.FTPServerPassword); var usePassive = GetParamValue <byte>(EpsTaskParams.FTPTransmissionMode) == 0; var ftp = new EpsFtp(targetFolder, serverName, serverLogin, serverPasswd); ftp.SetFileRecordProtect(fileRecordProtect, supportTargetFolder, supportFileName); ftp.UsePassive = usePassive; var fileMask = GetParamValue <string>(EpsTaskParams.FileMask); if (!string.IsNullOrEmpty(fileMask)) { FilePumper.AddSearchPattern(fileMask); } var sourceFolder = GetParamValue <string>(EpsTaskParams.SourceFolder); if (!string.IsNullOrEmpty(sourceFolder)) { FilePumper.SetSourcePath(sourceFolder); } FilePumper.SetDestinationMove(deleteSrcFile); // Вызывать ProcessFiles только после обработки параметров задачи ProcessFiles(reports); if (Files != null) { foreach (var fs in Files) { ftp.Write(fs.FullFileName, fs.Data); if (deleteSrcFile) { ftp.DeleteFile(fs.FullFileName); } } } var logger = LogManager.GetLogger(GetType()); logger.Info(string.Format("File '{0}' was published on FTP '{1}' in folder '{2}'.", string.Join(", ", Files.Select(p => Path.GetFileName(p.FullFileName))), serverName, targetFolder)); }
private void DeliveryTime(object state) { if (_periodTimer == null) { return; } try { _periodTimer.Change(-1, -1); var pumper = new FilePumper(_linkById); try { pumper.Initialize(_inbound, _imported, new[] { "*.*" }); } catch (Exception ex) { Log.Debug(ex); //LogClient.Logger.OnEventErrorHandler(ex, ErrorType.ERROR, "EUnknown", new string[] { string.Empty }, "DELIVERY_TIME_PUMPER", LinkById); } //получим все файлы во входящей папке var files = pumper.GetFileList(); if (files.Length > 0) { Log.Debug(string.Format("Получено(а) {0} телеграмм(а)", files.Length)); foreach (string file in pumper.GetFileList()) { //LogClient.Logger.OnEventErrorHandler(null, ErrorType.INFO, "Импорт данных из файла {0}", new string[] { file }, "DELIVERY_TIME", LinkById); Log.Debug(string.Format("Импорт данных из файла {0}", file)); var xml = Encoding.UTF8.GetString(pumper.GetFile(file, true)); var result = ValidateAndImport(xml); var outFile = Path.Combine(_imported, string.Format("{0}_{1}_Response.xml", Path.GetFileNameWithoutExtension(file), result.Id)); File.WriteAllText(outFile, result.DumpToXML()); } } } catch (Exception ex) { Log.Debug(ex); //LogClient.Logger.OnEventErrorHandler(ex, ErrorType.INFO, "EUnknown", new[] { "" }, "SI_SERVICE_MANAGER_PERIODTIMER", LinkById); } finally { _periodTimer.Change(_timerPeriod, _timerPeriod); } }
public override void DoTask(EpsFastReport[] reports) { var targetFolder = GetParamValue <string>(EpsTaskParams.TargetFolder); bool deleteSrcFile = FindByName(EpsTaskParams.MoveFile) != null && FindByName(EpsTaskParams.CopyFile) == null; var fileRecordProtect = GetParamValue <EpsTaskProtect>(EpsTaskParams.FileRecordProtect); var supportTargetFolder = GetParamValue <string>(EpsTaskParams.SupportTargetFolder); var supportFileName = GetParamValue <string>(EpsTaskParams.SupportFileName); var share = new EpsShare(targetFolder, deleteSrcFile); share.SetFileRecordProtect(fileRecordProtect, supportTargetFolder, supportFileName); var fileMask = GetParamValue <string>(EpsTaskParams.FileMask); if (!string.IsNullOrEmpty(fileMask)) { FilePumper.AddSearchPattern(fileMask); } var sourceFolder = GetParamValue <string>(EpsTaskParams.SourceFolder); if (!string.IsNullOrEmpty(sourceFolder)) { FilePumper.SetSourcePath(sourceFolder); } FilePumper.SetDestinationMove(false); // Вызывать ProcessFiles только после обработки параметров задачи ProcessFiles(reports); if (Files != null) { foreach (var fs in Files) { share.Write(fs.FullFileName, fs.Data); } } var logger = LogManager.GetLogger(GetType()); logger.Info(string.Format("Share: file '{0}' was shared to folder '{1}'.", string.Join(", ", Files.Select(p => Path.GetFileName(p.FullFileName))), targetFolder)); }
public override void DoTask(EpsFastReport[] reports) { var mailHelper = new MailHelper(); using (var mail = mailHelper.CreateMailSender()) { var newLine = "\r\n\r\n"; // обработка форматов тела письма if (Settings.Default.MailBodyFormat.Equals(MediaTypeNames.Text.Html)) { newLine = "<br><br>"; } mailHelper.SetFrom(mail); mailHelper.SetCredentials(mail); var sendTo = GetAllParamValues <string>(EpsTaskParams.Email); foreach (var addrr in sendTo) { mail.AddTo(addrr); } var asAttach = GetParamValue(EpsTaskParams.AsAttachment, defaultValue: 1) == 1; var sendBlankMail = GetParamValue(EpsTaskParams.SendBlankMail, defaultValue: 1) == 1; var fileFormat = GetParamValue <string>(EpsTaskParams.FileFormat); if (!string.IsNullOrEmpty(fileFormat)) { Sb.SetMacro("FileFormat", fileFormat); var ext = EpsHelper.GetFileExtension(fileFormat); if (ext != null) { Sb.SetMacro("FileExtension", ext); } } var deleteSrcFile = FindByName(EpsTaskParams.MoveFile) != null && FindByName(EpsTaskParams.CopyFile) == null; var fileMask = GetParamValue <string>(EpsTaskParams.FileMask); if (!string.IsNullOrEmpty(fileMask)) { FilePumper.AddSearchPattern(fileMask); } var sourceFolder = GetParamValue <string>(EpsTaskParams.SourceFolder); if (!string.IsNullOrEmpty(sourceFolder)) { FilePumper.SetSourcePath(sourceFolder); } FilePumper.SetDestinationMove(deleteSrcFile); var resultReportFileValue = string.Empty; if (FindByName(EpsTaskParams.ResultReportFile) != null) { Sb.SetMacro("ResultReportFile", GetParamValue <string>(EpsTaskParams.ResultReportFile)); } else { if (reports != null) { foreach (var report in reports.Where(p => p != null)) { resultReportFileValue += string.Format("{0}{1}", resultReportFileValue != string.Empty ? ";" : null, report.ReportName); } } if (resultReportFileValue != string.Empty) { Sb.SetMacro("ResultReportFile", Sb.Substitute(resultReportFileValue)); } } // заполняем тему var mailSubject = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailSubject, defaultValue: Settings.Default.MailSubject)); mail.SetSubject(mailSubject); // Вызывать ProcessFiles только после обработки параметров задачи ProcessFiles(reports); if (Files.Count < 1) { if (!sendBlankMail) { return; // не отсылаем почту } } // заполняем тело var mailBody = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailBody, defaultValue: Settings.Default.MailHeader)); mail.SetBody(mailBody + newLine, true); // добавляем файлы foreach (var a in Files) { if (asAttach) { mail.AddAttach(new MemoryStream(a.Data), a.FileName); } else { if (!Ziped) // не будем совать в тело zip файл { var s = new StreamReader(new MemoryStream(a.Data)); mail.AppendBody(s.ReadToEnd()); s.Close(); } } } // ставим подпись var mailSignature = ProcessSqlMacro(GetParamValue(EpsTaskParams.MailSignature, defaultValue: Settings.Default.MailSignature)); mail.AppendBody(newLine + mailSignature); // отправляем mail.Send(); var logger = LogManager.GetLogger(GetType()); logger.Info(string.Format("Mail '{0}' send to '{1}'.", mailSubject, string.Join(", ", sendTo))); } }