From 315240e3c8ea422d0f45d4df605fd8a4983a8417 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 13 Apr 2016 17:53:43 +0000 Subject: [PATCH] =?UTF-8?q?Version=203.0.9,=20kleinere=20=C3=84nderungen?= =?UTF-8?q?=20ExcelReader,=20Debugging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Stundensheet.xlsx | Bin 21465 -> 21531 bytes nsw/Source/bsmd.ExcelReadService/App.config | 3 + .../bsmd.ExcelReadService/ExcelReadService.cs | 26 ++++++--- .../bsmd.ExcelReadService/ExcelReader.cs | 52 +++++++++++++++++- .../ProjectInstaller.Designer.cs | 2 +- .../ProjectInstaller.resx | 2 +- .../Properties/Settings.Designer.cs | 13 ++++- .../Properties/Settings.settings | 3 + nsw/Source/bsmd.ExcelReadService/Util.cs | 5 ++ .../bsmd.ExcelReadService.csproj | 10 +++- .../bsmd.ExcelReadService/packages.config | 4 +- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.email/bsmd.email.csproj | 10 ++-- nsw/Source/bsmd.email/packages.config | 4 +- nsw/Source/bsmd.herberg.FormService/Enums.cs | 13 +++++ nsw/Source/bsmd.herberg.FormService/Util.cs | 2 +- 17 files changed, 128 insertions(+), 25 deletions(-) diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index f4f2d72a9115d3eeb58c070a871ce33e2171f9fd..9f4a62dea56a189f6cb95779f6b33cdfa00789e9 100644 GIT binary patch delta 10123 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 V!HrrXFh5nmf3>I)Sk?Xo{ue1%1NZ;{ diff --git a/nsw/Source/bsmd.ExcelReadService/App.config b/nsw/Source/bsmd.ExcelReadService/App.config index cec102d4..0e3620b0 100644 --- a/nsw/Source/bsmd.ExcelReadService/App.config +++ b/nsw/Source/bsmd.ExcelReadService/App.config @@ -28,6 +28,9 @@ 300 + + Reference Excel Sheet + \ No newline at end of file diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index 9e2a4389..d2b9f12a 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -18,7 +18,6 @@ using bsmd.email; namespace bsmd.ExcelReadService { - public partial class ExcelReadService : ServiceBase { private Timer _timer; @@ -37,7 +36,11 @@ namespace bsmd.ExcelReadService this.EventLog.Source = this.ServiceName; this.EventLog.Log = "Application"; this.Init(args); - this.EventLog.WriteEntry("EU-NOAD Excel Read Service started.", EventLogEntryType.Information); + this.EventLog.WriteEntry("NSW Excel Read Service started.", EventLogEntryType.Information); + System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); + FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); + string version = fvi.FileVersion; + this._log.InfoFormat("Starting NSW Excel Read Service. v.{0}", version); this.DoOnce(); } @@ -74,7 +77,7 @@ namespace bsmd.ExcelReadService // this.Stop(); //} - // just for testing + // --- BEGIN ------------ TEST ExcelReader er = new ExcelReader(@"E:\work\bsmd\nsw\Source\bsmd.ExcelReadService\2016_01_08_BMSD - EUNoAD Tool Rev 3.0_mit Testdaten.xls"); string amsg; @@ -82,6 +85,8 @@ namespace bsmd.ExcelReadService bool aReadResult = Util.ProcessSheet(er, out amsg, out aCore); er.Dispose(); + // --- END --------------- TEST + // check and download next e-Mail, saving attachment while (bsmdPopClient.ReceiveSingleMail(out attachmentLocalPath, out messageId, out mailSender)) { @@ -98,7 +103,15 @@ namespace bsmd.ExcelReadService _log.Error("Excel sheet could not be interpreted"); } - // set messagecore to createreport and let reportGenerator create a reply? + // TODO: Quittung / set messagecore to createreport and let reportGenerator create a reply? + + // create a reply sheet (template + scanned highlighted content for verification + + string confirmationExcelFilePath = Util.CreateConfirmationSheet(messageCore); + List sendItems = new List(); + sendItems.Add(confirmationExcelFilePath); + // send reply sheet back to sender + BSMDMail.SendNSWReportWithAttachments(Properties.Settings.Default.SendEMailSubject, sendItems); // remove e-Mail _log.InfoFormat("deleting mail with messageId {0}", messageId); @@ -108,9 +121,7 @@ namespace bsmd.ExcelReadService _log.InfoFormat("removing local file {0}", attachmentLocalPath); // File.Delete(attachmentLocalPath); - // create a reply sheet (template + scanned highlighted content for verification - - // send reply sheet back to sender + } @@ -138,6 +149,7 @@ namespace bsmd.ExcelReadService protected override void OnStop() { + this._log.Info("Stopping NSW Excel Read Service."); } internal void DoOnce() diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs index 39bad43d..a83bd3aa 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs @@ -12,6 +12,7 @@ using Microsoft.Office.Interop.Excel; using System; using System.Collections.Generic; using System.Data; +using System.Drawing; using System.Globalization; using System.Linq; @@ -24,6 +25,14 @@ namespace bsmd.ExcelReadService private Application _excelApp; private Dictionary _nameDict; + private int okColor = ColorTranslator.ToOle(Color.FromArgb(200, 255, 200)); // light green + private int warnColor = ColorTranslator.ToOle(Color.FromArgb(255, 255, 200)); // yellow + private int failColor = ColorTranslator.ToOle(Color.FromArgb(255, 150, 150)); // light red + + internal enum ReadState { NONE, OK, WARN, FAIL }; + + + public ExcelReader(string filePath) { this._excelApp = new Application(); @@ -36,6 +45,32 @@ namespace bsmd.ExcelReadService } } + internal void Save(string filePath) + { + if (this._excelApp == null) return; + this._excelApp.SaveWorkspace(filePath); + } + + internal void HighlightLookup(string lookup, ReadState state) + { + Range range = _nameDict[lookup].RefersToRange; + if(range != null) + { + switch(state) + { + case ReadState.FAIL: + range.Interior.Color = this.failColor; break; + case ReadState.WARN: + range.Interior.Color = this.warnColor; break; + case ReadState.OK: + range.Interior.Color = this.okColor; break; + case ReadState.NONE: + default: + break; + } + } + } + internal string ReadText(string lookup) { if (!_nameDict.ContainsKey(lookup)) return null; @@ -61,6 +96,7 @@ namespace bsmd.ExcelReadService if (val == null) return null; if (val.Equals("m", StringComparison.CurrentCultureIgnoreCase) || val.Equals("male", StringComparison.CurrentCultureIgnoreCase)) return 0; if (val.Equals("f", StringComparison.CurrentCultureIgnoreCase) || val.Equals("female", StringComparison.CurrentCultureIgnoreCase)) return 1; + this.HighlightLookup(lookup, ReadState.WARN); return 2; // whatever } @@ -84,6 +120,7 @@ namespace bsmd.ExcelReadService if (val.IndexOf("baltic", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("europe", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("overseas", StringComparison.OrdinalIgnoreCase) >= 0) return 2; + this.HighlightLookup(lookup, ReadState.FAIL); return null; } @@ -93,6 +130,7 @@ namespace bsmd.ExcelReadService if (val.IndexOf("sbt", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("single", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("double", StringComparison.OrdinalIgnoreCase) >= 0) return 2; + this.HighlightLookup(lookup, ReadState.FAIL); return null; } @@ -102,6 +140,7 @@ namespace bsmd.ExcelReadService if (val.IndexOf("full", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("empty", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("inerted", StringComparison.OrdinalIgnoreCase) >= 0) return 2; + this.HighlightLookup(lookup, ReadState.FAIL); return null; } @@ -111,6 +150,7 @@ namespace bsmd.ExcelReadService if (val.IndexOf("all", StringComparison.OrdinalIgnoreCase) >= 0) return 0; if (val.IndexOf("some", StringComparison.OrdinalIgnoreCase) >= 0) return 1; if (val.IndexOf("none", StringComparison.OrdinalIgnoreCase) >= 0) return 2; + this.HighlightLookup(lookup, ReadState.FAIL); return null; } @@ -135,10 +175,12 @@ namespace bsmd.ExcelReadService return date; // TODO: weitere varianten ausprobieren + this.HighlightLookup(lookup, ReadState.WARN); return null; } catch (Exception) { + this.HighlightLookup(lookup, ReadState.FAIL); _log.WarnFormat("error parsing datetime for lookup {0}", lookup); return null; } @@ -173,10 +215,12 @@ namespace bsmd.ExcelReadService return date; if (DateTime.TryParseExact(val, "HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out date)) return date; + this.HighlightLookup(lookup, ReadState.WARN); return null; } catch (Exception) { + this.HighlightLookup(lookup, ReadState.FAIL); _log.WarnFormat("error reading time for lookup {0}", lookup); return null; } @@ -196,10 +240,12 @@ namespace bsmd.ExcelReadService if (double.TryParse(val, out result)) return result; } + this.HighlightLookup(lookup, ReadState.WARN); return null; } catch (Exception) { + this.HighlightLookup(lookup, ReadState.FAIL); _log.WarnFormat("error reading number for lookup {0}", lookup); return null; } @@ -208,7 +254,11 @@ namespace bsmd.ExcelReadService internal bool? ReadBoolean(string lookup) { string val = this.ReadText(lookup); - if (val == null) return null; + if (val == null) + { + this.HighlightLookup(lookup, ReadState.WARN); + return null; + } if ((val == "y") || (val == "Y") || (val == "yes") || (val == "YES") || (val == "1") || (val == "x") || (val == "X")) return true; return false; diff --git a/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.Designer.cs b/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.Designer.cs index f02870a3..366ba076 100644 --- a/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.Designer.cs +++ b/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.Designer.cs @@ -39,7 +39,7 @@ // serviceInstaller1 // this.serviceInstaller1.Description = "Receives and processes Excel reports send via e-mail"; - this.serviceInstaller1.DisplayName = "EU-NOAD Excel Report Service"; + this.serviceInstaller1.DisplayName = "NSW Excel Report Service"; this.serviceInstaller1.ServiceName = "ExcelReadService"; // // ProjectInstaller diff --git a/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.resx b/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.resx index f3cbaaba..a5c17521 100644 --- a/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.resx +++ b/nsw/Source/bsmd.ExcelReadService/ProjectInstaller.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 17, 17 + 17, 56 196, 17 diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs index f1e91ac4..1186b7da 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,7 +12,7 @@ namespace bsmd.ExcelReadService.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -76,5 +76,14 @@ namespace bsmd.ExcelReadService.Properties { return ((int)(this["SleepSeconds"])); } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Reference Excel Sheet")] + public string SendEMailSubject { + get { + return ((string)(this["SendEMailSubject"])); + } + } } } diff --git a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings index c0ea01a8..da840a0c 100644 --- a/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings +++ b/nsw/Source/bsmd.ExcelReadService/Properties/Settings.settings @@ -20,5 +20,8 @@ 300 + + Reference Excel Sheet + \ No newline at end of file diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 89ba59fb..df42838e 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -160,6 +160,11 @@ namespace bsmd.ExcelReadService messages.Remove(ataMessage); } + internal static string CreateConfirmationSheet(MessageCore messageCore) + { + throw new NotImplementedException(); + } + #endregion #region ATD diff --git a/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj b/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj index b5210965..24cf7ba9 100644 --- a/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj +++ b/nsw/Source/bsmd.ExcelReadService/bsmd.ExcelReadService.csproj @@ -32,18 +32,24 @@ 4 - - ..\packages\log4net.2.0.3\lib\net40-full\log4net.dll + + ..\packages\log4net.2.0.5\lib\net45-full\log4net.dll + True True + + ..\packages\OpenPop.NET.2.0.6.1120\lib\net40\OpenPop.dll + True + ..\packages\System.Data.SQLite.Core.1.0.99.0\lib\net45\System.Data.SQLite.dll + diff --git a/nsw/Source/bsmd.ExcelReadService/packages.config b/nsw/Source/bsmd.ExcelReadService/packages.config index 05cddc35..16339648 100644 --- a/nsw/Source/bsmd.ExcelReadService/packages.config +++ b/nsw/Source/bsmd.ExcelReadService/packages.config @@ -1,6 +1,6 @@  - - + + \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 82192967..55bf2779 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.0.8")] +[assembly: AssemblyInformationalVersion("3.0.9")] [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 62c22fea..efed2f11 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.0.8.*")] +[assembly: AssemblyVersion("3.0.9.*")] diff --git a/nsw/Source/bsmd.email/bsmd.email.csproj b/nsw/Source/bsmd.email/bsmd.email.csproj index af58db1f..a6cfdd66 100644 --- a/nsw/Source/bsmd.email/bsmd.email.csproj +++ b/nsw/Source/bsmd.email/bsmd.email.csproj @@ -39,11 +39,13 @@ ..\bsmdKey.snk - - ..\packages\log4net.2.0.3\lib\net40-full\log4net.dll + + ..\packages\log4net.2.0.5\lib\net45-full\log4net.dll + True - - ..\packages\OpenPop.NET.2.0.6.1114\lib\net40\OpenPop.dll + + ..\packages\OpenPop.NET.2.0.6.1119\lib\net40\OpenPop.dll + True diff --git a/nsw/Source/bsmd.email/packages.config b/nsw/Source/bsmd.email/packages.config index 065ed4a3..ec3514f5 100644 --- a/nsw/Source/bsmd.email/packages.config +++ b/nsw/Source/bsmd.email/packages.config @@ -1,5 +1,5 @@  - - + + \ No newline at end of file diff --git a/nsw/Source/bsmd.herberg.FormService/Enums.cs b/nsw/Source/bsmd.herberg.FormService/Enums.cs index 876e975c..a44ec8d8 100644 --- a/nsw/Source/bsmd.herberg.FormService/Enums.cs +++ b/nsw/Source/bsmd.herberg.FormService/Enums.cs @@ -115,6 +115,19 @@ namespace bsmd.herberg.FormService OTHER_LEGAL_IDENTITY_DOCUMENT } + public static byte? ParseIdentityDocumentType(string val) + { + if (val.Equals("IDENTITY_CARD", StringComparison.OrdinalIgnoreCase)) return 0; + if (val.Equals("Id Card", StringComparison.OrdinalIgnoreCase)) return 0; + if (val.Equals("PASSPORT", StringComparison.OrdinalIgnoreCase)) return 1; + if (val.Equals("MUSTER_BOOK", StringComparison.OrdinalIgnoreCase)) return 2; + if (val.Equals("PICTURE_ID", StringComparison.OrdinalIgnoreCase)) return 3; + if (val.Equals("RESIDENTAL_PERMIT", StringComparison.OrdinalIgnoreCase)) return 4; + if (val.Equals("OTHER_LEGAL_IDENTITY_DOCUMENT", StringComparison.OrdinalIgnoreCase)) return 5; + + return null; + } + public enum INFShipClass : byte { INF1, diff --git a/nsw/Source/bsmd.herberg.FormService/Util.cs b/nsw/Source/bsmd.herberg.FormService/Util.cs index 0a7636fe..63452947 100644 --- a/nsw/Source/bsmd.herberg.FormService/Util.cs +++ b/nsw/Source/bsmd.herberg.FormService/Util.cs @@ -1046,7 +1046,7 @@ namespace bsmd.herberg.FormService if (pDict.ContainsKey("PassengerDateOfBirth")) pas.PassengerDateOfBirth = Extensions.TryParseDateTime(pDict["PassengerDateOfBirth"]); if (pDict.ContainsKey("PassengerGender")) pas.PassengerGender = Enums.ParseGender(pDict["PassengerGender"]); if (pDict.ContainsKey("PassengerNationalityCode")) pas.PassengerNationality = pDict["PassengerNationalityCode"]; - if (pDict.ContainsKey("PassengerIdentityDocumentType")) pas.PassengerIdentityDocumentType = (byte)Enum.Parse(typeof(Enums.PassengerIdentityDocumentType), pDict["PassengerIdentityDocumentType"], true); + if (pDict.ContainsKey("PassengerIdentityDocumentType")) pas.PassengerIdentityDocumentType = Enums.ParseIdentityDocumentType(pDict["PassengerIdentityDocumentType"]); if (pDict.ContainsKey("PassengerIdentityDocumentId")) pas.PassengerIdentityDocumentId = pDict["PassengerIdentityDocumentId"]; if (pDict.ContainsKey("PassengerVisaNumber")) pas.PassengerVisaNumber = pDict["PassengerVisaNumber"]; if (pDict.ContainsKey("PassengerPortCodeOfEmbarkation") && pDict.ContainsKey("PassengerCountryCodeOfEmbarkation"))