diff --git a/ENI2/Controls/MaerskListControl.xaml.cs b/ENI2/Controls/MaerskListControl.xaml.cs index bf334d66..1cb21559 100644 --- a/ENI2/Controls/MaerskListControl.xaml.cs +++ b/ENI2/Controls/MaerskListControl.xaml.cs @@ -444,8 +444,8 @@ namespace ENI2.Controls else { imosAreOkay = false; - } - } + } + } else { imosAreOkay = false; @@ -459,7 +459,7 @@ namespace ENI2.Controls importData.Add(md); - if (isFirstRow) isFirstRow = false; + if (isFirstRow) isFirstRow = false; } } catch (Exception ex) @@ -469,7 +469,7 @@ namespace ENI2.Controls if (imosAreOkay && importData.Count > 0) { - busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY; + busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY; foreach (MaerskData md in importData) { @@ -480,15 +480,37 @@ namespace ENI2.Controls (m.ColG != null) ? m.ColG.Equals(md.ColG) : (md.ColG == null) && (m.ColH != null) ? m.ColH.Equals(md.ColH) : (md.ColH == null)); - if(foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md)) - foundData.Status = MaerskData.MDStatus.UPDATED; + if ((foundData.MessageCore == null) || !(foundData.MessageCore.Cancelled ?? false)) + { + if (foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md)) + foundData.Status = MaerskData.MDStatus.UPDATED; + } } else { if (!md.ColM.IsNullOrEmpty()) { md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM); + if (md.MessageCore != null) + { + MaerskData existingMD = await DBManagerAsync.LoadMaerskDataForCoreAsync(md.MessageCore.Id.Value); + if(existingMD == null) + { + // we have a core but no MarskData for this import -> save it + md.MessageCoreId = (Guid) md.MessageCore.Id; + _ = DBManagerAsync.SaveAsync(md); + } + else + { + existingMD.Update(md); + _ = DBManagerAsync.SaveAsync(existingMD); + this.UpdateStatus(existingMD); + maerskDataList.Add(existingMD); + continue; // add existing instead of new one + } + } } + this.UpdateStatus(md); maerskDataList.Add(md); } @@ -498,7 +520,7 @@ namespace ENI2.Controls busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL; this.dataGridPOCores.Items.Refresh(); - } + } } stream.Close(); @@ -531,26 +553,6 @@ namespace ENI2.Controls } } - /* - - private async void buttonSave_Click(object sender, RoutedEventArgs e) - { - busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY; - - // 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); - } - } - - busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL; - } - - */ - private async void buttonRequestIds_Click(object sender, RoutedEventArgs e) { // find all entries from now until 4 days into the future and track parallel requests diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml b/ENI2/DetailViewControls/OverViewDetailControl.xaml index bb384509..8a06b9d0 100644 --- a/ENI2/DetailViewControls/OverViewDetailControl.xaml +++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml @@ -8,6 +8,7 @@ xmlns:enictrl="clr-namespace:ENI2.Controls" xmlns:p="clr-namespace:ENI2.Properties" xmlns:util="clr-namespace:ENI2.Util" + xmlns:data="clr-namespace:bsmd.database;assembly=bsmd.database" xmlns:local="clr-namespace:ENI2.DetailViewControls" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="800"> @@ -147,6 +148,13 @@ + + + + + + + @@ -160,10 +168,7 @@ - - + diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj index efd719f2..4af2fcb4 100644 --- a/ENI2/ENI2.csproj +++ b/ENI2/ENI2.csproj @@ -36,8 +36,8 @@ 5.4.0.0 true publish.html - 8 - 7.10.0.%2a + 6 + 7.11.0.%2a false true true @@ -436,6 +436,7 @@ + diff --git a/ENI2/EditControls/EditIMSBCDialog.xaml b/ENI2/EditControls/EditIMSBCDialog.xaml index e40e216c..0964c8f9 100644 --- a/ENI2/EditControls/EditIMSBCDialog.xaml +++ b/ENI2/EditControls/EditIMSBCDialog.xaml @@ -46,7 +46,7 @@ - +