From 7fe80e4e802c4ac1f459b7e890233e61aca9bbb8 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 1 Nov 2016 13:20:53 +0000 Subject: [PATCH] V. 3.2.20, TOWA Korrektur, Kill EXCEL --- Stundensheet.xlsx | Bin 24116 -> 24385 bytes .../bsmd.ExcelReadService/ExcelReadService.cs | 27 +++++++++++++++++- nsw/Source/bsmd.ExcelReadService/Util.cs | 4 +-- .../bsmd.ReportGenerator/ReportService.cs | 2 +- nsw/Source/bsmd.database/DBManager.cs | 18 ++++++++++++ .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.email/BSMDMail.cs | 16 +++++++++-- nsw/Source/misc/db.sqlite | Bin 11960320 -> 11960320 bytes 9 files changed, 63 insertions(+), 8 deletions(-) diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 866ac18a43a6e0b3b227981c6f5acf68c69cadc6..be8b0f51786ad6bc6eec4111fda9fe0a66499bef 100644 GIT binary patch delta 10040 zcmY*fWmMhJvc}!r-QBgw!HUxsDHQkO4n>2z7I%lz;!xaOTHM_!P~@P8V()N&+;v}m zWF?c?GkeeX&Fo258arTnyI^Zi$k1Rhx|!waVPFo{l5t5%ld;HA0SeKt{>CORpefBs zIC^b9Zf(XTDqZzd>p)7Ay3U4&%CzyOsWcUKZ7+@UMegL-t$hT3zU8N>rUrF|%S2TL z1a9Wd$NhYbO|Afmt`5n(uI^6zYN2%E;dAVAjfBnaj?TwnfbzMcz2l3-Ch+3^a(ev) zxxKvGJ=r(jcsl6@I_^)eFRxA(cfo$9oPL16@BNKmKv!#5fIq~?uMOxFlc4TiHI~db z$~&99&F40*HqJMWzsp}!)7Y&3ZN+aOwJsIVeNE(Ow6G-N|NIDXrqICdenZ)v-z1rh7-l<#~8~ zP~)y<7`xo*fNSHc|Lh}zR{5r&|cfQ zh8N)9mA{dBFhs_-m|RtW`Vauu-Pzb-kJzNXYNMQWMWm4_19*V~2ji^TX{pY%B&9@__ zO-fl(v2U!wC0c=_$iXBZXAK)RgW{54s^FysH}<`<)u`EN=|wtyfB5zwcs@y8kOh8R z5ieMgg0$1;>+V+ranE;EF!PVDiYZ@^{Witu$MHHi^gMLr#JH z>$8A>yZ(e1$OCq9D`_+EZ#Mg6GP!tZTgBx zK+w0V^gQCng8RdTapj`@_n6E!f=PIGkj7?;`gTNXyC_sRj;f=KPF0L6G?A$@rEpY9rgYnUjKNFUO|s?a4X>W@8gz5A^Tcu(F;Bpq595P=5C$TV zKJGPcUqgns$EnHtE2P9#H5Dhh9%Y)J*P&6R5qTnQ!OLkS!X{1F+Mghv+t$4cyg+`myf5tNKFS0N#LV zaA(=rotOZ`D8!U1q;bVsl>?AKpr)rM+Az@E_opNq=f+zi+(^e9yxbk>k1W0X=xwZd z(S@|~lm@bWD!yCaZ6DW}^IFu}U&4y}nE+xAnVTtIOf8-4aHP<_B26T#5p1*JQ%5kM zs_iCK8-Fh*Rx92Yp=E{r^jA7CktIWNoFJ<#BJByqOBX$nP2jYt{TQ%1AXZJycK&S7 z;qHp@fgF8(fC`zdsYpyzbDxRAr|w#y=SS&V;W}b??E|J?29c)U*Ft5v(}1vS6Is)O z74yj9NJL@b-~4o#D`J?hmHz%0ABm-p~+ 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 Jl>Wc2{{_8d%3}Zk diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index 608cf041..d68dd01c 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -140,8 +140,15 @@ namespace bsmd.ExcelReadService { List sendItems = new List(); sendItems.Add(confirmationFileName); + + // get the ship's name + string shipname = DBManager.Instance.GetShipNameFromCore(messageCore); + if (shipname.IsNullOrEmpty()) shipname = messageCore.IMO; + + string subject = string.Format("{0}: {1}", Properties.Settings.Default.SendEMailSubject, shipname); + // send reply sheet back to sender - BSMDMail.SendNSWReportWithAttachments(Properties.Settings.Default.SendEMailSubject, sendItems); + BSMDMail.SendNSWReportWithAttachments(subject, sendItems, mailSender); } } } @@ -183,6 +190,24 @@ namespace bsmd.ExcelReadService _log.Error("DB Connection failure"); } + // close any excel processes still running + Process[] process = Process.GetProcessesByName("Excel"); + foreach (Process p in process) + { + if (!string.IsNullOrEmpty(p.ProcessName)) + { + try + { + _log.DebugFormat("Killing process {0} {1}", p.ProcessName, p.Id); + p.Kill(); + } + catch (Exception ex) + { + _log.WarnFormat("Error killing process {0} {1}: {2}", p.ProcessName, p.Id, ex.Message); + } + } + } + lock (this._timerlock) { this.processRunning = false; diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 1d9889a3..efb0bc2d 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -829,7 +829,7 @@ namespace bsmd.ExcelReadService // TOWA ist eigentlich 1:n, es ist aber keine Liste im Sheet! Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA); - string towageName = reader.ReadText("TOWA.TowageOnArrivalName"); + string towageName = reader.ReadText("TOWA.TowageOnArrivalName_1"); if (!towageName.IsNullOrEmpty()) { if (towaMessage.Elements.Count == 0) @@ -852,7 +852,7 @@ namespace bsmd.ExcelReadService { // TOWD ist 1:n, es ist aber keine Liste im Sheet! Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD); - string towageName = reader.ReadText("TOWD.TowageOnDepartureName"); + string towageName = reader.ReadText("TOWD.TowageOnDepartureName_1"); if(!towageName.IsNullOrEmpty()) { if(towdMessage.Elements.Count == 0) diff --git a/nsw/Source/bsmd.ReportGenerator/ReportService.cs b/nsw/Source/bsmd.ReportGenerator/ReportService.cs index ec2ff121..072453f3 100644 --- a/nsw/Source/bsmd.ReportGenerator/ReportService.cs +++ b/nsw/Source/bsmd.ReportGenerator/ReportService.cs @@ -188,7 +188,7 @@ namespace bsmd.ReportGenerator attachments.Add(crewCSV); } - BSMDMail.SendNSWReportWithAttachments(subject, attachments); + BSMDMail.SendNSWReportWithAttachments(subject, attachments, null); // reset report status reportCore.ReportStatus = MessageCore.ReportStatusEnum.NONE; DBManager.Instance.Save(reportCore); diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs index 7d807a1f..7d8437bc 100644 --- a/nsw/Source/bsmd.database/DBManager.cs +++ b/nsw/Source/bsmd.database/DBManager.cs @@ -182,6 +182,24 @@ namespace bsmd.database return messageList; } + public string GetShipNameFromCore(MessageCore core) + { + foreach(Message message in this.GetMessagesForCore(core, MessageLoad.ALL)) + { + if (message.MessageNotificationClass == Message.NotificationClass.STAT) + { + if (message.Elements.Count > 0) + { + STAT stat = message.Elements[0] as STAT; + if (stat != null) + return stat.ShipName; + } + break; + } + } + return null; + } + public Dictionary GetReportingPartyDict() { if (DBManager.allReportingParties == null) diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index d1531677..4de22237 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("3.2.18")] +[assembly: AssemblyInformationalVersion("3.2.20")] [assembly: AssemblyCopyright("Copyright © 2014-2016 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 6a772af1..253c647f 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.18.*")] +[assembly: AssemblyVersion("3.2.20.*")] diff --git a/nsw/Source/bsmd.email/BSMDMail.cs b/nsw/Source/bsmd.email/BSMDMail.cs index 58718355..811fdd4e 100644 --- a/nsw/Source/bsmd.email/BSMDMail.cs +++ b/nsw/Source/bsmd.email/BSMDMail.cs @@ -69,7 +69,7 @@ namespace bsmd.email /// /// Betreffzeile /// Liste von Dateien die angehängt werden sollen - public static void SendNSWReportWithAttachments(string subject, List filenameList) + public static void SendNSWReportWithAttachments(string subject, List filenameList, string recipient) { BSMDMail mailer = new BSMDMail(); @@ -81,11 +81,23 @@ namespace bsmd.email message.IsBodyHtml = false; message.Body = "see attachment"; - foreach (string recipient in Properties.Settings.Default.Recipient) + // wenn recipient leer ist, geht es an die Recipientliste + // wenn nicht, an den Recipient + die Admin-Email + + if ((recipient == null) || (recipient.Length == 0)) + { + foreach (string defaultRecipient in Properties.Settings.Default.Recipient) + { + message.To.Add(defaultRecipient); + } + } + else { message.To.Add(recipient); + message.CC.Add(Properties.Settings.Default.AdminEmail); } + foreach (string filename in filenameList) { Attachment attachment = new Attachment(filename, MediaTypeNames.Application.Octet); diff --git a/nsw/Source/misc/db.sqlite b/nsw/Source/misc/db.sqlite index 455469e5c5cc51471e09c18be6b58de90cf90631..a100d95b98fe9fc8a0e886f836ed00f14ac2b46d 100644 GIT binary patch delta 1982 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