diff --git a/ENI-2/ENI2/ENI2/SucheControl.xaml b/ENI-2/ENI2/ENI2/SucheControl.xaml
index 146979c5..9a93182c 100644
--- a/ENI-2/ENI2/ENI2/SucheControl.xaml
+++ b/ENI-2/ENI2/ENI2/SucheControl.xaml
@@ -8,40 +8,64 @@
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="800">
-
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ENI-2/ENI2/ENI2/SucheControl.xaml.cs b/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
index 203c3058..f0c6a4f3 100644
--- a/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
+++ b/ENI-2/ENI2/ENI2/SucheControl.xaml.cs
@@ -16,6 +16,8 @@ using System.Windows.Shapes;
using Xceed.Wpf.Toolkit;
+using bsmd.database;
+
namespace ENI2
{
///
@@ -23,6 +25,9 @@ namespace ENI2
///
public partial class SucheControl : UserControl
{
+
+ private List anmeldungen = new List();
+
public SucheControl()
{
InitializeComponent();
@@ -36,12 +41,31 @@ namespace ENI2
textBoxIMO.Text = string.Empty;
textBoxName.Text = string.Empty;
textBoxTicketNr.Text = string.Empty;
- dateTimePickerETA.Text = string.Empty;
+ dateTimePickerETAFrom.Text = string.Empty;
+ dateTimePickerETATo.Text = string.Empty;
}
private void buttonSuche_Click(object sender, RoutedEventArgs e)
{
+ // filter auswerten
+ Dictionary filterDict = new Dictionary();
+ if (!this.textBoxHafen.Text.IsNullOrEmpty())
+ filterDict.Add(MessageCore.SearchFilterType.FILTER_PORT, this.textBoxHafen.Text);
+ if (!this.textBoxId.Text.IsNullOrEmpty())
+ filterDict.Add(MessageCore.SearchFilterType.FILTER_ID, this.textBoxId.Text);
+ if (!this.textBoxIMO.Text.IsNullOrEmpty())
+ filterDict.Add(MessageCore.SearchFilterType.FILTER_IMO, this.textBoxIMO.Text);
+ if (!this.textBoxName.Text.IsNullOrEmpty())
+ filterDict.Add(MessageCore.SearchFilterType.FILTER_SHIPNAME, this.textBoxName.Text);
+ if (!this.textBoxTicketNr.Text.IsNullOrEmpty())
+ filterDict.Add(MessageCore.SearchFilterType.FILTER_TICKETNO, this.textBoxTicketNr.Text);
+
+ // suche auslösen
+ this.anmeldungen = DBManager.Instance.GetMessageCoresWithFilters(filterDict);
+
+ // ergebnis anzeigen
+ this.dataGrid.ItemsSource = this.anmeldungen;
}
}
}
diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx
index f463b495..60e0086d 100644
Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ
diff --git a/nsw/HIS-NORD/HIS-NORD_BSMD.docx b/nsw/HIS-NORD/HIS-NORD_BSMD.docx
new file mode 100644
index 00000000..2dfb0e3b
Binary files /dev/null and b/nsw/HIS-NORD/HIS-NORD_BSMD.docx differ
diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
index 6cd1766c..f0d86a55 100644
--- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
+++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs
@@ -66,9 +66,9 @@ namespace bsmd.ExcelReadService
var val = _nameDict[lookup].RefersToRange.Value;
var val2 = _nameDict[lookup].RefersToRange.Value2;
if (val != null)
- return val.ToString();
+ return val.ToString().Trim();
if (val2 != null)
- return val2.ToString();
+ return val2.ToString().Trim();
}
catch(COMException)
{
diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs
index 3a42b829..969b6ec9 100644
--- a/nsw/Source/bsmd.database/DBManager.cs
+++ b/nsw/Source/bsmd.database/DBManager.cs
@@ -140,6 +140,23 @@ namespace bsmd.database
return result;
}
+ public List GetMessageCoresWithFilters(Dictionary filters)
+ {
+ MessageCore aMessageCore = new MessageCore();
+ SqlCommand cmd = new SqlCommand();
+ aMessageCore.PrepareLoadCommand(cmd, Message.LoadFilter.SEARCH_CORE_FILTERS, filters);
+
+ SqlDataReader reader = this.PerformCommand(cmd);
+ List cores = aMessageCore.LoadList(reader);
+ List result = new List();
+ foreach (MessageCore core in cores)
+ {
+ this.LoadCustomer(core);
+ result.Add(core);
+ }
+ return result;
+ }
+
///
/// Lädt MessageCore (=Schiffsanlauf) einer EU-NOAD Nachricht vom Fleettracker / Herberg
///
diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs
index b71687ec..52800455 100644
--- a/nsw/Source/bsmd.database/Message.cs
+++ b/nsw/Source/bsmd.database/Message.cs
@@ -134,7 +134,8 @@ namespace bsmd.database
BY_CORE_ENI,
BY_CORE_EXCEL,
BY_CORE_HE,
- CREATE_EXCEL
+ CREATE_EXCEL,
+ SEARCH_CORE_FILTERS
}
///
diff --git a/nsw/Source/bsmd.database/MessageCore.cs b/nsw/Source/bsmd.database/MessageCore.cs
index 4eda3de1..34f8d4a6 100644
--- a/nsw/Source/bsmd.database/MessageCore.cs
+++ b/nsw/Source/bsmd.database/MessageCore.cs
@@ -53,6 +53,17 @@ namespace bsmd.database
RECEIPT // einfache Empfangsbestätigung (TBD)
}
+
+ public enum SearchFilterType
+ {
+ FILTER_ID,
+ FILTER_PORT,
+ FILTER_IMO,
+ FILTER_SHIPNAME,
+ FILTER_ETA,
+ FILTER_TICKETNO
+ }
+
#endregion
#region Properties
@@ -277,6 +288,49 @@ namespace bsmd.database
query += "WHERE CreateExcel = 1";
break;
}
+ case Message.LoadFilter.SEARCH_CORE_FILTERS:
+ {
+ // object ist jetzt ein dict aus filtertyp und filterparameter
+ bool moreThanOne = false;
+ StringBuilder sb = new StringBuilder(query);
+ Dictionary searchDict = criteria[0] as Dictionary;
+ if (searchDict != null && (searchDict.Count > 0))
+ {
+ sb.Append("WHERE ");
+ foreach (SearchFilterType key in searchDict.Keys)
+ {
+ if (moreThanOne) sb.Append(" AND ");
+ switch(key)
+ {
+ case SearchFilterType.FILTER_ETA:
+ // ist eine "between" Suche
+
+ break;
+ case SearchFilterType.FILTER_ID:
+ sb.Append(" (VisitId LIKE @SEARCH_ID OR TransitId LIKE @SEARCH_ID) ");
+ ((SqlCommand)cmd).Parameters.AddWithValue("@SEARCH_ID", string.Format("%{0}%", searchDict[key]));
+ break;
+ case SearchFilterType.FILTER_IMO:
+ sb.Append(" IMO = @SEARCH_IMO ");
+ ((SqlCommand)cmd).Parameters.AddWithValue("@SEARCH_IMO", searchDict[key]);
+ break;
+ case SearchFilterType.FILTER_PORT:
+ sb.Append(" Portname LIKE @SEARCH_PORT ");
+ ((SqlCommand)cmd).Parameters.AddWithValue("@SEARCH_PORT", string.Format("%{0}%", searchDict[key]));
+ break;
+ case SearchFilterType.FILTER_SHIPNAME:
+
+ break;
+ case SearchFilterType.FILTER_TICKETNO:
+
+ break;
+ }
+ if (!moreThanOne) moreThanOne = true;
+ }
+ query = sb.ToString();
+ }
+ break;
+ }
case Message.LoadFilter.ALL:
default:
break;
diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs
index ab391b04..3ad80196 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.4.8")]
+[assembly: AssemblyInformationalVersion("3.4.9")]
[assembly: AssemblyCopyright("Copyright © 2014-2017 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 b52622db..e98e3ba1 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.4.8.*")]
+[assembly: AssemblyVersion("3.4.9.*")]