diff --git a/ENI2/Controls/MaerskListControl.xaml b/ENI2/Controls/MaerskListControl.xaml
index 4369abde..ab188f04 100644
--- a/ENI2/Controls/MaerskListControl.xaml
+++ b/ENI2/Controls/MaerskListControl.xaml
@@ -31,6 +31,8 @@
+
+
@@ -41,9 +43,11 @@
-
-
-
+
+
+
+
+
diff --git a/ENI2/Controls/MaerskListControl.xaml.cs b/ENI2/Controls/MaerskListControl.xaml.cs
index f085d15e..0738f479 100644
--- a/ENI2/Controls/MaerskListControl.xaml.cs
+++ b/ENI2/Controls/MaerskListControl.xaml.cs
@@ -169,7 +169,7 @@ namespace ENI2.Controls
this.PerformSearch();
}
- private void buttonImport_Click(object sender, RoutedEventArgs e)
+ private async void buttonImport_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog
{
@@ -233,8 +233,16 @@ namespace ENI2.Controls
// we only want cores for the next 3 days
if (importData.Count > 0)
{
+ busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
// TODO: find matching message cores..
-
+ foreach(MaerskData md in importData)
+ {
+ if(!md.ColM.IsNullOrEmpty())
+ {
+ md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM);
+ }
+ }
+ busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
}
// sort
@@ -257,6 +265,24 @@ namespace ENI2.Controls
}
+ private async void buttonSave_Click(object sender, RoutedEventArgs e)
+ {
+ // save the current list to DB (only if the entries have matching cores!)
+ foreach(MaerskData md in this.maerskDataList)
+ {
+ if(md.MessageCore != null)
+ {
+ await DBManagerAsync.Save(md.MessageCore);
+ }
+ }
+
+ }
+
+ private void buttonRequestIds_Click(object sender, RoutedEventArgs e)
+ {
+ // find all entries from now until 3 days into the future and track parallel requests
+ }
+
#endregion
}
diff --git a/bsmd.database/DBManagerAsync.cs b/bsmd.database/DBManagerAsync.cs
index 90c56bc3..9c43ffd9 100644
--- a/bsmd.database/DBManagerAsync.cs
+++ b/bsmd.database/DBManagerAsync.cs
@@ -7,8 +7,6 @@ using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics;
-using System.Linq;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -33,6 +31,13 @@ namespace bsmd.database
#region public methods
+ public static async Task Save(DatabaseEntity entity)
+ {
+ SqlCommand cmd = new SqlCommand();
+ entity.PrepareSave(cmd);
+ return await PerformNonQueryAsync(cmd);
+ }
+
#region convenience loading functions
public static async Task> LoadMaerskCoresByIntervalAsync(Dictionary filterDict, bool loadXtraData = false)
@@ -41,20 +46,32 @@ namespace bsmd.database
MessageCore aMessageCore = new MessageCore();
aMessageCore.PrepareLoadCommand(cmd, Message.LoadFilter.SEARCH_CORE_FILTERS, filterDict);
SqlDataReader reader = await PerformCommandAsync(cmd);
- List result = await aMessageCore.LoadListAsync(reader);
+ return await aMessageCore.LoadListAsync(reader);
+ }
+
+ public static async Task LoadCoreByVisitIdAsync(string visitId)
+ {
+ SqlCommand cmd = new SqlCommand();
+ MessageCore aMessageCore = new MessageCore();
+ aMessageCore.PrepareLoadCommand(cmd, Message.LoadFilter.BY_VISITID, visitId);
+ SqlDataReader reader = await PerformCommandAsync(cmd);
+ List resultList = await aMessageCore.LoadListAsync(reader);
+ MessageCore result = null;
+ if(resultList.Count > 0)
+ {
+ if(resultList.Count > 1)
+ _log.WarnFormat("more than one core found for VISIT-ID {0}", visitId);
+ result = resultList[0];
+ }
return result;
}
#endregion
-
-
#endregion
#region async DB access methods
-
-
internal static async Task PerformCommandAsync(SqlCommand cmd)
{
SqlDataReader reader = null;
@@ -87,7 +104,7 @@ namespace bsmd.database
return reader;
}
- internal static async Task PerformNonQuery(SqlCommand cmd)
+ internal static async Task PerformNonQueryAsync(SqlCommand cmd)
{
int result = -1;
// await _asyncSemaphore.WaitAsync();
@@ -114,7 +131,7 @@ namespace bsmd.database
return result;
}
- internal static async Task PerformReadIntQuery(SqlCommand cmd)
+ internal static async Task PerformReadIntQueryAsync(SqlCommand cmd)
{
int? result = null;