From 7d94d4e48166734d399d5741a3a9bcae2f34bd9b Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 9 Jun 2016 06:56:35 +0000 Subject: [PATCH] Excel Implementierung ff --- Stundensheet.xlsx | Bin 22015 -> 22183 bytes nsw/Source/bsmd.ExcelReadService/App.config | 12 -- .../bsmd.ExcelReadService/ExcelReadService.cs | 17 +-- .../Properties/Settings.Designer.cs | 36 ----- .../Properties/Settings.settings | 12 -- nsw/Source/bsmd.ExcelReadService/Util.cs | 48 +++--- nsw/Source/bsmd.database/INFO.cs | 9 +- nsw/Source/bsmd.email/BSMDMail.cs | 142 ++++++++++++------ 8 files changed, 132 insertions(+), 144 deletions(-) diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 20a26389b62a033f33d464078921e5956b74cbcd..c657ba0b594a025bc715ae95ffcc5dfec0067e70 100644 GIT binary patch delta 11635 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 replace me! - - E:\temp\SietasSheets - - - - - - - - - - 300 diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index 549a9163..c36bae61 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -1,23 +1,16 @@ -using System; +using bsmd.database; +using bsmd.email; +using log4net; +using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Diagnostics; -using System.Linq; using System.IO; using System.ServiceProcess; -using System.Text; -using System.Threading.Tasks; using System.Timers; -using log4net; - -using bsmd.database; -using bsmd.email; - namespace bsmd.ExcelReadService -{ +{ public partial class ExcelReadService : ServiceBase { private Timer _timer; diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs index 9058be63..4c21e0c4 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs @@ -32,42 +32,6 @@ namespace bsmd.ExcelReadService.Properties { } } - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("E:\\temp\\SietasSheets")] - public string ArchiveFolder { - get { - return ((string)(this["ArchiveFolder"])); - } - } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string POP3Server { - get { - return ((string)(this["POP3Server"])); - } - } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string POP3User { - get { - return ((string)(this["POP3User"])); - } - } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string POP3Password { - get { - return ((string)(this["POP3Password"])); - } - } - [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("300")] diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings index fddb6043..fc6899fc 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings @@ -5,18 +5,6 @@ replace me! - - E:\temp\SietasSheets - - - - - - - - - - 300 diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 3c3b77c9..5ffed974 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -958,33 +958,37 @@ namespace bsmd.ExcelReadService // lookup poc, imo, eta poc = reader.ReadText("Visit.PortOfCall"); - // Prüfen auf Transit - if (poc.ToUpper().Contains("CANAL")) + if (poc != null) { - poc = "ZZNOK"; - isTransit = true; - } - else - { - // Im Sheet könnte der Name statt des LOCODES stehen! - if (!RuleEngine.IsGermanLocode(poc)) + // Prüfen auf Transit + if (poc.ToUpper().Contains("CANAL")) { - // somehow lookup LOCODE from the port's name! - poc = LocodeDB.LocodeGERFromCity(poc); + poc = "ZZNOK"; + isTransit = true; + } + else + { + // Im Sheet könnte der Name statt des LOCODES stehen! + if (!RuleEngine.IsGermanLocode(poc)) + { + // somehow lookup LOCODE from the port's name! + poc = LocodeDB.LocodeGERFromCity(poc); + } + } + + imo = reader.ReadText("Visit.IMONumber"); + + // ETA + eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); + + if ((imo != null) && (eta.HasValue)) + { + result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); + if (result.IsNew) + result.IsTransit = isTransit; } } - - imo = reader.ReadText("Visit.IMONumber"); - - // ETA - eta = reader.ReadDateTime("NOA_NOD.ETADateToPortOfCall", "NOA_NOD.ETATimeToPortOfCall"); - - result = DBManager.Instance.GetMessageCoreByShipInfos(imo, eta.Value, poc); - if (result.IsNew) - result.IsTransit = isTransit; - } - if (result == null) diff --git a/nsw/Source/bsmd.database/INFO.cs b/nsw/Source/bsmd.database/INFO.cs index 2e9c3b57..9de0e2ae 100644 --- a/nsw/Source/bsmd.database/INFO.cs +++ b/nsw/Source/bsmd.database/INFO.cs @@ -9,12 +9,13 @@ using System.Collections.Generic; using System.Data.SqlClient; +using log4net; namespace bsmd.database { public class INFO : DatabaseEntity { - + private static ILog _log = LogManager.GetLogger(typeof(INFO)); public INFO() { this.tablename = "[dbo].[INFO]"; @@ -148,32 +149,36 @@ namespace bsmd.database public override void Validate(List errors, List violations) { + _log.InfoFormat("rule checking port area {0}", this.PortArea ?? ""); if (!this.PortArea.IsNullOrEmpty()) { string key = this.MessageCore.PoC + this.PortArea; bool hasValue = DBManager.Instance.GetPortAreaDict().ContainsKey(key); if (!hasValue) { + _log.WarnFormat("No port area entry found: PoC {0}, area {1}", this.MessageCore.PoC ?? "", this.PortArea ?? ""); if(this.MessageCore.PoC == null) { + foreach (PortArea pa in DBManager.Instance.GetPortAreaDict().Values) { if (this.PortArea.Equals(pa.Code)) { hasValue = true; + _log.InfoFormat("PoC null but port area found: {0} {1} {2}", pa.Name, pa.Country, pa.Port); break; } } } if (!hasValue) { + _log.WarnFormat("creating violation for invalid port area {0}", this.PortArea ?? ""); violations.Add(RuleEngine.CreateViolation(ValidationCode.PORTAREA, string.Format("{0} is not in the list of valid port areas", this.PortArea), null)); } } } - } #endregion diff --git a/nsw/Source/bsmd.email/BSMDMail.cs b/nsw/Source/bsmd.email/BSMDMail.cs index 3d30d220..96158a26 100644 --- a/nsw/Source/bsmd.email/BSMDMail.cs +++ b/nsw/Source/bsmd.email/BSMDMail.cs @@ -22,7 +22,7 @@ namespace bsmd.email public class BSMDMail : IDisposable { private SmtpClient client; - ILog log = LogManager.GetLogger(typeof(BSMDMail)); + private static ILog log = LogManager.GetLogger(typeof(BSMDMail)); internal BSMDMail() { @@ -42,11 +42,13 @@ namespace bsmd.email SslPolicyErrors sslPolicyErrors) { return true; }; - } + } + /// + /// Synchrones Senden einer E-Mail + /// internal void Send(MailMessage message) - { - // doch nicht asynchron, da nur eine Nachricht gleichzeitig geschickt werden kann und ich so den sync code spare + { try { this.client.Send(message); @@ -60,63 +62,67 @@ namespace bsmd.email { log.ErrorFormat("other error while sending e-mail:{0}", ex.Message); } - - // http://stackoverflow.com/questions/7276375/what-are-best-practices-for-using-smtpclient-sendasync-and-dispose-under-net-4 - // asynchron schicken und wenn's erledigt ist gleich disposen (wichtig!) - - // in meinem Fall nicht so recht wirksam, da eine Mail meist an mehrere Empfänger geschickt wird - - /* - smtpClient.SendCompleted += (s, e) => - { - smtpClient.Dispose(); - message.Dispose(); - }; - - smtpClient.SendAsync(message, null); - */ - - } - + /// + /// sendet eine E-Mail mit Attachments (jetzt asynchron) + /// + /// Betreffzeile + /// Liste von Dateien die angehängt werden sollen public static void SendNSWReportWithAttachments(string subject, List filenameList) { - using (BSMDMail mailer = new BSMDMail()) + BSMDMail mailer = new BSMDMail(); + MailMessage message = new MailMessage(); + MailAddress fromAddress = new MailAddress(Properties.Settings.Default.Sender); + + message.From = fromAddress; + message.Subject = string.Format(subject); + message.IsBodyHtml = false; + message.Body = "see attachment"; + + foreach (string recipient in Properties.Settings.Default.Recipient) { - foreach (string recipient in Properties.Settings.Default.Recipient) - { - MailMessage message = new MailMessage(); - MailAddress fromAddress = new MailAddress(Properties.Settings.Default.Sender); + message.To.Add(recipient); + } - message.From = fromAddress; - message.Subject = string.Format(subject); - message.IsBodyHtml = false; - message.Body = "see attachment"; - message.To.Add(recipient); + foreach (string filename in filenameList) + { + Attachment attachment = new Attachment(filename, MediaTypeNames.Application.Octet); + ContentDisposition disposition = attachment.ContentDisposition; + disposition.CreationDate = File.GetCreationTime(filename); + disposition.ModificationDate = File.GetLastWriteTime(filename); + disposition.ReadDate = File.GetLastAccessTime(filename); + disposition.FileName = Path.GetFileName(filename); + disposition.Size = new FileInfo(filename).Length; + disposition.DispositionType = DispositionTypeNames.Attachment; + message.Attachments.Add(attachment); + } - foreach (string filename in filenameList) - { - Attachment attachment = new Attachment(filename, MediaTypeNames.Application.Octet); - ContentDisposition disposition = attachment.ContentDisposition; - disposition.CreationDate = File.GetCreationTime(filename); - disposition.ModificationDate = File.GetLastWriteTime(filename); - disposition.ReadDate = File.GetLastAccessTime(filename); - disposition.FileName = Path.GetFileName(filename); - disposition.Size = new FileInfo(filename).Length; - disposition.DispositionType = DispositionTypeNames.Attachment; - message.Attachments.Add(attachment); - } + // mailer.Send(message); - mailer.Send(message); + mailer.client.SendCompleted += (s, e) => + { + log.InfoFormat("{0} email send completed", subject); + mailer.Dispose(); + message.Dispose(); + }; - message.Dispose(); - - } + try + { + mailer.client.SendAsync(message, null); + } + catch (SmtpException smtpException) + { + log.ErrorFormat("SMTP error while sending e-mail:{0}", smtpException.Message); + } + catch (Exception ex) + { + log.ErrorFormat("other error while sending e-mail:{0}", ex.Message); } } + public static void SendSystemInfo(string subject, string body, string recipient) { using (BSMDMail mailer = new BSMDMail()) @@ -134,7 +140,47 @@ namespace bsmd.email mailer.Send(message); } + } + + public static void SendSystemInfoAsync(string subject, string body, string recipient) + { + BSMDMail mailer = new BSMDMail(); + + MailMessage message = new MailMessage(); + MailAddress fromAddress = new MailAddress(Properties.Settings.Default.Sender); + message.From = fromAddress; + message.Subject = subject; + message.IsBodyHtml = false; + message.Body = body; + + message.To.Add(recipient); + MailAddress adminAddress = new MailAddress(Properties.Settings.Default.AdminEmail); + message.CC.Add(adminAddress); + + // http://stackoverflow.com/questions/7276375/what-are-best-practices-for-using-smtpclient-sendasync-and-dispose-under-net-4 + // asynchron schicken und wenn's erledigt ist gleich disposen (wichtig!) + + mailer.client.SendCompleted += (s, e) => + { + log.InfoFormat("system info email async send to {0} completed", recipient); + mailer.Dispose(); + message.Dispose(); + }; + + try + { + mailer.client.SendAsync(message, null); + } + catch (SmtpException smtpException) + { + log.ErrorFormat("SMTP error while sending e-mail:{0}", smtpException.Message); + } + catch (Exception ex) + { + log.ErrorFormat("other error while sending e-mail:{0}", ex.Message); + } } + public void Dispose() {