Пример #1
0
        /// <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)))));
        }
Пример #2
0
 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);
 }
Пример #3
0
        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));
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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));
        }
Пример #6
0
        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)));
            }
        }