3.7.3 Zwischenstand - einiges an Änderungen durch Korrekturen für Christin / Schnittstelle / Excel

This commit is contained in:
Daniel Schick 2017-10-04 17:53:44 +00:00
parent 4edb616a04
commit b8c99f2ec6
75 changed files with 774 additions and 393 deletions

View File

@ -4,6 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ENI2.Controls" xmlns:local="clr-namespace:ENI2.Controls"
xmlns:p="clr-namespace:ENI2.Properties"
xmlns:db="clr-namespace:bsmd.database;assembly=bsmd.database" xmlns:db="clr-namespace:bsmd.database;assembly=bsmd.database"
xmlns:util="clr-namespace:ENI2.Util" xmlns:util="clr-namespace:ENI2.Util"
mc:Ignorable="d" mc:Ignorable="d"
@ -15,9 +16,15 @@
<RowDefinition Height="32" /> <RowDefinition Height="32" />
<RowDefinition Height="32" /> <RowDefinition Height="32" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*" />
<ColumnDefinition Width="0.7*" />
</Grid.ColumnDefinitions>
<RadioButton Grid.Row="0" Name="radioButtonOR" VerticalContentAlignment="Center" Content="OR" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.OR}}"/> <RadioButton Grid.Row="0" Name="radioButtonOR" VerticalContentAlignment="Center" Content="OR" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.OR}}"/>
<RadioButton Grid.Row="1" Name="radioButtonAND" VerticalContentAlignment="Center" Content="AND" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.AND}}"/> <RadioButton Grid.Row="1" Name="radioButtonAND" VerticalContentAlignment="Center" Content="AND" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.AND}}"/>
<RadioButton Grid.Row="2" Name="radioButtonNOT" VerticalContentAlignment="Center" Content="NOT" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.NOT}}"/> <RadioButton Grid.Row="2" Name="radioButtonNOT" VerticalContentAlignment="Center" Content="NOT" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.NOT}}"/>
<RadioButton Grid.Row="3" Name="radioButtonXOR" VerticalContentAlignment="Center" Content="XOR" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.XOR}}"/> <RadioButton Grid.Row="3" Name="radioButtonXOR" VerticalContentAlignment="Center" Content="XOR" Margin="2" IsChecked="{Binding GroupOperator, Converter={util:EnumToBooleanConverter}, ConverterParameter={x:Static db:ConditionGroup+GroupOperatorEnum.XOR}}"/>
<Label Grid.Row="0" Grid.Column="1" Content="{x:Static p:Resources.textFailureMessage}" VerticalContentAlignment="Center" />
<TextBox Name="textBoxFailureMessage" Grid.Row="1" Grid.Column="1" Grid.RowSpan="3" Margin="2" Text="{Binding ErrorMessage}"/>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -11,9 +11,8 @@
d:DesignHeight="150" d:DesignWidth="300"> d:DesignHeight="150" d:DesignWidth="300">
<Grid Name="gridContent"> <Grid Name="gridContent">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="0.25*" />
<ColumnDefinition Width="0.25*" /> <ColumnDefinition Width="0.25*" />
<ColumnDefinition Width="0.75*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="32" /> <RowDefinition Height="32" />
@ -22,13 +21,10 @@
<RowDefinition Height="*" /> <RowDefinition Height="*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textFieldName}" VerticalContentAlignment="Center"/> <Label Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textFieldName}" VerticalContentAlignment="Center"/>
<Label Grid.Row="0" Grid.Column="1" Content="{x:Static p:Resources.textOperator}" VerticalContentAlignment="Center"/> <Label Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textOperator}" VerticalContentAlignment="Center"/>
<Label Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textValue}" VerticalContentAlignment="Center"/> <Label Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textValue}" VerticalContentAlignment="Center"/>
<ComboBox Name="comboBoxFieldName" Grid.Row="1" Grid.Column="0" Margin="2" SelectedValuePath="FullName" SelectedValue="{Binding FieldName}" /> <ComboBox Name="comboBoxFieldName" Grid.Row="0" Grid.Column="1" Margin="2" SelectedValuePath="FullName" SelectedValue="{Binding FieldName}" />
<ComboBox Name="comboBoxOperator" Grid.Row="1" Grid.Column="1" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="{Binding ConditionOperator}"/> <ComboBox Name="comboBoxOperator" Grid.Row="1" Grid.Column="1" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="{Binding ConditionOperator}" SelectionChanged="comboBoxOperator_SelectionChanged" />
<TextBox Name="textBoxValue" Grid.Row="1" Grid.Column="2" Margin="2" Text="{Binding Value}" VerticalContentAlignment="Center" /> <TextBox Name="textBoxValue" Grid.Row="2" Grid.Column="2" Margin="2" Text="{Binding Value}" VerticalContentAlignment="Center" />
<Label Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textFailureMessage}" VerticalContentAlignment="Center" />
<TextBox Name="textBoxFailureMessage" Grid.Row="2" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2" Margin="2" Text="{Binding ErrorMessage}"/>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -2,20 +2,8 @@
// Description: Plugin Control für eine Validierungsbedingung // Description: Plugin Control für eine Validierungsbedingung
// //
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using bsmd.database; using bsmd.database;
@ -46,5 +34,15 @@ namespace ENI2.Controls
set { this.gridContent.DataContext = value; this._validationCondition = value; } set { this.gridContent.DataContext = value; this._validationCondition = value; }
} }
private void comboBoxOperator_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ValidationCondition.ConditionOperatorEnum selectedVal = (ValidationCondition.ConditionOperatorEnum)this.comboBoxOperator.SelectedValue;
bool isUnary = false;
if ((selectedVal == ValidationCondition.ConditionOperatorEnum.NOT_NULL) ||
(selectedVal == ValidationCondition.ConditionOperatorEnum.NULL))
isUnary = true;
this.textBoxValue.IsEnabled = !isUnary;
if (isUnary) this.textBoxValue.Clear();
}
} }
} }

View File

@ -66,6 +66,11 @@ namespace ENI2
/// </summary> /// </summary>
public event Action RequestValidate; public event Action RequestValidate;
/// <summary>
/// Damit kann signalisiert werden, dass die Anmeldung readonly wird (z.B. bei Storno)
/// </summary>
public event Action RequestDisable;
/// <summary> /// <summary>
/// Eine in der Detailansicht enthaltene Meldeklasse hat sich geändert /// Eine in der Detailansicht enthaltene Meldeklasse hat sich geändert
/// </summary> /// </summary>
@ -94,9 +99,7 @@ namespace ENI2
/// <summary> /// <summary>
/// particular messages that are edited on this page /// particular messages that are edited on this page
/// </summary> /// </summary>
public List<Message> ControlMessages { get { return this._controlMessages; } } public List<Message> ControlMessages { get { return this._controlMessages; } }
public Guid UserId { get; set; } // TODO: Ersetzen mit der User-Entity
public bool LockedByOtherUser { get; set; } public bool LockedByOtherUser { get; set; }
@ -143,6 +146,11 @@ namespace ENI2
this.RequestValidate?.Invoke(); this.RequestValidate?.Invoke();
} }
protected virtual void OnRequestDisable()
{
this.RequestDisable?.Invoke();
}
protected virtual void OnControlCacheReset(string messageGroupName) protected virtual void OnControlCacheReset(string messageGroupName)
{ {
this.ResetControlCache?.Invoke(messageGroupName); this.ResetControlCache?.Invoke(messageGroupName);

View File

@ -134,12 +134,13 @@ namespace ENI2
detailControl.NotificationClassChanged += DetailControl_NotificationClassChanged; detailControl.NotificationClassChanged += DetailControl_NotificationClassChanged;
detailControl.ResetControlCache += DetailControl_ResetControlCache; detailControl.ResetControlCache += DetailControl_ResetControlCache;
detailControl.RequestValidate += DetailControl_RequestValidate; detailControl.RequestValidate += DetailControl_RequestValidate;
detailControl.RequestDisable += DetailControl_RequestDisable;
detailControl.Initialize(); detailControl.Initialize();
detailControl.IsEnabled = !this.LockedByOtherUser; detailControl.IsEnabled = !this.LockedByOtherUser;
if (!detailControl.IsEnabled && (detailControl is OverViewDetailControl) && !(_core.Cancelled ?? false)) if (!detailControl.IsEnabled && (detailControl is OverViewDetailControl) && !(_core.Cancelled ?? false))
((OverViewDetailControl)detailControl).ShowLockedBy(this.LockedBy); ((OverViewDetailControl)detailControl).ShowLockedBy(this.LockedBy);
controlCache.Add(mg.MessageGroupName, detailControl); controlCache.Add(mg.MessageGroupName, detailControl);
this.buttonSave.Visibility = Visibility.Hidden; this.buttonSave.Visibility = Visibility.Hidden;
@ -165,7 +166,19 @@ namespace ENI2
detailView.Children.Add(controlCache[mg.MessageGroupName]); detailView.Children.Add(controlCache[mg.MessageGroupName]);
} }
} }
private void DetailControl_RequestDisable()
{
this.LockedByOtherUser = true; // fake flag
// clear existing controls
this.detailView.Children.Clear();
this.controlCache.Clear();
// return to "new" overview
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages_SelectionChanged(this, null)));
}
private void DetailControl_ResetControlCache(string messageGroupName) private void DetailControl_ResetControlCache(string messageGroupName)
{ {
@ -206,8 +219,10 @@ namespace ENI2
((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION))) ((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION)))
message.InternalStatus = Message.BSMDStatus.UPDATED; message.InternalStatus = Message.BSMDStatus.UPDATED;
string userName = "?"; string userName = "?";
if (this.LockedBy != null) if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
userName = this.LockedBy.Logon; {
userName = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].Logon;
}
message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now); message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message);
message.SaveElements(); message.SaveElements();
@ -319,16 +334,40 @@ namespace ENI2
this._vViolations.AddRange(violations); this._vViolations.AddRange(violations);
} }
foreach (MessageError me in this._vErrors) foreach (MessageError me in this._vErrors)
{ {
this.highlightService.HighlightError(me, this.GetContainerForMessageGroupName(me.MessageGroupName)); this.highlightService.HighlightError(me, this.GetContainerForMessageGroupName(me.MessageGroupName));
} }
foreach (MessageViolation mv in this._vViolations) foreach (MessageViolation mv in this._vViolations)
{ {
this.highlightService.HighlightViolation(mv, this.GetContainerForMessageGroupName(mv.MessageGroupName)); this.highlightService.HighlightViolation(mv, this.GetContainerForMessageGroupName(mv.MessageGroupName));
} }
// "neue" regelbasierte Validierung: Hier werden die einzelnen Regeln geprüft.
List<bsmd.database.ValidationRule> validationRules = DBManager.Instance.GetValidationRules();
foreach (bsmd.database.ValidationRule validationRule in validationRules) {
if (!validationRule.IsActive ?? false) continue;
// Regel auspacken
ConditionGroup cg = ValidationCondition.LoadFromString(validationRule.Rule);
// außer der Nachricht müssten noch die "gescheiterten" Felder zurückgeliefert werden, damit ein Highlighting stattfinden kann!
List<ValidationField> failedFieldList = new List<ValidationField>();
string resultMessage = string.Empty;
if (cg != null) {
if (ValidationCondition.CheckConditions(this.Core, this._messages, cg, failedFieldList, out resultMessage) ?? false)
{
// Regel hat zugeschlagen -> reporting
Trace.WriteLine(string.Format("Rule {0} resulted in {1}", validationRule.Name, resultMessage));
} else
{
Trace.WriteLine(string.Format("Rule {0} passed", validationRule.Name));
}
}
}
} }
#endregion #endregion

View File

@ -143,6 +143,7 @@ namespace ENI2.DetailViewControls
private void DataGridBKRA_CreateRequested() private void DataGridBKRA_CreateRequested()
{ {
BRKA brka = new BRKA(); BRKA brka = new BRKA();
brka.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
EditBKRDialog ebd = new EditBKRDialog(); EditBKRDialog ebd = new EditBKRDialog();
ebd.BRKA = brka; ebd.BRKA = brka;
ebd.IsDeparture = false; ebd.IsDeparture = false;
@ -154,6 +155,7 @@ namespace ENI2.DetailViewControls
ebd.BRKA.MessageHeader = _bkraMessage; ebd.BRKA.MessageHeader = _bkraMessage;
this.dataGridBKRA.Items.Refresh(); this.dataGridBKRA.Items.Refresh();
ebd.BRKA = new BRKA(); ebd.BRKA = new BRKA();
ebd.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.BKRA); this.SublistElementChanged(Message.NotificationClass.BKRA);
}; };
@ -173,7 +175,9 @@ namespace ENI2.DetailViewControls
{ {
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brka); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brka);
this._bkraMessage.Elements.Remove(brka); this._bkraMessage.Elements.Remove(brka);
DatabaseEntity.ResetIdentifiers(this._bkraMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.BKRA);
this.dataGridBKRA.Items.Refresh(); this.dataGridBKRA.Items.Refresh();
} }
} }
@ -193,6 +197,7 @@ namespace ENI2.DetailViewControls
_bkraMessage.Elements.Add(eld.BRKA); _bkraMessage.Elements.Add(eld.BRKA);
this.dataGridBKRA.Items.Refresh(); this.dataGridBKRA.Items.Refresh();
eld.BRKA = new BRKA(); eld.BRKA = new BRKA();
eld.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
eld.BRKA.MessageHeader = _bkraMessage; eld.BRKA.MessageHeader = _bkraMessage;
this.SublistElementChanged(Message.NotificationClass.BKRA); this.SublistElementChanged(Message.NotificationClass.BKRA);
}; };

View File

@ -155,6 +155,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_bpol.PortOfItineraries.Remove(poi); _bpol.PortOfItineraries.Remove(poi);
DBManager.Instance.Delete(poi); DBManager.Instance.Delete(poi);
DatabaseEntity.ResetIdentifiers(_bpol.PortOfItineraries);
this.SublistElementChanged(Message.NotificationClass.BPOL);
this.dataGridPortOfItinerary.Items.Refresh(); this.dataGridPortOfItinerary.Items.Refresh();
} }
} }
@ -197,6 +199,7 @@ namespace ENI2.DetailViewControls
private void DataGridPassengerList_CreateRequested() private void DataGridPassengerList_CreateRequested()
{ {
PAS pas = new PAS(); PAS pas = new PAS();
pas.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements);
EditPASDialog epd = new EditPASDialog(); EditPASDialog epd = new EditPASDialog();
epd.PAS = pas; epd.PAS = pas;
@ -207,6 +210,7 @@ namespace ENI2.DetailViewControls
this._pasMessage.Elements.Add(epd.PAS); this._pasMessage.Elements.Add(epd.PAS);
this.dataGridPassengerList.Items.Refresh(); this.dataGridPassengerList.Items.Refresh();
epd.PAS = new PAS(); epd.PAS = new PAS();
epd.PAS.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.PAS); this.SublistElementChanged(Message.NotificationClass.PAS);
}; };
@ -227,6 +231,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_pasMessage.Elements.Remove(pas); _pasMessage.Elements.Remove(pas);
DBManager.Instance.Delete(pas); DBManager.Instance.Delete(pas);
DatabaseEntity.ResetIdentifiers(_pasMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.PAS);
this.dataGridPassengerList.Items.Refresh(); this.dataGridPassengerList.Items.Refresh();
} }
} }
@ -245,6 +251,7 @@ namespace ENI2.DetailViewControls
_pasMessage.Elements.Add(epd.PAS); _pasMessage.Elements.Add(epd.PAS);
this.dataGridPassengerList.Items.Refresh(); this.dataGridPassengerList.Items.Refresh();
epd.PAS = new PAS(); epd.PAS = new PAS();
epd.PAS.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements);
epd.PAS.MessageHeader = _pasMessage; epd.PAS.MessageHeader = _pasMessage;
this.SublistElementChanged(Message.NotificationClass.PAS); this.SublistElementChanged(Message.NotificationClass.PAS);
}; };
@ -269,6 +276,7 @@ namespace ENI2.DetailViewControls
private void DataGridCrewList_CreateRequested() private void DataGridCrewList_CreateRequested()
{ {
CREW crew = new CREW(); CREW crew = new CREW();
crew.Identifier = CREW.GetNewIdentifier(_crewMessage.Elements);
EditCREWDialog ecd = new EditCREWDialog(); EditCREWDialog ecd = new EditCREWDialog();
ecd.CREW = crew; ecd.CREW = crew;
@ -279,6 +287,7 @@ namespace ENI2.DetailViewControls
this._crewMessage.Elements.Add(ecd.CREW); this._crewMessage.Elements.Add(ecd.CREW);
this.dataGridCrewList.Items.Refresh(); this.dataGridCrewList.Items.Refresh();
ecd.CREW = new CREW(); ecd.CREW = new CREW();
ecd.CREW.Identifier = CREW.GetNewIdentifier(_crewMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.CREW); this.SublistElementChanged(Message.NotificationClass.CREW);
}; };
@ -299,6 +308,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_crewMessage.Elements.Remove(crew); _crewMessage.Elements.Remove(crew);
DBManager.Instance.Delete(crew); DBManager.Instance.Delete(crew);
DatabaseEntity.ResetIdentifiers(_crewMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.CREW);
this.dataGridCrewList.Items.Refresh(); this.dataGridCrewList.Items.Refresh();
} }
} }
@ -317,6 +328,7 @@ namespace ENI2.DetailViewControls
_crewMessage.Elements.Add(ecd.CREW); _crewMessage.Elements.Add(ecd.CREW);
this.dataGridCrewList.Items.Refresh(); this.dataGridCrewList.Items.Refresh();
ecd.CREW = new CREW(); ecd.CREW = new CREW();
ecd.CREW.Identifier = CREW.GetNewIdentifier(_crewMessage.Elements);
ecd.CREW.MessageHeader = _crewMessage; ecd.CREW.MessageHeader = _crewMessage;
this.SublistElementChanged(Message.NotificationClass.CREW); this.SublistElementChanged(Message.NotificationClass.CREW);
}; };
@ -394,6 +406,7 @@ namespace ENI2.DetailViewControls
crew.MessageHeader = this._crewMessage; crew.MessageHeader = this._crewMessage;
crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements); crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements);
this._crewMessage.Elements.Add(crew);
importCrew.Add(crew); importCrew.Add(crew);
} }
} while (reader.NextResult()); } while (reader.NextResult());
@ -404,12 +417,12 @@ namespace ENI2.DetailViewControls
} }
if (importCrew.Count > 0) if (importCrew.Count > 0)
{ {
this._crewMessage.Elements.AddRange(importCrew);
this.dataGridCrewList.Items.Refresh(); this.dataGridCrewList.Items.Refresh();
this.SublistElementChanged(Message.NotificationClass.CREW); this.SublistElementChanged(Message.NotificationClass.CREW);
} MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
} }
}
stream.Close(); stream.Close();
} }
@ -466,6 +479,7 @@ namespace ENI2.DetailViewControls
pas.MessageHeader = this._pasMessage; pas.MessageHeader = this._pasMessage;
pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements); pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements);
this._pasMessage.Elements.Add(pas);
importPassenger.Add(pas); importPassenger.Add(pas);
} }
} while (reader.NextResult()); } while (reader.NextResult());
@ -476,10 +490,10 @@ namespace ENI2.DetailViewControls
} }
if (importPassenger.Count > 0) if (importPassenger.Count > 0)
{ {
this._pasMessage.Elements.AddRange(importPassenger);
this.dataGridPassengerList.Items.Refresh(); this.dataGridPassengerList.Items.Refresh();
this.SublistElementChanged(Message.NotificationClass.PAS); this.SublistElementChanged(Message.NotificationClass.PAS);
MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
} }
} }
stream.Close(); stream.Close();

View File

@ -137,7 +137,7 @@
<DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textIdentifier}" Binding="{Binding Identifier}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textName}" Binding="{Binding Name}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textName}" Binding="{Binding Name}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpointInformation}" Binding="{Binding FlashpointInformationDisplay}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textFlashpointInformation}" Binding="{Binding FlashpointInformationDisplay}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textFlashpoint}" Binding="{Binding Flashpoint}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textFlashpoint}" Binding="{Binding Flashpoint_CEL}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textQuantity}" Binding="{Binding Quantity_KGM, StringFormat={}{0:N3}}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textStowagePosition}" Binding="{Binding StowagePosition}" IsReadOnly="True" Width="auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textPortOfLoading}" Binding="{Binding PortOfLoading}" IsReadOnly="True" Width="auto" />

View File

@ -298,6 +298,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol);
this.haz.MARPOLPositions.Remove(marpol); this.haz.MARPOLPositions.Remove(marpol);
DatabaseEntity.ResetIdentifiers(haz.MARPOLPositions);
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridMARPOLItems.Items.Refresh(); this.dataGridMARPOLItems.Items.Refresh();
} }
} }
@ -373,6 +375,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc);
this.haz.IMSBCPositions.Remove(imsbc); this.haz.IMSBCPositions.Remove(imsbc);
DatabaseEntity.ResetIdentifiers(haz.IMSBCPositions);
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIMSBCItems.Items.Refresh(); this.dataGridIMSBCItems.Items.Refresh();
} }
} }
@ -448,6 +452,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc);
this.haz.IGCPositions.Remove(igc); this.haz.IGCPositions.Remove(igc);
DatabaseEntity.ResetIdentifiers(haz.IGCPositions);
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIGCItems.Items.Refresh(); this.dataGridIGCItems.Items.Refresh();
} }
} }
@ -523,6 +529,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc);
this.haz.IBCPositions.Remove(ibc); this.haz.IBCPositions.Remove(ibc);
DatabaseEntity.ResetIdentifiers(haz.IBCPositions);
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIBCItems.Items.Refresh(); this.dataGridIBCItems.Items.Refresh();
} }
} }
@ -598,6 +606,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg);
this.haz.IMDGPositions.Remove(imdg); this.haz.IMDGPositions.Remove(imdg);
DatabaseEntity.ResetIdentifiers(haz.IMDGPositions);
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
this.dataGridIMDGItems.Items.Refresh(); this.dataGridIMDGItems.Items.Refresh();
} }
} }

View File

@ -143,6 +143,7 @@ namespace ENI2.DetailViewControls
private void DataGridBKRD_CreateRequested() private void DataGridBKRD_CreateRequested()
{ {
BRKD brkd = new BRKD(); BRKD brkd = new BRKD();
brkd.Identifier = BRKD.GetNewIdentifier(_bkrdMessage.Elements);
EditBKRDialog ebd = new EditBKRDialog(); EditBKRDialog ebd = new EditBKRDialog();
ebd.BRKD = brkd; ebd.BRKD = brkd;
ebd.IsDeparture = true; ebd.IsDeparture = true;
@ -154,6 +155,7 @@ namespace ENI2.DetailViewControls
ebd.BRKD.MessageHeader = _bkrdMessage; ebd.BRKD.MessageHeader = _bkrdMessage;
this.dataGridBKRD.Items.Refresh(); this.dataGridBKRD.Items.Refresh();
ebd.BRKD = new BRKD(); ebd.BRKD = new BRKD();
ebd.BRKD.Identifier = BRKD.GetNewIdentifier(_bkrdMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.BKRD); this.SublistElementChanged(Message.NotificationClass.BKRD);
}; };
@ -173,6 +175,9 @@ namespace ENI2.DetailViewControls
{ {
// are you sure dialog is in base class // are you sure dialog is in base class
this._bkrdMessage.Elements.Remove(brkd); this._bkrdMessage.Elements.Remove(brkd);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brkd);
DatabaseEntity.ResetIdentifiers(this._bkrdMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.BKRD);
this.dataGridBKRD.Items.Refresh(); this.dataGridBKRD.Items.Refresh();
} }
} }
@ -192,6 +197,7 @@ namespace ENI2.DetailViewControls
_bkrdMessage.Elements.Add(eld.BRKD); _bkrdMessage.Elements.Add(eld.BRKD);
this.dataGridBKRD.Items.Refresh(); this.dataGridBKRD.Items.Refresh();
eld.BRKD = new BRKD(); eld.BRKD = new BRKD();
eld.BRKD.Identifier = BRKD.GetNewIdentifier(_bkrdMessage.Elements);
eld.BRKD.MessageHeader = _bkrdMessage; eld.BRKD.MessageHeader = _bkrdMessage;
this.SublistElementChanged(Message.NotificationClass.BKRD); this.SublistElementChanged(Message.NotificationClass.BKRD);
}; };

View File

@ -111,19 +111,16 @@
<TabItem Header="{x:Static p:Resources.textVisitsInfectedAreas}" Name="tabInfectedAreas"> <TabItem Header="{x:Static p:Resources.textVisitsInfectedAreas}" Name="tabInfectedAreas">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="60*" /> <ColumnDefinition Width="28" />
<ColumnDefinition Width="190*"/> <ColumnDefinition Width="*" />
<ColumnDefinition Width="430*" />
<ColumnDefinition Width="17*"/>
<ColumnDefinition Width="301*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="28"/> <RowDefinition Height="28"/>
<RowDefinition Height="200"/> <RowDefinition Height="200"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textShipVisitedInfectedArea}" Name="labelHasShipVisited" Margin="0,0,10,0" Grid.ColumnSpan="2"/> <CheckBox Name="checkBoxHasShipVisited" IsChecked="{Binding InfectedAreaVisited}" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="6,0,0,0"/>
<CheckBox Name="checkBoxHasShipVisited" IsChecked="{Binding MDHSimplification}" Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Margin="0,8,0,7" Grid.ColumnSpan="3"/> <Label HorizontalContentAlignment="Left" Grid.Row="0" Grid.Column="1" Content="{x:Static p:Resources.textShipVisitedInfectedArea}" Name="labelHasShipVisited" Margin="0,0,10,0" />
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5" x:Name="dataGridInfectedAreas" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" <enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridInfectedAreas" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0"> SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" /> <DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
@ -136,15 +133,15 @@
<TabItem Header="{x:Static p:Resources.textSanitaryMeasuresApplied}" Name="tabSanitaryMeasuresApplied"> <TabItem Header="{x:Static p:Resources.textSanitaryMeasuresApplied}" Name="tabSanitaryMeasuresApplied">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" /> <ColumnDefinition Width="28" />
<ColumnDefinition Width="3*" /> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="28"/> <RowDefinition Height="28"/>
<RowDefinition Height="200"/> <RowDefinition Height="200"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textAnySanitaryMeasures}" Name="labelSanitaryMeasuresApplied" Margin="0,0,10,0"/> <CheckBox Name="checkBoxSanitaryMeasuresApplied" IsChecked="{Binding SanitaryMeasuresApplied}" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="6,0,0,0 "/>
<CheckBox Name="checkBoxSanitaryMeasuresApplied" IsChecked="{Binding SanitaryMeasuresApplied}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/> <Label HorizontalContentAlignment="Left" Grid.Row="0" Grid.Column="1" Content="{x:Static p:Resources.textAnySanitaryMeasures}" Name="labelSanitaryMeasuresApplied" Margin="0,0,10,0"/>
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridSanitaryMeasures" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" <enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridSanitaryMeasures" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0"> SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0">
<DataGrid.Columns> <DataGrid.Columns>

View File

@ -57,7 +57,7 @@ namespace ENI2.DetailViewControls
this.checkBoxHasShipVisited.Checked += CheckBoxHasShipVisited_Checked; this.checkBoxHasShipVisited.Checked += CheckBoxHasShipVisited_Checked;
this.checkBoxHasShipVisited.Unchecked += CheckBoxHasShipVisited_Checked; this.checkBoxHasShipVisited.Unchecked += CheckBoxHasShipVisited_Checked;
this.CheckBoxHasShipVisited_Checked(null, null); this.CheckBoxHasShipVisited_Checked(null, null);
this.checkBoxHavePersonsDied.Checked += CheckBoxHavePersonsDied_Checked; this.checkBoxHavePersonsDied.Checked += CheckBoxHavePersonsDied_Checked;
this.checkBoxHavePersonsDied.Unchecked += CheckBoxHavePersonsDied_Checked; this.checkBoxHavePersonsDied.Unchecked += CheckBoxHavePersonsDied_Checked;
@ -90,6 +90,7 @@ namespace ENI2.DetailViewControls
this.dataGridInfectedAreas.Initialize(); this.dataGridInfectedAreas.Initialize();
this.dataGridInfectedAreas.IsReadOnly = !(mdh.InfectedAreaVisited ?? false); this.dataGridInfectedAreas.IsReadOnly = !(mdh.InfectedAreaVisited ?? false);
this.dataGridInfectedAreas.ItemsSource = mdh.InfectedAreas; this.dataGridInfectedAreas.ItemsSource = mdh.InfectedAreas;
this.dataGridInfectedAreas.AddingNewItem += DataGridInfectedAreas_AddingNewItem; this.dataGridInfectedAreas.AddingNewItem += DataGridInfectedAreas_AddingNewItem;
this.dataGridInfectedAreas.EditRequested += DataGridInfectedAreas_EditRequested; this.dataGridInfectedAreas.EditRequested += DataGridInfectedAreas_EditRequested;
@ -98,6 +99,9 @@ namespace ENI2.DetailViewControls
this.dataGridSanitaryMeasures.Initialize(); this.dataGridSanitaryMeasures.Initialize();
this.dataGridSanitaryMeasures.IsReadOnly = !(mdh.SanitaryMeasuresApplied ?? false); this.dataGridSanitaryMeasures.IsReadOnly = !(mdh.SanitaryMeasuresApplied ?? false);
this.checkBoxHasShipVisited.DataContext = mdh;
this.checkBoxSanitaryMeasuresApplied.DataContext = mdh;
this.checkBoxSanitaryMeasuresApplied.Checked += CheckBoxSanitaryMeasuresApplied_Checked; this.checkBoxSanitaryMeasuresApplied.Checked += CheckBoxSanitaryMeasuresApplied_Checked;
this.checkBoxSanitaryMeasuresApplied.Unchecked += CheckBoxSanitaryMeasuresApplied_Checked; this.checkBoxSanitaryMeasuresApplied.Unchecked += CheckBoxSanitaryMeasuresApplied_Checked;
this.dataGridSanitaryMeasures.ItemsSource = mdh.SanitaryMeasuresDetails; this.dataGridSanitaryMeasures.ItemsSource = mdh.SanitaryMeasuresDetails;
@ -111,12 +115,7 @@ namespace ENI2.DetailViewControls
#endregion #endregion
} }
private void CheckBoxHasShipVisited_Checked1(object sender, RoutedEventArgs e)
{
throw new System.NotImplementedException();
}
private void CheckBoxSanitaryControlExemption_Checked(object sender, RoutedEventArgs e) private void CheckBoxSanitaryControlExemption_Checked(object sender, RoutedEventArgs e)
{ {
@ -214,6 +213,7 @@ namespace ENI2.DetailViewControls
private void DataGridSanitaryMeasures_CreateRequested() private void DataGridSanitaryMeasures_CreateRequested()
{ {
SanitaryMeasuresDetail smDetail = new SanitaryMeasuresDetail(); SanitaryMeasuresDetail smDetail = new SanitaryMeasuresDetail();
smDetail.Identifier = SanitaryMeasuresDetail.GetNewIdentifier(_mdh.SanitaryMeasuresDetails);
EditSanitaryMeasureDialog epd = new EditSanitaryMeasureDialog(); EditSanitaryMeasureDialog epd = new EditSanitaryMeasureDialog();
epd.SanitaryMeasureDetail = smDetail; epd.SanitaryMeasureDetail = smDetail;
@ -224,6 +224,7 @@ namespace ENI2.DetailViewControls
this._mdh.SanitaryMeasuresDetails.Add(epd.SanitaryMeasureDetail); this._mdh.SanitaryMeasuresDetails.Add(epd.SanitaryMeasureDetail);
this.dataGridSanitaryMeasures.Items.Refresh(); this.dataGridSanitaryMeasures.Items.Refresh();
epd.SanitaryMeasureDetail = new SanitaryMeasuresDetail(); epd.SanitaryMeasureDetail = new SanitaryMeasuresDetail();
epd.SanitaryMeasureDetail.Identifier = SanitaryMeasuresDetail.GetNewIdentifier(_mdh.SanitaryMeasuresDetails);
this.SublistElementChanged(Message.NotificationClass.MDH); this.SublistElementChanged(Message.NotificationClass.MDH);
}; };
@ -244,6 +245,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_mdh.SanitaryMeasuresDetails.Remove(smd); _mdh.SanitaryMeasuresDetails.Remove(smd);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(smd); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(smd);
DatabaseEntity.ResetIdentifiers(_mdh.SanitaryMeasuresDetails);
this.SublistElementChanged(Message.NotificationClass.MDH);
this.dataGridSanitaryMeasures.Items.Refresh(); this.dataGridSanitaryMeasures.Items.Refresh();
} }
} }
@ -259,6 +262,7 @@ namespace ENI2.DetailViewControls
_mdh.SanitaryMeasuresDetails.Add(ecpd.SanitaryMeasureDetail); _mdh.SanitaryMeasuresDetails.Add(ecpd.SanitaryMeasureDetail);
this.dataGridSanitaryMeasures.Items.Refresh(); this.dataGridSanitaryMeasures.Items.Refresh();
ecpd.SanitaryMeasureDetail = new SanitaryMeasuresDetail(); ecpd.SanitaryMeasureDetail = new SanitaryMeasuresDetail();
ecpd.SanitaryMeasureDetail.Identifier = SanitaryMeasuresDetail.GetNewIdentifier(_mdh.SanitaryMeasuresDetails);
}; };
if (ecpd.ShowDialog() ?? false) if (ecpd.ShowDialog() ?? false)
{ {
@ -282,6 +286,7 @@ namespace ENI2.DetailViewControls
private void DataGridInfectedAreas_CreateRequested() private void DataGridInfectedAreas_CreateRequested()
{ {
InfectedArea ia = new InfectedArea(); InfectedArea ia = new InfectedArea();
ia.Identifier = InfectedArea.GetNewIdentifier(_mdh.InfectedAreas);
EditInfectedAreaDialog epd = new EditInfectedAreaDialog(); EditInfectedAreaDialog epd = new EditInfectedAreaDialog();
epd.InfectedArea = ia; epd.InfectedArea = ia;
@ -292,6 +297,7 @@ namespace ENI2.DetailViewControls
this._mdh.InfectedAreas.Add(epd.InfectedArea); this._mdh.InfectedAreas.Add(epd.InfectedArea);
this.dataGridInfectedAreas.Items.Refresh(); this.dataGridInfectedAreas.Items.Refresh();
epd.InfectedArea = new InfectedArea(); epd.InfectedArea = new InfectedArea();
epd.InfectedArea.Identifier = InfectedArea.GetNewIdentifier(_mdh.InfectedAreas);
this.SublistElementChanged(Message.NotificationClass.MDH); this.SublistElementChanged(Message.NotificationClass.MDH);
}; };
@ -312,6 +318,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_mdh.InfectedAreas.Remove(ia); _mdh.InfectedAreas.Remove(ia);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ia); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ia);
DatabaseEntity.ResetIdentifiers(_mdh.InfectedAreas);
this.SublistElementChanged(Message.NotificationClass.MDH);
this.dataGridInfectedAreas.Items.Refresh(); this.dataGridInfectedAreas.Items.Refresh();
} }
} }
@ -327,6 +335,7 @@ namespace ENI2.DetailViewControls
_mdh.InfectedAreas.Add(ecpd.InfectedArea); _mdh.InfectedAreas.Add(ecpd.InfectedArea);
this.dataGridInfectedAreas.Items.Refresh(); this.dataGridInfectedAreas.Items.Refresh();
ecpd.InfectedArea= new InfectedArea(); ecpd.InfectedArea= new InfectedArea();
ecpd.InfectedArea.Identifier = InfectedArea.GetNewIdentifier(_mdh.InfectedAreas);
}; };
if (ecpd.ShowDialog() ?? false) if (ecpd.ShowDialog() ?? false)
{ {
@ -350,6 +359,7 @@ namespace ENI2.DetailViewControls
private void DataGridPortOfCallLast30Days_CreateRequested() private void DataGridPortOfCallLast30Days_CreateRequested()
{ {
PortOfCallLast30Days poc30 = new PortOfCallLast30Days(); PortOfCallLast30Days poc30 = new PortOfCallLast30Days();
poc30.Identifier = PortOfCallLast30Days.GetNewIdentifier(_mdh.PortOfCallLast30Days);
EditPortOfCallLast30DaysDialog epd = new EditPortOfCallLast30DaysDialog(); EditPortOfCallLast30DaysDialog epd = new EditPortOfCallLast30DaysDialog();
epd.PocLast30Days = poc30; epd.PocLast30Days = poc30;
@ -360,6 +370,7 @@ namespace ENI2.DetailViewControls
this._mdh.PortOfCallLast30Days.Add(epd.PocLast30Days); this._mdh.PortOfCallLast30Days.Add(epd.PocLast30Days);
this.dataGridPortOfCallLast30Days.Items.Refresh(); this.dataGridPortOfCallLast30Days.Items.Refresh();
epd.PocLast30Days = new PortOfCallLast30Days(); epd.PocLast30Days = new PortOfCallLast30Days();
epd.PocLast30Days.Identifier = PortOfCallLast30Days.GetNewIdentifier(_mdh.PortOfCallLast30Days);
this.SublistElementChanged(Message.NotificationClass.MDH); this.SublistElementChanged(Message.NotificationClass.MDH);
}; };
@ -380,6 +391,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_mdh.PortOfCallLast30Days.Remove(poc30d); _mdh.PortOfCallLast30Days.Remove(poc30d);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(poc30d); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(poc30d);
DatabaseEntity.ResetIdentifiers(_mdh.PortOfCallLast30Days);
this.SublistElementChanged(Message.NotificationClass.MDH);
this.dataGridPortOfCallLast30Days.Items.Refresh(); this.dataGridPortOfCallLast30Days.Items.Refresh();
} }
} }
@ -395,6 +408,7 @@ namespace ENI2.DetailViewControls
_mdh.PortOfCallLast30Days.Add(ecpd.PocLast30Days); _mdh.PortOfCallLast30Days.Add(ecpd.PocLast30Days);
this.dataGridPortOfCallLast30Days.Items.Refresh(); this.dataGridPortOfCallLast30Days.Items.Refresh();
ecpd.PocLast30Days = new PortOfCallLast30Days(); ecpd.PocLast30Days = new PortOfCallLast30Days();
ecpd.PocLast30Days.Identifier = PortOfCallLast30Days.GetNewIdentifier(_mdh.PortOfCallLast30Days);
}; };
if (ecpd.ShowDialog() ?? false) if (ecpd.ShowDialog() ?? false)
{ {

View File

@ -74,7 +74,7 @@ namespace ENI2.DetailViewControls
vtBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; vtBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(textBoxDisplayId, TextBox.TextProperty, vtBinding); BindingOperations.SetBinding(textBoxDisplayId, TextBox.TextProperty, vtBinding);
if (this.Core.Cancelled ?? false) this.ShowCancelledLabel(); if (this.Core.Cancelled ?? false) this.ShowCancelledLabel();
#region Meldeklassen einrichten und Icons / Gruppen / Index zuordnen #region Meldeklassen einrichten und Icons / Gruppen / Index zuordnen
@ -196,6 +196,7 @@ namespace ENI2.DetailViewControls
{ {
// kann das eigentlich passieren??! // kann das eigentlich passieren??!
} }
#region Context-Menu Meldeklassen #region Context-Menu Meldeklassen
@ -334,7 +335,7 @@ namespace ENI2.DetailViewControls
{ {
this.stackPanelLock.Visibility = Visibility.Visible; this.stackPanelLock.Visibility = Visibility.Visible;
this.textBlockLockUserName.Text = reportingParty.FirstName + " " + reportingParty.LastName; this.textBlockLockUserName.Text = reportingParty.FirstName + " " + reportingParty.LastName;
} }
#endregion #endregion
@ -387,8 +388,7 @@ namespace ENI2.DetailViewControls
#region Command button event handler #region Command button event handler
private void contextSendMessage(object sender, RoutedEventArgs e) private void contextSendMessage(object sender, RoutedEventArgs e)
{ {
//MessageBox.Show("not yet..");
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question); MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes) if (result == MessageBoxResult.Yes)
{ {
@ -401,6 +401,8 @@ namespace ENI2.DetailViewControls
// komplette Anmeldung auf "zu versenden" stellen // komplette Anmeldung auf "zu versenden" stellen
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND; this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
this.Core.DefaultReportingPartyId = App.UserId;
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core);
this.dataGridMessages.Items.Refresh(); this.dataGridMessages.Items.Refresh();
} }
@ -421,6 +423,8 @@ namespace ENI2.DetailViewControls
// komplette Anmeldung auf "zu versenden" stellen // komplette Anmeldung auf "zu versenden" stellen
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND; this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
this.Core.DefaultReportingPartyId = App.UserId;
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core);
this.dataGridMessages.Items.Refresh(); this.dataGridMessages.Items.Refresh();
} }
@ -439,8 +443,11 @@ namespace ENI2.DetailViewControls
{ {
this.Core.Cancelled = true; this.Core.Cancelled = true;
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND; this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
this.Core.DefaultReportingPartyId = App.UserId;
this.ShowCancelledLabel(); this.ShowCancelledLabel();
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core);
this.OnRequestDisable();
} }
} }
} }

View File

@ -102,7 +102,9 @@ namespace ENI2.DetailViewControls
this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod; this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod;
this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK; this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK;
} }
#region datagrid call purposes
private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj) private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj)
{ {
@ -112,6 +114,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_noa_nod.CallPurposes.Remove(cp); _noa_nod.CallPurposes.Remove(cp);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(cp); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(cp);
DatabaseEntity.ResetIdentifiers(_noa_nod.CallPurposes);
this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
this.dataGridCallPurposes.Items.Refresh(); this.dataGridCallPurposes.Items.Refresh();
} }
} }
@ -126,10 +130,12 @@ namespace ENI2.DetailViewControls
_noa_nod.CallPurposes.Add(ecpd.CallPurpose); _noa_nod.CallPurposes.Add(ecpd.CallPurpose);
this.dataGridCallPurposes.Items.Refresh(); this.dataGridCallPurposes.Items.Refresh();
ecpd.CallPurpose = new CallPurpose(); ecpd.CallPurpose = new CallPurpose();
ecpd.CallPurpose.Identifier = CallPurpose.GetNewIdentifier(_noa_nod.CallPurposes);
ecpd.CallPurpose.NOA_NOD = this._noa_nod; ecpd.CallPurpose.NOA_NOD = this._noa_nod;
this.SublistElementChanged(Message.NotificationClass.NOA_NOD); this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
}; };
ecpd.CallPurpose = new CallPurpose(); ecpd.CallPurpose = new CallPurpose();
ecpd.CallPurpose.Identifier = CallPurpose.GetNewIdentifier(_noa_nod.CallPurposes);
ecpd.CallPurpose.NOA_NOD = this._noa_nod; ecpd.CallPurpose.NOA_NOD = this._noa_nod;
if(ecpd.ShowDialog() ?? false) if(ecpd.ShowDialog() ?? false)
@ -158,6 +164,7 @@ namespace ENI2.DetailViewControls
_noa_nod.CallPurposes.Add(ecpd.CallPurpose); _noa_nod.CallPurposes.Add(ecpd.CallPurpose);
this.dataGridCallPurposes.Items.Refresh(); this.dataGridCallPurposes.Items.Refresh();
ecpd.CallPurpose = new CallPurpose(); ecpd.CallPurpose = new CallPurpose();
ecpd.CallPurpose.Identifier = CallPurpose.GetNewIdentifier(_noa_nod.CallPurposes);
ecpd.CallPurpose.NOA_NOD = this._noa_nod; ecpd.CallPurpose.NOA_NOD = this._noa_nod;
this.SublistElementChanged(Message.NotificationClass.NOA_NOD); this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
}; };
@ -171,6 +178,8 @@ namespace ENI2.DetailViewControls
} }
} }
#endregion
#region Highlighting #region Highlighting
public override void HighlightErrorMessageContainer() public override void HighlightErrorMessageContainer()

View File

@ -149,12 +149,15 @@ namespace ENI2.DetailViewControls
#endregion #endregion
} }
#region datagrid LADG
private void DataGridLADG_CreateRequested() private void DataGridLADG_CreateRequested()
{ {
EditLADGDialog eld = new EditLADGDialog(); EditLADGDialog eld = new EditLADGDialog();
eld.LADG = new LADG(); eld.LADG = new LADG();
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
eld.Core = this.Core; eld.Core = this.Core;
eld.AddClicked += () => eld.AddClicked += () =>
@ -164,6 +167,7 @@ namespace ENI2.DetailViewControls
eld.LADG.MessageHeader = _ladgMessage; eld.LADG.MessageHeader = _ladgMessage;
this.dataGridLADG.Items.Refresh(); this.dataGridLADG.Items.Refresh();
eld.LADG = new LADG(); eld.LADG = new LADG();
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.LADG); this.SublistElementChanged(Message.NotificationClass.LADG);
}; };
@ -184,6 +188,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
this._ladgMessage.Elements.Remove(ladg); this._ladgMessage.Elements.Remove(ladg);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ladg); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ladg);
DatabaseEntity.ResetIdentifiers(_ladgMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.LADG);
this.dataGridLADG.Items.Refresh(); this.dataGridLADG.Items.Refresh();
} }
} }
@ -201,6 +207,7 @@ namespace ENI2.DetailViewControls
{ {
eld.CopyValuesToEntity(); eld.CopyValuesToEntity();
eld.LADG = new LADG(); eld.LADG = new LADG();
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
_ladgMessage.Elements.Add(eld.LADG); _ladgMessage.Elements.Add(eld.LADG);
eld.LADG.MessageHeader = _ladgMessage; eld.LADG.MessageHeader = _ladgMessage;
this.SublistElementChanged(Message.NotificationClass.LADG); this.SublistElementChanged(Message.NotificationClass.LADG);
@ -219,10 +226,15 @@ namespace ENI2.DetailViewControls
this.DataGridLADG_CreateRequested(); this.DataGridLADG_CreateRequested();
} }
#endregion
#region datagrid SERV
private void DataGridSERV_CreateRequested() private void DataGridSERV_CreateRequested()
{ {
EditSERVDialog esd = new EditSERVDialog(); EditSERVDialog esd = new EditSERVDialog();
esd.SERV = new SERV(); esd.SERV = new SERV();
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
esd.AddClicked += () => esd.AddClicked += () =>
{ {
@ -231,6 +243,7 @@ namespace ENI2.DetailViewControls
esd.SERV.MessageHeader = _servMessage; esd.SERV.MessageHeader = _servMessage;
this.dataGridSERV.Items.Refresh(); this.dataGridSERV.Items.Refresh();
esd.SERV = new SERV(); esd.SERV = new SERV();
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.SERV); this.SublistElementChanged(Message.NotificationClass.SERV);
}; };
@ -251,6 +264,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_servMessage.Elements.Remove(serv); _servMessage.Elements.Remove(serv);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(serv); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(serv);
DatabaseEntity.ResetIdentifiers(_servMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.SERV);
this.dataGridSERV.Items.Refresh(); this.dataGridSERV.Items.Refresh();
} }
} }
@ -267,6 +282,7 @@ namespace ENI2.DetailViewControls
{ {
esd.CopyValuesToEntity(); esd.CopyValuesToEntity();
esd.SERV = new SERV(); esd.SERV = new SERV();
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
_servMessage.Elements.Add(esd.SERV); _servMessage.Elements.Add(esd.SERV);
esd.SERV.MessageHeader = _servMessage; esd.SERV.MessageHeader = _servMessage;
this.SublistElementChanged(Message.NotificationClass.SERV); this.SublistElementChanged(Message.NotificationClass.SERV);
@ -285,6 +301,8 @@ namespace ENI2.DetailViewControls
this.DataGridSERV_CreateRequested(); this.DataGridSERV_CreateRequested();
} }
#endregion
#region Highlighting #region Highlighting
public override void HighlightErrorMessageContainer() public override void HighlightErrorMessageContainer()

View File

@ -68,8 +68,8 @@
<Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="2" Content="{x:Static p:Resources.textGeneralCargoDescription}" Name="label_GeneralCargoDescription" Margin="0,0,10,0"/> <Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="2" Content="{x:Static p:Resources.textGeneralCargoDescription}" Name="label_GeneralCargoDescription" Margin="0,0,10,0"/>
<CheckBox Name="checkBoxKielCanalPassagePlanned" IsChecked="{Binding KielCanalPassagePlanned}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/> <CheckBox Name="checkBoxKielCanalPassagePlanned" IsChecked="{Binding KielCanalPassagePlanned}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedIncomming" Grid.Row="1" Grid.Column="1" Value="{Binding KielCanalPassagePlannedIncomming}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left"/> <xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedIncomming" Grid.Row="1" Grid.Column="1" Value="{Binding KielCanalPassagePlannedIncomming, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left"/>
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedOutgoing" Grid.Row="1" Grid.Column="3" Value="{Binding KielCanalPassagePlannedOutgoing}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left"/> <xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedOutgoing" Grid.Row="1" Grid.Column="3" Value="{Binding KielCanalPassagePlannedOutgoing, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left"/>
<ComboBox Name="comboBoxCurrentShipSecurityLevel" Grid.Row="3" Grid.Column="1" SelectedValue="{Binding CurrentShipSecurityLevel}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" /> <ComboBox Name="comboBoxCurrentShipSecurityLevel" Grid.Row="3" Grid.Column="1" SelectedValue="{Binding CurrentShipSecurityLevel}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
<CheckBox Name="checkBoxSECSimplification" IsChecked="{Binding SECSimplification}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/> <CheckBox Name="checkBoxSECSimplification" IsChecked="{Binding SECSimplification}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
<enictrl:LocodeControl x:Name="locodePortOfCallWhereCompleteSECNotified" Grid.Row="6" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteSECNotified}" /> <enictrl:LocodeControl x:Name="locodePortOfCallWhereCompleteSECNotified" Grid.Row="6" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteSECNotified}" />

View File

@ -102,6 +102,7 @@ namespace ENI2.DetailViewControls
private void DataGridShip2ShipActivities_CreateRequested() private void DataGridShip2ShipActivities_CreateRequested()
{ {
ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
s2s.Identifier = ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.GetNewIdentifier(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled);
EditShip2ShipActivitiesDialog epd = new EditShip2ShipActivitiesDialog(); EditShip2ShipActivitiesDialog epd = new EditShip2ShipActivitiesDialog();
epd.ShipToShipActivity = s2s; epd.ShipToShipActivity = s2s;
@ -112,6 +113,7 @@ namespace ENI2.DetailViewControls
this._sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(epd.ShipToShipActivity); this._sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(epd.ShipToShipActivity);
this.dataGridShip2ShipActivities.Items.Refresh(); this.dataGridShip2ShipActivities.Items.Refresh();
epd.ShipToShipActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); epd.ShipToShipActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
epd.ShipToShipActivity.Identifier = ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.GetNewIdentifier(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled);
this.SublistElementChanged(Message.NotificationClass.SEC); this.SublistElementChanged(Message.NotificationClass.SEC);
}; };
@ -132,6 +134,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2s); _sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2s);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(s2s); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(s2s);
DatabaseEntity.ResetIdentifiers(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled);
this.SublistElementChanged(Message.NotificationClass.SEC);
this.dataGridShip2ShipActivities.Items.Refresh(); this.dataGridShip2ShipActivities.Items.Refresh();
} }
} }
@ -147,6 +151,7 @@ namespace ENI2.DetailViewControls
_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(ecpd.ShipToShipActivity); _sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(ecpd.ShipToShipActivity);
this.dataGridShip2ShipActivities.Items.Refresh(); this.dataGridShip2ShipActivities.Items.Refresh();
ecpd.ShipToShipActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); ecpd.ShipToShipActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
ecpd.ShipToShipActivity.Identifier = ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.GetNewIdentifier(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled);
}; };
if (ecpd.ShowDialog() ?? false) if (ecpd.ShowDialog() ?? false)
{ {
@ -170,6 +175,7 @@ namespace ENI2.DetailViewControls
private void DataGridLast10PortFacilities_CreateRequested() private void DataGridLast10PortFacilities_CreateRequested()
{ {
LastTenPortFacilitiesCalled l10c = new LastTenPortFacilitiesCalled(); LastTenPortFacilitiesCalled l10c = new LastTenPortFacilitiesCalled();
l10c.Identifier = LastTenPortFacilitiesCalled.GetNewIdentifier(_sec.LastTenPortFacilitesCalled);
EditLast10PortFacilitiesDialog epd = new EditLast10PortFacilitiesDialog(); EditLast10PortFacilitiesDialog epd = new EditLast10PortFacilitiesDialog();
epd.LastTenPortFacilitiesCalled = l10c; epd.LastTenPortFacilitiesCalled = l10c;
@ -180,6 +186,7 @@ namespace ENI2.DetailViewControls
this._sec.LastTenPortFacilitesCalled.Add(epd.LastTenPortFacilitiesCalled); this._sec.LastTenPortFacilitesCalled.Add(epd.LastTenPortFacilitiesCalled);
this.dataGridLast10PortFacilities.Items.Refresh(); this.dataGridLast10PortFacilities.Items.Refresh();
epd.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled(); epd.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled();
epd.LastTenPortFacilitiesCalled.Identifier = LastTenPortFacilitiesCalled.GetNewIdentifier(_sec.LastTenPortFacilitesCalled);
this.SublistElementChanged(Message.NotificationClass.SEC); this.SublistElementChanged(Message.NotificationClass.SEC);
}; };
@ -200,6 +207,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_sec.LastTenPortFacilitesCalled.Remove(l10c); _sec.LastTenPortFacilitesCalled.Remove(l10c);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(l10c); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(l10c);
DatabaseEntity.ResetIdentifiers(_sec.LastTenPortFacilitesCalled);
this.SublistElementChanged(Message.NotificationClass.SEC);
this.dataGridLast10PortFacilities.Items.Refresh(); this.dataGridLast10PortFacilities.Items.Refresh();
} }
} }
@ -215,6 +224,7 @@ namespace ENI2.DetailViewControls
_sec.LastTenPortFacilitesCalled.Add(ecpd.LastTenPortFacilitiesCalled); _sec.LastTenPortFacilitesCalled.Add(ecpd.LastTenPortFacilitiesCalled);
this.dataGridLast10PortFacilities.Items.Refresh(); this.dataGridLast10PortFacilities.Items.Refresh();
ecpd.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled(); ecpd.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled();
ecpd.LastTenPortFacilitiesCalled.Identifier = LastTenPortFacilitiesCalled.GetNewIdentifier(_sec.LastTenPortFacilitesCalled);
}; };
if (ecpd.ShowDialog() ?? false) if (ecpd.ShowDialog() ?? false)
{ {

View File

@ -48,21 +48,21 @@
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="3" Content="{x:Static p:Resources.textBeamOverAll}" Margin="0,0,10,0" /> <Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="3" Content="{x:Static p:Resources.textBeamOverAll}" Margin="0,0,10,0" />
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="3" Content="{x:Static p:Resources.textInmarsatCallNumber}" Margin="0,0,10,0" /> <Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="3" Content="{x:Static p:Resources.textInmarsatCallNumber}" Margin="0,0,10,0" />
<TextBox Name="textBoxVesselName" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ShipName}" Margin="2" VerticalAlignment="Center" VerticalContentAlignment="Center"/> <TextBox Name="textBoxVesselName" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ShipName}" Margin="2" VerticalContentAlignment="Center"/>
<ComboBox Name="comboBoxVesselType" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" SelectedValue="{Binding ShipType}" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" /> <ComboBox Name="comboBoxVesselType" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" SelectedValue="{Binding ShipType}" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
<TextBox Name="textBoxCallsign" Grid.Column="4" Grid.Row="1" Text="{Binding CallSign}" Margin="2" VerticalAlignment="Center" VerticalContentAlignment="Center"/> <TextBox Name="textBoxCallsign" Grid.Column="4" Grid.Row="1" Text="{Binding CallSign}" Margin="2" VerticalContentAlignment="Center"/>
<ComboBox Name="comboBoxTransportMode" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Margin="2" SelectedValue="{Binding TransportMode}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" /> <ComboBox Name="comboBoxTransportMode" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Margin="2" SelectedValue="{Binding TransportMode}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
<ComboBox Name="comboBoxFlag" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Margin="2" SelectedValue="{Binding Flag}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" /> <ComboBox Name="comboBoxFlag" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Margin="2" SelectedValue="{Binding Flag}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
<enictrl:LocodeControl x:Name="locodePortOfRegistry" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" LocodeValue="{Binding PortOfRegistry}" /> <enictrl:LocodeControl x:Name="locodePortOfRegistry" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" LocodeValue="{Binding PortOfRegistry}" />
<xctk:IntegerUpDown Name="integerUpDownGrossTonnage" Grid.Column="1" Grid.Row="4" Margin="2" Value="{Binding GrossTonnage}" ShowButtonSpinner="False" TextAlignment="Left"/> <xctk:IntegerUpDown Name="integerUpDownGrossTonnage" Grid.Column="1" Grid.Row="4" Margin="2" Value="{Binding GrossTonnage}" ShowButtonSpinner="False" TextAlignment="Left"/>
<Label Content="t" Grid.Column="2" Grid.Row="4" /> <Label Content="t" Grid.Column="2" Grid.Row="4" />
<xctk:DoubleUpDown Name="doubleUpDownLength" Grid.Column="1" Grid.Row="5" Margin="2" Value="{Binding LengthOverall_MTR}" ShowButtonSpinner="False" TextAlignment="Left"/> <xctk:DoubleUpDown Name="doubleUpDownLength" Grid.Column="1" Grid.Row="5" Margin="2" Value="{Binding LengthOverall_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
<Label Content="m" Grid.Column="2" Grid.Row="5" /> <Label Content="m" Grid.Column="2" Grid.Row="5" />
<xctk:DoubleUpDown Name="doubleUpDownBeam" Grid.Column="4" Grid.Row="5" Margin="2" Value="{Binding Beam_MTR}" ShowButtonSpinner="False" TextAlignment="Left" /> <xctk:DoubleUpDown Name="doubleUpDownBeam" Grid.Column="4" Grid.Row="5" Margin="2" Value="{Binding Beam_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
<Label Content="m" Grid.Column="5" Grid.Row="5" /> <Label Content="m" Grid.Column="5" Grid.Row="5" />
<TextBox Name="textBoxMMSI" Grid.Column="1" Grid.Row="6" Margin="2" Text="{Binding MMSINumber}" VerticalAlignment="Center" VerticalContentAlignment="Center"/> <TextBox Name="textBoxMMSI" Grid.Column="1" Grid.Row="6" Margin="2" Text="{Binding MMSINumber}" VerticalContentAlignment="Center"/>
<TextBox Name="textBoxInmarsatCallNumber" Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="6" VerticalAlignment="Center" Margin="2" Text="{Binding InmarsatCallNumber}" VerticalContentAlignment="Center" /> <TextBox Name="textBoxInmarsatCallNumber" Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="6" Margin="2" Text="{Binding InmarsatCallNumber}" VerticalContentAlignment="Center" />
</Grid> </Grid>
<GroupBox Name="groupBoxISMCompany" Header="{x:Static p:Resources.textISMCompany}" Grid.Row="1"> <GroupBox Name="groupBoxISMCompany" Header="{x:Static p:Resources.textISMCompany}" Grid.Row="1">
@ -89,12 +89,12 @@
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="3" Content="{x:Static p:Resources.textCompanyId}" Margin="0,0,10,0" /> <Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="3" Content="{x:Static p:Resources.textCompanyId}" Margin="0,0,10,0" />
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textCity}" Margin="0,0,10,0" /> <Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textCity}" Margin="0,0,10,0" />
<TextBox VerticalAlignment="Center" Name="textBoxCompanyName" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyName}" MaxLength="100" VerticalContentAlignment="Center"/> <TextBox Name="textBoxCompanyName" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyName}" MaxLength="100" VerticalContentAlignment="Center"/>
<TextBox VerticalAlignment="Center" Name="textBoxCompanyId" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyId}" MaxLength="100" VerticalContentAlignment="Center"/> <TextBox Name="textBoxCompanyId" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyId}" MaxLength="100" VerticalContentAlignment="Center"/>
<TextBox VerticalAlignment="Center" Name="textBoxStreetNumber" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyStreetAndNumber}" MaxLength="100" VerticalContentAlignment="Center"/> <TextBox Name="textBoxStreetNumber" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyStreetAndNumber}" MaxLength="100" VerticalContentAlignment="Center"/>
<TextBox VerticalAlignment="Center" Name="textBoxCity" Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCity}" MaxLength="100" VerticalContentAlignment="Center"/> <TextBox Name="textBoxCity" Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCity}" MaxLength="100" VerticalContentAlignment="Center"/>
<TextBox VerticalAlignment="Center" Name="textBoxPostalCode" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="1" Margin="2" Text="{Binding ISMCompanyPostalCode}" MaxLength="24" VerticalContentAlignment="Center"/> <TextBox Name="textBoxPostalCode" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="1" Margin="2" Text="{Binding ISMCompanyPostalCode}" MaxLength="24" VerticalContentAlignment="Center"/>
<TextBox VerticalAlignment="Center" Name="textBoxCountry" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCountry}" MaxLength="100" VerticalContentAlignment="Center"/> <TextBox Name="textBoxCountry" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCountry}" MaxLength="100" VerticalContentAlignment="Center"/>
</Grid> </Grid>
</GroupBox> </GroupBox>

View File

@ -29,7 +29,6 @@
<DataGridTextColumn Header="{x:Static p:Resources.textBeamOverAll}" Binding="{Binding TowageOnArrivalBeam_MTR}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textBeamOverAll}" Binding="{Binding TowageOnArrivalBeam_MTR}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding TowageOnArrivalRemarks}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textRemarks}" Binding="{Binding TowageOnArrivalRemarks}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textCompanyName}" Binding="{Binding TowageOnArrivalOperatorCompanyName}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textCompanyName}" Binding="{Binding TowageOnArrivalOperatorCompanyName}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPurposeOfCall}" Binding="{Binding TowageOnArrivalPurposeOfCall}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textStreetNumber}" Binding="{Binding TowageOnArrivalOperatorStreetNameAndNumber}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textStreetNumber}" Binding="{Binding TowageOnArrivalOperatorStreetNameAndNumber}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textPostalCode}" Binding="{Binding TowageOnArrivalOperatorPostalCode}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textPostalCode}" Binding="{Binding TowageOnArrivalOperatorPostalCode}" IsReadOnly="True" Width="Auto" />
<DataGridTextColumn Header="{x:Static p:Resources.textCity}" Binding="{Binding TowageOnArrivalOperatorCity}" IsReadOnly="True" Width="Auto" /> <DataGridTextColumn Header="{x:Static p:Resources.textCity}" Binding="{Binding TowageOnArrivalOperatorCity}" IsReadOnly="True" Width="Auto" />

View File

@ -21,6 +21,7 @@ namespace ENI2.DetailViewControls
private Message _towaMessage; private Message _towaMessage;
private Message _towdMessage; private Message _towdMessage;
private bool _ctxInitialized = false;
public TowageDetailControl() public TowageDetailControl()
{ {
@ -30,12 +31,16 @@ namespace ENI2.DetailViewControls
private void TowageDetailControl_Loaded(object sender, RoutedEventArgs e) private void TowageDetailControl_Loaded(object sender, RoutedEventArgs e)
{ {
this.dataGridTowageOnArrival.ContextMenu.Items.Add(new Separator()); if (!_ctxInitialized)
MenuItem copyItem = new MenuItem(); {
copyItem.Header = Properties.Resources.textCopyTOWATOWD; this.dataGridTowageOnArrival.ContextMenu.Items.Add(new Separator());
copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; MenuItem copyItem = new MenuItem();
copyItem.Click += new RoutedEventHandler(this.copyItem); copyItem.Header = Properties.Resources.textCopyTOWATOWD;
this.dataGridTowageOnArrival.ContextMenu.Items.Add(copyItem); copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
copyItem.Click += new RoutedEventHandler(this.copyItem);
this.dataGridTowageOnArrival.ContextMenu.Items.Add(copyItem);
_ctxInitialized = true;
}
} }
private void copyItem(object sender, RoutedEventArgs e) private void copyItem(object sender, RoutedEventArgs e)
@ -49,6 +54,7 @@ namespace ENI2.DetailViewControls
TOWD copyTOWD = new TOWD(); TOWD copyTOWD = new TOWD();
copyTOWD.MessageHeader = _towdMessage; copyTOWD.MessageHeader = _towdMessage;
copyTOWD.CopyFromTOWA(selectedTOWA); copyTOWD.CopyFromTOWA(selectedTOWA);
copyTOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements);
this._towdMessage.Elements.Add(copyTOWD); this._towdMessage.Elements.Add(copyTOWD);
this.dataGridTowageOnDeparture.Items.Refresh(); this.dataGridTowageOnDeparture.Items.Refresh();
this.SublistElementChanged(Message.NotificationClass.TOWD); this.SublistElementChanged(Message.NotificationClass.TOWD);
@ -102,9 +108,12 @@ namespace ENI2.DetailViewControls
} }
#region TOWD grid
private void DataGridTowageOnDeparture_CreateRequested() private void DataGridTowageOnDeparture_CreateRequested()
{ {
TOWD towd = new TOWD(); TOWD towd = new TOWD();
towd.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements);
EditTOWDialog ebd = new EditTOWDialog(); EditTOWDialog ebd = new EditTOWDialog();
ebd.TOWD = towd; ebd.TOWD = towd;
ebd.IsDeparture = true; ebd.IsDeparture = true;
@ -116,6 +125,7 @@ namespace ENI2.DetailViewControls
ebd.TOWD.MessageHeader = _towdMessage; ebd.TOWD.MessageHeader = _towdMessage;
this.dataGridTowageOnDeparture.Items.Refresh(); this.dataGridTowageOnDeparture.Items.Refresh();
ebd.TOWD = new TOWD(); ebd.TOWD = new TOWD();
ebd.TOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.TOWD); this.SublistElementChanged(Message.NotificationClass.TOWD);
}; };
@ -137,6 +147,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
this._towdMessage.Elements.Remove(towd); this._towdMessage.Elements.Remove(towd);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towd); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towd);
DatabaseEntity.ResetIdentifiers(this._towdMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.TOWD);
this.dataGridTowageOnDeparture.Items.Refresh(); this.dataGridTowageOnDeparture.Items.Refresh();
} }
} }
@ -154,6 +166,7 @@ namespace ENI2.DetailViewControls
{ {
eld.CopyValuesToEntity(); eld.CopyValuesToEntity();
eld.TOWD = new TOWD(); eld.TOWD = new TOWD();
eld.TOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements);
_towdMessage.Elements.Add(eld.TOWD); _towdMessage.Elements.Add(eld.TOWD);
eld.TOWD.MessageHeader = _towdMessage; eld.TOWD.MessageHeader = _towdMessage;
this.SublistElementChanged(Message.NotificationClass.TOWD); this.SublistElementChanged(Message.NotificationClass.TOWD);
@ -173,11 +186,14 @@ namespace ENI2.DetailViewControls
this.DataGridTowageOnDeparture_CreateRequested(); this.DataGridTowageOnDeparture_CreateRequested();
} }
#endregion
#region TOWA grid
private void DataGridTowageOnArrival_CreateRequested() private void DataGridTowageOnArrival_CreateRequested()
{ {
TOWA towa = new TOWA(); TOWA towa = new TOWA();
towa.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements);
EditTOWDialog ebd = new EditTOWDialog(); EditTOWDialog ebd = new EditTOWDialog();
ebd.TOWA = towa; ebd.TOWA = towa;
ebd.IsDeparture = false; ebd.IsDeparture = false;
@ -189,6 +205,7 @@ namespace ENI2.DetailViewControls
ebd.TOWA.MessageHeader = _towaMessage; ebd.TOWA.MessageHeader = _towaMessage;
this.dataGridTowageOnArrival.Items.Refresh(); this.dataGridTowageOnArrival.Items.Refresh();
ebd.TOWA = new TOWA(); ebd.TOWA = new TOWA();
ebd.TOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.TOWA); this.SublistElementChanged(Message.NotificationClass.TOWA);
}; };
@ -210,6 +227,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
this._towaMessage.Elements.Remove(towa); this._towaMessage.Elements.Remove(towa);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towa); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towa);
DatabaseEntity.ResetIdentifiers(this._towaMessage.Elements);
this.SublistElementChanged(Message.NotificationClass.TOWA);
this.dataGridTowageOnArrival.Items.Refresh(); this.dataGridTowageOnArrival.Items.Refresh();
} }
} }
@ -227,6 +246,7 @@ namespace ENI2.DetailViewControls
{ {
eld.CopyValuesToEntity(); eld.CopyValuesToEntity();
eld.TOWA = new TOWA(); eld.TOWA = new TOWA();
eld.TOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements);
_towaMessage.Elements.Add(eld.TOWA); _towaMessage.Elements.Add(eld.TOWA);
eld.TOWA.MessageHeader = _towaMessage; eld.TOWA.MessageHeader = _towaMessage;
this.SublistElementChanged(Message.NotificationClass.TOWA); this.SublistElementChanged(Message.NotificationClass.TOWA);
@ -246,6 +266,8 @@ namespace ENI2.DetailViewControls
this.DataGridTowageOnArrival_CreateRequested(); this.DataGridTowageOnArrival_CreateRequested();
} }
#endregion
#region Highlighting #region Highlighting
public override void HighlightErrorMessageContainer() public override void HighlightErrorMessageContainer()

View File

@ -42,7 +42,7 @@
<CheckBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxAccurateCorrectDetails" IsChecked="{Binding ConfirmationOfCorrectness}" /> <CheckBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxAccurateCorrectDetails" IsChecked="{Binding ConfirmationOfCorrectness}" />
<CheckBox Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption}" /> <CheckBox Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption}" />
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxWasteDisposal" Margin="2" SelectedIndex="{Binding WasteDisposalDelivery}"/> <ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxWasteDisposal" Margin="2" SelectedIndex="{Binding WasteDisposalDelivery}"/>
<DatePicker Grid.Row="2" Grid.Column="1" Name="datePickerDateLastDisposal" Margin="2" SelectedDate="{Binding LastWasteDisposalDate, Converter={util:ByteConverter}}" /> <DatePicker Grid.Row="2" Grid.Column="1" Name="datePickerDateLastDisposal" Margin="2" SelectedDate="{Binding LastWasteDisposalDate}" />
<enictrl:LocodeControl Grid.Row="3" Grid.Column="1" x:Name="locodeCtrlLastWastePort" LocodeValue="{Binding LastWasteDisposalPort}" /> <enictrl:LocodeControl Grid.Row="3" Grid.Column="1" x:Name="locodeCtrlLastWastePort" LocodeValue="{Binding LastWasteDisposalPort}" />
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Grid.RowSpan="2" Name="textBoxWasteDisposalServiceProviders" Text="{Binding WasteDisposalServiceProviderText}" Margin="2" /> <TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Grid.RowSpan="2" Name="textBoxWasteDisposalServiceProviders" Text="{Binding WasteDisposalServiceProviderText}" Margin="2" />
</Grid> </Grid>

View File

@ -105,6 +105,7 @@ namespace ENI2.DetailViewControls
private void DataGridWaste_CreateRequested() private void DataGridWaste_CreateRequested()
{ {
Waste waste = new Waste(); Waste waste = new Waste();
waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
EditWasteDialog epd = new EditWasteDialog(); EditWasteDialog epd = new EditWasteDialog();
epd.Waste = waste; epd.Waste = waste;
@ -115,6 +116,7 @@ namespace ENI2.DetailViewControls
this._was.Waste.Add(epd.Waste); this._was.Waste.Add(epd.Waste);
this.dataGridWaste.Items.Refresh(); this.dataGridWaste.Items.Refresh();
epd.Waste = new Waste(); epd.Waste = new Waste();
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
this.SublistElementChanged(Message.NotificationClass.WAS); this.SublistElementChanged(Message.NotificationClass.WAS);
}; };
@ -135,6 +137,8 @@ namespace ENI2.DetailViewControls
// are you sure dialog is in base class // are you sure dialog is in base class
_was.Waste.Remove(waste); _was.Waste.Remove(waste);
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(waste); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(waste);
DatabaseEntity.ResetIdentifiers(_was.Waste);
this.SublistElementChanged(Message.NotificationClass.WAS);
this.dataGridWaste.Items.Refresh(); this.dataGridWaste.Items.Refresh();
} }
} }
@ -153,6 +157,7 @@ namespace ENI2.DetailViewControls
_was.Waste.Add(epd.Waste); _was.Waste.Add(epd.Waste);
this.dataGridWaste.Items.Refresh(); this.dataGridWaste.Items.Refresh();
epd.Waste = new Waste(); epd.Waste = new Waste();
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
epd.Waste.WAS = _was; epd.Waste.WAS = _was;
this.SublistElementChanged(Message.NotificationClass.WAS); this.SublistElementChanged(Message.NotificationClass.WAS);
}; };

View File

@ -35,7 +35,7 @@
<MinimumRequiredVersion>3.5.1.0</MinimumRequiredVersion> <MinimumRequiredVersion>3.5.1.0</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish> <CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.html</WebPage> <WebPage>publish.html</WebPage>
<ApplicationRevision>1</ApplicationRevision> <ApplicationRevision>4</ApplicationRevision>
<ApplicationVersion>3.7.2.%2a</ApplicationVersion> <ApplicationVersion>3.7.2.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut> <CreateDesktopShortcut>true</CreateDesktopShortcut>

View File

@ -8,7 +8,7 @@
xmlns:p="clr-namespace:ENI2.Properties" xmlns:p="clr-namespace:ENI2.Properties"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d" mc:Ignorable="d"
Title="{x:Static p:Resources.textNewWithId}" Height="192" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize"> Title="{x:Static p:Resources.textNewWithId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize">
<Grid Margin="4"> <Grid Margin="4">
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -16,6 +16,7 @@
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" />
@ -28,6 +29,7 @@
<Label Name="labelIMO" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textIMO}" /> <Label Name="labelIMO" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textIMO}" />
<Label Name="labelENI" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textENI}" /> <Label Name="labelENI" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textENI}" />
<Label Name="labelETA" Grid.Row="3" Grid.Column="0" Content="ETA" /> <Label Name="labelETA" Grid.Row="3" Grid.Column="0" Content="ETA" />
<Label Name="labelHIS" Grid.Row="4" Grid.Column="0" Content="HIS" />
<xctk:DoubleUpDown x:Name="doubleUpDownIMO" Margin="2" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" <xctk:DoubleUpDown x:Name="doubleUpDownIMO" Margin="2" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
ClipValueToMinMax="True" ClipValueToMinMax="True"
ShowButtonSpinner="False" ShowButtonSpinner="False"
@ -57,6 +59,6 @@
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/> Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
<DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" Grid.ColumnSpan="2" <DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" Grid.ColumnSpan="2"
SelectedDateChanged="datePickerETA_SelectedDateChanged" /> SelectedDateChanged="datePickerETA_SelectedDateChanged" />
<ComboBox Name="comboBoxInitialHIS" Grid.Row="4" Grid.Column="1" Margin="2" Grid.ColumnSpan="2" DisplayMemberPath="Value" SelectedValuePath="Key" />
</Grid> </Grid>
</enictrl:EditWindowBase> </enictrl:EditWindowBase>

View File

@ -3,10 +3,13 @@
// //
// //
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using ENI2.Controls; using ENI2.Controls;
using bsmd.database;
using System; using System;
using System.Collections.Generic;
namespace ENI2.EditControls namespace ENI2.EditControls
{ {
@ -24,6 +27,16 @@ namespace ENI2.EditControls
private void NewWithIdDialog_Loaded(object sender, RoutedEventArgs e) private void NewWithIdDialog_Loaded(object sender, RoutedEventArgs e)
{ {
this.EnableOK(false); this.EnableOK(false);
List<KeyValuePair<Message.NSWProvider, string>> comboDataSource = new List<KeyValuePair<Message.NSWProvider, string>>()
{
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord live" ),
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" ),
new KeyValuePair<Message.NSWProvider, string>(Message.NSWProvider.DBH, "DBH")
};
this.comboBoxInitialHIS.ItemsSource = comboDataSource;
} }
public bool ValidId { get; set; } public bool ValidId { get; set; }
@ -36,6 +49,8 @@ namespace ENI2.EditControls
public DateTime? ETA { get { return this.datePickerETA.SelectedDate; } } public DateTime? ETA { get { return this.datePickerETA.SelectedDate; } }
public Message.NSWProvider SelectedHIS { get { return (Message.NSWProvider) this.comboBoxInitialHIS.SelectedValue; } }
private void textBoxVisitTransitId_TextChanged(object sender, TextChangedEventArgs e) private void textBoxVisitTransitId_TextChanged(object sender, TextChangedEventArgs e)
{ {
this.CheckComplete(); this.CheckComplete();

View File

@ -16,11 +16,22 @@
<enictrl:ENIDataGrid Grid.Row="0" Grid.Column="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" <enictrl:ENIDataGrid Grid.Row="0" Grid.Column="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0" x:Name="dataGridSystemErrors"> SelectionMode="Single" AutoGenerateColumns="False" Margin="0,5,0,0" x:Name="dataGridSystemErrors">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="At" Binding="{Binding ErrorAt}" IsReadOnly="True" Width="0.15*" /> <DataGridTextColumn Header="At" Binding="{Binding Created}" IsReadOnly="True" Width="0.15*" />
<DataGridTextColumn Header="{x:Static p:Resources.textSendDate}" Binding="{Binding SendDate}" IsReadOnly="True" Width="0.15*" />
<DataGridTextColumn Header="{x:Static p:Resources.textCode}" Binding="{Binding ErrorCode}" IsReadOnly="True" Width="0.1*" /> <DataGridTextColumn Header="{x:Static p:Resources.textCode}" Binding="{Binding ErrorCode}" IsReadOnly="True" Width="0.1*" />
<DataGridTextColumn Header="{x:Static p:Resources.textMessage}" Binding="{Binding ErrorMessage}" IsReadOnly="True" Width="0.2*" /> <DataGridTextColumn Header="{x:Static p:Resources.textMessage}" Binding="{Binding ErrorMessage}" IsReadOnly="True" Width="0.25*">
<DataGridTextColumn Header="{x:Static p:Resources.textDescription}" Binding="{Binding ErrorDescription}" IsReadOnly="True" Width="0.3*" /> <DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="{x:Static p:Resources.textDescription}" Binding="{Binding ErrorDescription}" IsReadOnly="True" Width="0.5*">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns> </DataGrid.Columns>
</enictrl:ENIDataGrid> </enictrl:ENIDataGrid>
</Grid> </Grid>

View File

@ -8,13 +8,14 @@
xmlns:p="clr-namespace:ENI2.Properties" xmlns:p="clr-namespace:ENI2.Properties"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d" mc:Ignorable="d"
Title="{x:Static p:Resources.textNewVisitTransitId}" Height="192" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize"> Title="{x:Static p:Resources.textNewVisitTransitId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize">
<Grid Margin="4"> <Grid Margin="4">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" /> <RowDefinition Height="28" />
<RowDefinition Height="28" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" /> <ColumnDefinition Width="1*" />
@ -24,6 +25,7 @@
<Label Name="labelENI" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textENI}" /> <Label Name="labelENI" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textENI}" />
<Label Name="labelPoC" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textPortCall}" /> <Label Name="labelPoC" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textPortCall}" />
<Label Name="labelETA" Grid.Row="3" Grid.Column="0" Content="ETA" /> <Label Name="labelETA" Grid.Row="3" Grid.Column="0" Content="ETA" />
<Label Name="labelHIS" Grid.Row="4" Grid.Column="0" Content="HIS" />
<xctk:DoubleUpDown x:Name="doubleUpDownIMO" Margin="2" Grid.Row="0" Grid.Column="1" <xctk:DoubleUpDown x:Name="doubleUpDownIMO" Margin="2" Grid.Row="0" Grid.Column="1"
ClipValueToMinMax="True" ClipValueToMinMax="True"
ShowButtonSpinner="False" ShowButtonSpinner="False"
@ -52,5 +54,6 @@
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/> Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" /> <enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" />
<DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" /> <DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" />
<ComboBox Name="comboBoxInitialHIS" Grid.Row="4" Grid.Column="1" Margin="2" Grid.ColumnSpan="2" DisplayMemberPath="Value" SelectedValuePath="Key" SelectionChanged="comboBoxInitialHIS_SelectionChanged"/>
</Grid> </Grid>
</enictrl:EditWindowBase> </enictrl:EditWindowBase>

View File

@ -2,6 +2,7 @@
// Description: Mit diesem Dialog können neue Visit/Transit-Id's beantragt werden (DE only) // Description: Mit diesem Dialog können neue Visit/Transit-Id's beantragt werden (DE only)
// //
using System.Collections.Generic;
using System.Windows; using System.Windows;
using ENI2.Controls; using ENI2.Controls;
@ -26,6 +27,13 @@ namespace ENI2.EditControls
private void VisitIdDialog_Loaded(object sender, RoutedEventArgs e) private void VisitIdDialog_Loaded(object sender, RoutedEventArgs e)
{ {
this.OKClicked += VisitIdDialog_OKClicked; this.OKClicked += VisitIdDialog_OKClicked;
List<KeyValuePair<bsmd.database.Message.NSWProvider, string>> comboDataSource = new List<KeyValuePair<bsmd.database.Message.NSWProvider, string>>()
{
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord live" ),
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" )
};
this.comboBoxInitialHIS.ItemsSource = comboDataSource;
this.EnableOK(false); this.EnableOK(false);
this.locodePoC.PropertyChanged += LocodePoC_PropertyChanged; this.locodePoC.PropertyChanged += LocodePoC_PropertyChanged;
} }
@ -54,6 +62,8 @@ namespace ENI2.EditControls
this.Core.PoC = this.locodePoC.LocodeValue; this.Core.PoC = this.locodePoC.LocodeValue;
this.Core.Portname = LocodeDB.PortNameFromLocode(this.Core.PoC); this.Core.Portname = LocodeDB.PortNameFromLocode(this.Core.PoC);
this.Core.InitialHIS = (Message.NSWProvider) this.comboBoxInitialHIS.SelectedValue;
this._isOK = true; this._isOK = true;
} }
@ -87,6 +97,11 @@ namespace ENI2.EditControls
this.CheckComplete(); this.CheckComplete();
} }
private void comboBoxInitialHIS_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
this.CheckComplete();
}
#endregion #endregion
#region input validation #region input validation
@ -107,6 +122,8 @@ namespace ENI2.EditControls
isComplete &= validLocode; isComplete &= validLocode;
isComplete &= (comboBoxInitialHIS.SelectedValue != null);
this.EnableOK(isComplete); this.EnableOK(isComplete);
} }

View File

@ -108,10 +108,10 @@ namespace ENI2
DetailRootControl drc = new DetailRootControl(aMessageCore); DetailRootControl drc = new DetailRootControl(aMessageCore);
drc.LockedByOtherUser = !iDidLockIt; drc.LockedByOtherUser = !iDidLockIt;
//if (!aMessageCore.Cancelled ?? false) if (!aMessageCore.Cancelled ?? false)
//{ {
drc.LockedBy = iDidLockIt ? this.userEntity : DBManager.Instance.GetReportingPartyDict()[lockedUserId]; drc.LockedBy = iDidLockIt ? this.userEntity : DBManager.Instance.GetReportingPartyDict()[lockedUserId];
//} }
searchResultItem.Content = drc; searchResultItem.Content = drc;
this.mainFrame.Items.Add(searchResultItem); this.mainFrame.Items.Add(searchResultItem);
@ -375,6 +375,7 @@ namespace ENI2
newCore.Portname = LocodeDB.PortNameFromLocode(newCore.PoC); newCore.Portname = LocodeDB.PortNameFromLocode(newCore.PoC);
newCore.IMO = newWithIdDialog.IMO; newCore.IMO = newWithIdDialog.IMO;
newCore.ENI = newWithIdDialog.ENI; newCore.ENI = newWithIdDialog.ENI;
newCore.InitialHIS = newWithIdDialog.SelectedHIS;
if (newCore.IsTransit) if (newCore.IsTransit)
newCore.ETAKielCanal = newWithIdDialog.ETA; newCore.ETAKielCanal = newWithIdDialog.ETA;
else else

View File

@ -1313,6 +1313,15 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to {0} crew members imported.
/// </summary>
public static string textCrewImported {
get {
return ResourceManager.GetString("textCrewImported", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Crew member. /// Looks up a localized string similar to Crew member.
/// </summary> /// </summary>
@ -2852,6 +2861,15 @@ namespace ENI2.Properties {
} }
} }
/// <summary>
/// Looks up a localized string similar to {0} passengers imported.
/// </summary>
public static string textPassengerImported {
get {
return ResourceManager.GetString("textPassengerImported", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Number of passengers on board. /// Looks up a localized string similar to Number of passengers on board.
/// </summary> /// </summary>

View File

@ -1507,4 +1507,10 @@
<data name="textValue" xml:space="preserve"> <data name="textValue" xml:space="preserve">
<value>Value</value> <value>Value</value>
</data> </data>
<data name="textCrewImported" xml:space="preserve">
<value>{0} crew members imported</value>
</data>
<data name="textPassengerImported" xml:space="preserve">
<value>{0} passengers imported</value>
</data>
</root> </root>

Binary file not shown.

View File

@ -263,10 +263,15 @@ namespace SendNSWMessageService
} }
} }
bsmd.hisnord.transmitter.CallTransmitter(); bsmd.hisnord.transmitter.CallTransmitter(true);
bsmd.hisnord.Request.ReadResponseFiles(); bsmd.hisnord.transmitter.CallTransmitter(false);
// ob test oder nicht ist in stat. dict gespeicher
bsmd.hisnord.Request.ReadResponseFiles();
bsmd.hisnord.Request.Clear(); bsmd.hisnord.Request.Clear();
bsmd.hisnord.Response.ReadAnswers();
bsmd.hisnord.Response.ReadAnswers(true);
bsmd.hisnord.Response.ReadAnswers(false);
List<MessageCore> coresMarkedForStatusQuery = DBManager.Instance.GetMessageCoresWithNSWStatusFlag(); List<MessageCore> coresMarkedForStatusQuery = DBManager.Instance.GetMessageCoresWithNSWStatusFlag();

View File

@ -498,11 +498,11 @@ namespace bsmd.ExcelReadService
result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day); result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day);
if (etaTime != null) if (etaTime != null)
{ {
result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day, etaTime.Value.Hour, etaTime.Value.Minute, etaTime.Value.Second); result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day, etaTime.Value.Hour, etaTime.Value.Minute, etaTime.Value.Second, DateTimeKind.Local);
} }
} }
if(result.HasValue) if(result.HasValue)
{ {
// wir haben local time gelesen, wird jetzt in UTC konvertiert // wir haben local time gelesen, wird jetzt in UTC konvertiert
result = result.Value.ToUniversalTime(); result = result.Value.ToUniversalTime();
} }

View File

@ -299,7 +299,9 @@ namespace bsmd.ExcelReadService
string bpolETATime = string.Format("BPOL.PortOfItineraryETATime_{0}", i); string bpolETATime = string.Format("BPOL.PortOfItineraryETATime_{0}", i);
string bpolNameValue = reader.ReadText(bpolName)?.Trim(); string bpolNameValue = reader.ReadText(bpolName)?.Trim();
if (!bpolNameValue.IsNullOrEmpty()) string bpolLocodeValue = reader.ReadLoCode(bpolLocode);
if (!bpolNameValue.IsNullOrEmpty() || !bpolLocodeValue.IsNullOrEmpty())
{ {
PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary; PortOfItinerary poi = bpol.GetSublistElementWithIdentifier(i.ToString()) as PortOfItinerary;
if (poi == null) if (poi == null)
@ -309,13 +311,11 @@ namespace bsmd.ExcelReadService
poi.Identifier = i.ToString(); poi.Identifier = i.ToString();
bpol.PortOfItineraries.Add(poi); bpol.PortOfItineraries.Add(poi);
} }
poi.PortOfItineraryName = bpolNameValue; poi.PortOfItineraryName = bpolNameValue;
reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK); reader.Conf.ConfirmText(bpolName, bpolNameValue, ExcelReader.ReadState.OK);
poi.PortOfItineraryLocode = reader.ReadLoCode(bpolLocode); poi.PortOfItineraryLocode = bpolLocodeValue;
if (!poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length > 5)) // falls nur Locode angegeben wurde, Portname aus Locode ermitteln
{
reader.Conf.ConfirmText(bpolLocode, poi.PortOfItineraryLocode, ExcelReader.ReadState.WARN);
}
if(poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5)) if(poi.PortOfItineraryName.IsNullOrEmpty() && !poi.PortOfItineraryLocode.IsNullOrEmpty() && (poi.PortOfItineraryLocode.Length == 5))
{ {
poi.PortOfItineraryName = LocodeDB.PortNameFromLocode(poi.PortOfItineraryLocode); poi.PortOfItineraryName = LocodeDB.PortNameFromLocode(poi.PortOfItineraryLocode);
@ -412,10 +412,10 @@ namespace bsmd.ExcelReadService
} }
else else
{ {
if (shipClass.Contains('1')) haza.INFShipClass = 1; if (shipClass.Contains('1')) haza.INFShipClass = 0;
if (shipClass.Contains('2')) haza.INFShipClass = 2; if (shipClass.Contains('2')) haza.INFShipClass = 1;
if (shipClass.Contains('3')) haza.INFShipClass = 3; if (shipClass.Contains('3')) haza.INFShipClass = 2;
if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) haza.INFShipClass = 0; // if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) haza.INFShipClass = 0; // "NONE" existiert nicht in der Enumeration!!
reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); reader.Conf.ConfirmText("HAZA.INFShipClass", shipClass, haza.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
} }
@ -717,10 +717,10 @@ namespace bsmd.ExcelReadService
} }
else else
{ {
if (shipClass.Contains('1')) hazd.INFShipClass = 1; if (shipClass.Contains('1')) hazd.INFShipClass = 0;
if (shipClass.Contains('2')) hazd.INFShipClass = 2; if (shipClass.Contains('2')) hazd.INFShipClass = 1;
if (shipClass.Contains('3')) hazd.INFShipClass = 3; if (shipClass.Contains('3')) hazd.INFShipClass = 2;
if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) hazd.INFShipClass = 0; // if (shipClass.Equals("none", StringComparison.OrdinalIgnoreCase)) hazd.INFShipClass = 0;
reader.Conf.ConfirmText("HAZD.INFShipClass", shipClass, hazd.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); reader.Conf.ConfirmText("HAZD.INFShipClass", shipClass, hazd.INFShipClass.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
} }
@ -2028,6 +2028,7 @@ namespace bsmd.ExcelReadService
{ {
SERV newSERV = new SERV(); SERV newSERV = new SERV();
newSERV.MessageHeader = servMessage; newSERV.MessageHeader = servMessage;
newSERV.Identifier = "1";
servMessage.Elements.Add(newSERV); servMessage.Elements.Add(newSERV);
} }
SERV serv = servMessage.Elements[0] as SERV; SERV serv = servMessage.Elements[0] as SERV;

View File

@ -180,8 +180,9 @@ namespace bsmd.dakosy
for (int i = 0; i < numCallPurpose; i++) for (int i = 0; i < numCallPurpose; i++)
{ {
vList.Visit[0].NOA_NOD.CallPurpose[i] = new CallPurpose(); vList.Visit[0].NOA_NOD.CallPurpose[i] = new CallPurpose();
vList.Visit[0].NOA_NOD.CallPurpose[i].CallPurposeCode = noa_nod.CallPurposes[i].CallPurposeCode; bsmd.database.CallPurpose callPurpose = noa_nod.CallPurposes[i] as bsmd.database.CallPurpose;
vList.Visit[0].NOA_NOD.CallPurpose[i].CallPurposeDescription = noa_nod.CallPurposes[i].CallPurposeDescription; vList.Visit[0].NOA_NOD.CallPurpose[i].CallPurposeCode = callPurpose.CallPurposeCode;
vList.Visit[0].NOA_NOD.CallPurpose[i].CallPurposeDescription = callPurpose.CallPurposeDescription;
} }
} }
break; break;
@ -206,9 +207,10 @@ namespace bsmd.dakosy
for (int i = 0; i < bpol.PortOfItineraries.Count; i++) for (int i = 0; i < bpol.PortOfItineraries.Count; i++)
{ {
vList.Visit[0].BPOL.PortOfItinerary[i] = new PortOfItinerary(); vList.Visit[0].BPOL.PortOfItinerary[i] = new PortOfItinerary();
if (bpol.PortOfItineraries[i].PortOfItineraryETA.HasValue) bsmd.database.PortOfItinerary portOfItinerary = bpol.PortOfItineraries[i] as bsmd.database.PortOfItinerary;
vList.Visit[0].BPOL.PortOfItinerary[i].PortOfItineraryETA = bpol.PortOfItineraries[i].PortOfItineraryETA.Value; if (portOfItinerary.PortOfItineraryETA.HasValue)
vList.Visit[0].BPOL.PortOfItinerary[i].PortOfItineraryName = bpol.PortOfItineraries[i].PortOfItineraryName; vList.Visit[0].BPOL.PortOfItinerary[i].PortOfItineraryETA = portOfItinerary.PortOfItineraryETA.Value;
vList.Visit[0].BPOL.PortOfItinerary[i].PortOfItineraryName = portOfItinerary.PortOfItineraryName;
} }
} }
vList.Visit[0].BPOL.StowawayOnBoard = bpol.StowawaysOnBoard ?? false; vList.Visit[0].BPOL.StowawayOnBoard = bpol.StowawaysOnBoard ?? false;
@ -358,10 +360,11 @@ namespace bsmd.dakosy
vList.Visit[0].MDH.SanitaryMeasuresDetails = new SanitaryMeasuresDetails[mdh.SanitaryMeasuresDetails.Count]; vList.Visit[0].MDH.SanitaryMeasuresDetails = new SanitaryMeasuresDetails[mdh.SanitaryMeasuresDetails.Count];
for (int smIndex = 0; smIndex < mdh.SanitaryMeasuresDetails.Count; smIndex++) { for (int smIndex = 0; smIndex < mdh.SanitaryMeasuresDetails.Count; smIndex++) {
SanitaryMeasuresDetails smDetails = new SanitaryMeasuresDetails(); SanitaryMeasuresDetails smDetails = new SanitaryMeasuresDetails();
if (mdh.SanitaryMeasuresDetails[smIndex].SanitaryMeasuresDate.HasValue) bsmd.database.SanitaryMeasuresDetail sanitaryMeasuresDetail = mdh.SanitaryMeasuresDetails[smIndex] as bsmd.database.SanitaryMeasuresDetail;
smDetails.SanitaryMeasuresDate = mdh.SanitaryMeasuresDetails[smIndex].SanitaryMeasuresDate.Value; if (sanitaryMeasuresDetail.SanitaryMeasuresDate.HasValue)
smDetails.SanitaryMeasuresLocation = mdh.SanitaryMeasuresDetails[smIndex].SanitaryMeasuresLocation; smDetails.SanitaryMeasuresDate = sanitaryMeasuresDetail.SanitaryMeasuresDate.Value;
smDetails.SanitaryMeasuresType = mdh.SanitaryMeasuresDetails[smIndex].SanitaryMeasuresType; smDetails.SanitaryMeasuresLocation = sanitaryMeasuresDetail.SanitaryMeasuresLocation;
smDetails.SanitaryMeasuresType = sanitaryMeasuresDetail.SanitaryMeasuresType;
vList.Visit[0].MDH.SanitaryMeasuresDetails[smIndex] = smDetails; vList.Visit[0].MDH.SanitaryMeasuresDetails[smIndex] = smDetails;
} }
} }
@ -386,9 +389,10 @@ namespace bsmd.dakosy
for (int iaIndex = 0; iaIndex < mdh.InfectedAreas.Count; iaIndex++) for (int iaIndex = 0; iaIndex < mdh.InfectedAreas.Count; iaIndex++)
{ {
InfectedArea infectedArea = new InfectedArea(); InfectedArea infectedArea = new InfectedArea();
if (mdh.InfectedAreas[iaIndex].InfectedAreaDate.HasValue) bsmd.database.InfectedArea ia = mdh.InfectedAreas[iaIndex] as bsmd.database.InfectedArea;
infectedArea.InfectedAreaDate = mdh.InfectedAreas[iaIndex].InfectedAreaDate.Value; if (ia.InfectedAreaDate.HasValue)
infectedArea.InfectedAreaPort = mdh.InfectedAreas[iaIndex].InfectedAreaPort; infectedArea.InfectedAreaDate = ia.InfectedAreaDate.Value;
infectedArea.InfectedAreaPort = ia.InfectedAreaPort;
vList.Visit[0].MDH.InfectedArea[iaIndex] = infectedArea; vList.Visit[0].MDH.InfectedArea[iaIndex] = infectedArea;
} }
} }
@ -397,19 +401,20 @@ namespace bsmd.dakosy
vList.Visit[0].MDH.PortsOfCallLast30Days = new PortOfCallLast30Days[mdh.PortOfCallLast30Days.Count]; vList.Visit[0].MDH.PortsOfCallLast30Days = new PortOfCallLast30Days[mdh.PortOfCallLast30Days.Count];
for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++) for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++)
{ {
bsmd.database.PortOfCallLast30Days poc30d = mdh.PortOfCallLast30Days[i] as bsmd.database.PortOfCallLast30Days;
vList.Visit[0].MDH.PortsOfCallLast30Days[i] = new PortOfCallLast30Days(); vList.Visit[0].MDH.PortsOfCallLast30Days[i] = new PortOfCallLast30Days();
vList.Visit[0].MDH.PortsOfCallLast30Days[i].Locode = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode; vList.Visit[0].MDH.PortsOfCallLast30Days[i].Locode = poc30d.PortOfCallLast30DaysLocode;
if (mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.HasValue) if (poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue)
vList.Visit[0].MDH.PortsOfCallLast30Days[i].DateOfDeparture = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.Value; vList.Visit[0].MDH.PortsOfCallLast30Days[i].DateOfDeparture = poc30d.PortOfCallLast30DaysDateOfDeparture.Value;
if (mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined.HasValue) if (poc30d.PortOfCallLast30DaysCrewMembersJoined.HasValue)
{ {
vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewMembersJoined = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined.Value; vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewMembersJoined = poc30d.PortOfCallLast30DaysCrewMembersJoined.Value;
if(mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count > 0) { if(poc30d.CrewJoinedShip.Count > 0) {
vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName = new CrewJoinedShipName[mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count]; vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName = new CrewJoinedShipName[poc30d.CrewJoinedShip.Count];
for (int j = 0; j < vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName.Length; j++) for (int j = 0; j < vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName.Length; j++)
{ {
vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName[j] = new CrewJoinedShipName(); vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName[j] = new CrewJoinedShipName();
vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName[j].Name = mdh.PortOfCallLast30Days[i].CrewJoinedShip[j].PortOfCallLast30DaysCrewJoinedShipName; vList.Visit[0].MDH.PortsOfCallLast30Days[i].CrewJoinedShipName[j].Name = poc30d.CrewJoinedShip[j].PortOfCallLast30DaysCrewJoinedShipName;
} }
} }
} }
@ -539,25 +544,28 @@ namespace bsmd.dakosy
vList.Visit[0].SEC.PortFacilityOfArrival = sec.PortFacilityOfArrival; vList.Visit[0].SEC.PortFacilityOfArrival = sec.PortFacilityOfArrival;
vList.Visit[0].SEC.GeneralDescriptionOfCargoSpecified = sec.GeneralDescriptionOfCargo.HasValue; vList.Visit[0].SEC.GeneralDescriptionOfCargoSpecified = sec.GeneralDescriptionOfCargo.HasValue;
byte gdc = sec.GeneralDescriptionOfCargo ?? 0; byte gdc = sec.GeneralDescriptionOfCargo ?? 0;
vList.Visit[0].SEC.GeneralDescriptionOfCargo = CargoTypeFromNSWEnumeration(gdc); if (sec.LastTenPortFacilitesCalled.Count > 0) vList.Visit[0].SEC.GeneralDescriptionOfCargo = CargoTypeFromNSWEnumeration(gdc);
if (sec.LastTenPortFacilitesCalled.Count > 0)
{ {
vList.Visit[0].SEC.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled[sec.LastTenPortFacilitesCalled.Count]; vList.Visit[0].SEC.LastTenPortFacilitiesCalled = new LastTenPortFacilitiesCalled[sec.LastTenPortFacilitesCalled.Count];
for (int i = 0; i < sec.LastTenPortFacilitesCalled.Count; i++) for (int i = 0; i < sec.LastTenPortFacilitesCalled.Count; i++)
{ {
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i] = new LastTenPortFacilitiesCalled(); vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i] = new LastTenPortFacilitiesCalled();
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortName = sec.LastTenPortFacilitesCalled[i].PortFacilityPortName; bsmd.database.LastTenPortFacilitiesCalled l10c = sec.LastTenPortFacilitesCalled[i] as bsmd.database.LastTenPortFacilitiesCalled;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortCountry = sec.LastTenPortFacilitesCalled[i].PortFacilityPortCountry; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortName = l10c.PortFacilityPortName;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortLoCode = sec.LastTenPortFacilitesCalled[i].PortFacilityPortLoCode; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortCountry = l10c.PortFacilityPortCountry;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfArrivalSpecified = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.HasValue; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].PortLoCode = l10c.PortFacilityPortLoCode;
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.HasValue) vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfArrivalSpecified = l10c.PortFacilityDateOfArrival.HasValue;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfArrival = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.Value; if (l10c.PortFacilityDateOfArrival.HasValue)
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfDepartureSpecified = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.HasValue; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfArrival = l10c.PortFacilityDateOfArrival.Value;
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.HasValue) vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfDepartureSpecified = l10c.PortFacilityDateOfDeparture.HasValue;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfDeparture = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.Value; if (l10c.PortFacilityDateOfDeparture.HasValue)
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].ShipSecurityLevelSpecified = sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel.HasValue; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].DateOfDeparture = l10c.PortFacilityDateOfDeparture.Value;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].ShipSecurityLevel = sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel ?? 0; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].ShipSecurityLevelSpecified = l10c.PortFacilityShipSecurityLevel.HasValue;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].SecurityMattersToReport = sec.LastTenPortFacilitesCalled[i].PortFacilitySecurityMattersToReport; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].ShipSecurityLevel = l10c.PortFacilityShipSecurityLevel ?? 0;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].GISISCode = sec.LastTenPortFacilitesCalled[i].PortFacilityGISISCode; vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].SecurityMattersToReport = l10c.PortFacilitySecurityMattersToReport;
vList.Visit[0].SEC.LastTenPortFacilitiesCalled[i].GISISCode = l10c.PortFacilityGISISCode;
} }
} }
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count > 0) if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count > 0)
@ -565,21 +573,22 @@ namespace bsmd.dakosy
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count]; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count];
for(int i=0;i<sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count;i++) for(int i=0;i<sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count;i++)
{ {
bsmd.database.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2sl = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i] as bsmd.database.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i] = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i] = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationName = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationName; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationName = s2sl.ShipToShipActivityLocationName;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCode = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationLoCode; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCode = s2sl.ShipToShipActivityLocationLoCode;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLatitudeSpecified = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude.HasValue; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLatitudeSpecified = s2sl.ShipToShipActivityLocationCoordinatesLatitude.HasValue;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLatitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude ?? 0; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLatitude = s2sl.ShipToShipActivityLocationCoordinatesLatitude ?? 0;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLongitudeSpecified = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude.HasValue; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLongitudeSpecified = s2sl.ShipToShipActivityLocationCoordinatesLongitude.HasValue;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLongitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude ?? 0; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].LocationCoordinatesLongitude = s2sl.ShipToShipActivityLocationCoordinatesLongitude ?? 0;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateFromSpecified = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.HasValue; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateFromSpecified = s2sl.ShipToShipActivityDateFrom.HasValue;
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.HasValue) if (s2sl.ShipToShipActivityDateFrom.HasValue)
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateFrom = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.Value; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateFrom = s2sl.ShipToShipActivityDateFrom.Value;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateToSpecified = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.HasValue; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateToSpecified = s2sl.ShipToShipActivityDateTo.HasValue;
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.HasValue) if (s2sl.ShipToShipActivityDateTo.HasValue)
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateTo = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.Value; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].DateTo = s2sl.ShipToShipActivityDateTo.Value;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ActivityType = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityType; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ActivityType = s2sl.ShipToShipActivityType;
vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].SecurityMattersToReport = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivitySecurityMattersToReport; vList.Visit[0].SEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].SecurityMattersToReport = s2sl.ShipToShipActivitySecurityMattersToReport;
} }
} }
} }
@ -739,19 +748,20 @@ namespace bsmd.dakosy
vList.Visit[0].WAS.Waste = new Waste[was.Waste.Count]; vList.Visit[0].WAS.Waste = new Waste[was.Waste.Count];
for (int i = 0; i < was.Waste.Count; i++) for (int i = 0; i < was.Waste.Count; i++)
{ {
byte wt = (byte) (was.Waste[i].WasteType ?? 0); bsmd.database.Waste waste = was.Waste[i] as bsmd.database.Waste;
byte wt = (byte) (waste.WasteType ?? 0);
vList.Visit[0].WAS.Waste[i] = new Waste(); vList.Visit[0].WAS.Waste[i] = new Waste();
vList.Visit[0].WAS.Waste[i].WasteType = Request.setWasteType(wt); vList.Visit[0].WAS.Waste[i].WasteType = Request.setWasteType(wt);
vList.Visit[0].WAS.Waste[i].Description = was.Waste[i].WasteDescription; vList.Visit[0].WAS.Waste[i].Description = waste.WasteDescription;
vList.Visit[0].WAS.Waste[i].DisposalAmountMTQSpecified = was.Waste[i].WasteDisposalAmount_MTQ.HasValue; vList.Visit[0].WAS.Waste[i].DisposalAmountMTQSpecified = waste.WasteDisposalAmount_MTQ.HasValue;
vList.Visit[0].WAS.Waste[i].DisposalAmountMTQ = was.Waste[i].WasteDisposalAmount_MTQ ?? 0; vList.Visit[0].WAS.Waste[i].DisposalAmountMTQ = waste.WasteDisposalAmount_MTQ ?? 0;
vList.Visit[0].WAS.Waste[i].CapacityMTQSpecified = was.Waste[i].WasteCapacity_MTQ.HasValue; vList.Visit[0].WAS.Waste[i].CapacityMTQSpecified = waste.WasteCapacity_MTQ.HasValue;
vList.Visit[0].WAS.Waste[i].CapacityMTQ = was.Waste[i].WasteCapacity_MTQ ?? 0; vList.Visit[0].WAS.Waste[i].CapacityMTQ = waste.WasteCapacity_MTQ ?? 0;
vList.Visit[0].WAS.Waste[i].AmountRetainedMTQSpecified = was.Waste[i].WasteAmountRetained_MTQ.HasValue; vList.Visit[0].WAS.Waste[i].AmountRetainedMTQSpecified = waste.WasteAmountRetained_MTQ.HasValue;
vList.Visit[0].WAS.Waste[i].AmountRetainedMTQ = was.Waste[i].WasteAmountRetained_MTQ ?? 0; vList.Visit[0].WAS.Waste[i].AmountRetainedMTQ = waste.WasteAmountRetained_MTQ ?? 0;
vList.Visit[0].WAS.Waste[i].DisposalPort = was.Waste[i].WasteDisposalPort; vList.Visit[0].WAS.Waste[i].DisposalPort = waste.WasteDisposalPort;
vList.Visit[0].WAS.Waste[i].AmountGeneratedTillNextPortMTQSpecified = was.Waste[i].WasteAmountGeneratedTillNextPort_MTQ.HasValue; vList.Visit[0].WAS.Waste[i].AmountGeneratedTillNextPortMTQSpecified = waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue;
vList.Visit[0].WAS.Waste[i].AmountGeneratedTillNextPortMTQ = was.Waste[i].WasteAmountGeneratedTillNextPort_MTQ ?? 0; vList.Visit[0].WAS.Waste[i].AmountGeneratedTillNextPortMTQ = waste.WasteAmountGeneratedTillNextPort_MTQ ?? 0;
} }
} }
} }

View File

@ -67,7 +67,7 @@ namespace bsmd.database
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET BunkerFuelType = @P2, BunkerFuelQuantity_TNE = @P3 WHERE Id = @ID", this.Tablename); scmd.CommandText = string.Format("UPDATE {0} SET BunkerFuelType = @P2, BunkerFuelQuantity_TNE = @P3, Identifiery = @P4 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -17,7 +17,7 @@ namespace bsmd.database
public class BPOL : DatabaseEntity, ISublistContainer public class BPOL : DatabaseEntity, ISublistContainer
{ {
private List<PortOfItinerary> poi = new List<PortOfItinerary>(); private List<DatabaseEntity> poi = new List<DatabaseEntity>();
public BPOL() public BPOL()
{ {
@ -36,7 +36,7 @@ namespace bsmd.database
[ENI2Validation] [ENI2Validation]
public bool? CruiseShip { get; set; } public bool? CruiseShip { get; set; }
public List<PortOfItinerary> PortOfItineraries { get { return this.poi; } } public List<DatabaseEntity> PortOfItineraries { get { return this.poi; } }
#endregion #endregion

View File

@ -67,7 +67,7 @@ namespace bsmd.database
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET BunkerFuelType = @P2, BunkerFuelQuantity_TNE = @P3 WHERE Id = @ID", this.Tablename); scmd.CommandText = string.Format("UPDATE {0} SET BunkerFuelType = @P2, BunkerFuelQuantity_TNE = @P3, Identifier = @P4 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -155,7 +155,7 @@ namespace bsmd.database
scmd.CommandText = string.Format("UPDATE {0} SET CrewMemberLastName = @P2, CrewMemberFirstName = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET CrewMemberLastName = @P2, CrewMemberFirstName = @P3, " +
"CrewMemberPlaceOfBirth = @P4, CrewMemberDateOfBirth = @P5, CrewMemberGender = @P6, CrewMemberNationality = @P7, "+ "CrewMemberPlaceOfBirth = @P4, CrewMemberDateOfBirth = @P5, CrewMemberGender = @P6, CrewMemberNationality = @P7, "+
"CrewMemberIdentityDocumentType = @P8, CrewMemberIdentityDocumentId = @P9, CrewMemberVisaNumber = @P10, " + "CrewMemberIdentityDocumentType = @P8, CrewMemberIdentityDocumentId = @P9, CrewMemberVisaNumber = @P10, " +
"CrewMemberDuty = @P11, IsDeparture = @P13 WHERE Id = @ID", this.Tablename); "CrewMemberDuty = @P11, Identifier = @P12, IsDeparture = @P13 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -58,7 +58,7 @@ namespace bsmd.database
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET CallPurposeCode = @P2, CallPurposeDescription = @P3 " + scmd.CommandText = string.Format("UPDATE {0} SET CallPurposeCode = @P2, CallPurposeDescription = @P3, Identifier = @P4 " +
"WHERE Id = @ID", this.Tablename); "WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -556,6 +556,9 @@ namespace bsmd.database
_log.WarnFormat("Entity {0} save: Field truncated: {1}", entity.GetType(), truncatedField); _log.WarnFormat("Entity {0} save: Field truncated: {1}", entity.GetType(), truncatedField);
} }
SqlCommand cmd = new SqlCommand(); SqlCommand cmd = new SqlCommand();
entity.PrepareSave(cmd); entity.PrepareSave(cmd);
int queryResult = this.PerformNonQuery(cmd); int queryResult = this.PerformNonQuery(cmd);
@ -633,6 +636,13 @@ namespace bsmd.database
#region internal/private funcs #region internal/private funcs
private void CheckConnection()
{
if ((this._con == null) ||
(this._con.State == ConnectionState.Closed))
this.Connect(this.ConnectionString);
}
private void LogNonQueryResult(string query, int queryResult) private void LogNonQueryResult(string query, int queryResult)
{ {
switch (queryResult) switch (queryResult)
@ -1112,6 +1122,9 @@ namespace bsmd.database
{ {
try try
{ {
this.CheckConnection();
cmd.Connection = this._con; cmd.Connection = this._con;
// Stopwatch sw = new Stopwatch(); // Stopwatch sw = new Stopwatch();
// sw.Start(); // sw.Start();
@ -1142,6 +1155,8 @@ namespace bsmd.database
{ {
try try
{ {
this.CheckConnection();
cmd.Connection = this._con; cmd.Connection = this._con;
result = cmd.ExecuteNonQuery(); result = cmd.ExecuteNonQuery();
} }
@ -1168,6 +1183,7 @@ namespace bsmd.database
{ {
try try
{ {
this.CheckConnection();
cmd.Connection = this._con; cmd.Connection = this._con;
result = (bool?)cmd.ExecuteScalar(); result = (bool?)cmd.ExecuteScalar();
} }
@ -1193,6 +1209,7 @@ namespace bsmd.database
{ {
try try
{ {
this.CheckConnection();
cmd.Connection = this._con; cmd.Connection = this._con;
result = (int?)cmd.ExecuteScalar(); result = (int?)cmd.ExecuteScalar();
} }
@ -1215,6 +1232,8 @@ namespace bsmd.database
{ {
lock (this._lock) lock (this._lock)
{ {
this.CheckConnection();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(this._con, SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.TableLock, null)) using (SqlBulkCopy bulkCopy = new SqlBulkCopy(this._con, SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.TableLock, null))
{ {
bulkCopy.BulkCopyTimeout = 180; bulkCopy.BulkCopyTimeout = 180;

View File

@ -194,10 +194,39 @@ namespace bsmd.database
} }
} }
if (maxVal == -1) return 1.ToString(); if (maxVal == -1)
{
// Spezialbalkone
try
{
Type type = sublist.GetType().GetGenericArguments()[0];
if (type == typeof(IMDGPosition)) return "IMDG-1";
if (type == typeof(IBCPosition)) return "IBC-1";
if (type == typeof(IGCPosition)) return "IGC-1";
if (type == typeof(IMSBCPosition)) return "IMSBC-1";
if (type == typeof(MARPOL_Annex_I_Position)) return "MARPOL-1";
}
catch
{
}
return 1.ToString();
}
return maxString; return maxString;
} }
public static void ResetIdentifiers(IList<DatabaseEntity> sublist)
{
List<DatabaseEntity> tmpList = new List<DatabaseEntity>(sublist);
sublist.Clear();
foreach(ISublistElement element in tmpList)
{
element.Identifier = DatabaseEntity.GetNewIdentifier(sublist);
sublist.Add(element as DatabaseEntity);
}
}
#endregion #endregion
#region IEquatable<T> implementation #region IEquatable<T> implementation

View File

@ -15,11 +15,11 @@ namespace bsmd.database
public class HAZ : DatabaseEntity, ISublistContainer public class HAZ : DatabaseEntity, ISublistContainer
{ {
private List<IMDGPosition> imdgPositions = new List<IMDGPosition>(); private List<DatabaseEntity> imdgPositions = new List<DatabaseEntity>();
private List<IBCPosition> ibcPositions = new List<IBCPosition>(); private List<DatabaseEntity> ibcPositions = new List<DatabaseEntity>();
private List<IGCPosition> igcPositions = new List<IGCPosition>(); private List<DatabaseEntity> igcPositions = new List<DatabaseEntity>();
private List<IMSBCPosition> imsbcPositions = new List<IMSBCPosition>(); private List<DatabaseEntity> imsbcPositions = new List<DatabaseEntity>();
private List<MARPOL_Annex_I_Position> marpolPositions = new List<MARPOL_Annex_I_Position>(); private List<DatabaseEntity> marpolPositions = new List<DatabaseEntity>();
private bool _isDeparture; private bool _isDeparture;
public HAZ() public HAZ()
@ -72,15 +72,15 @@ namespace bsmd.database
[ENI2Validation] [ENI2Validation]
public string DPGContactPhone { get; set; } public string DPGContactPhone { get; set; }
public List<IMDGPosition> IMDGPositions { get { return this.imdgPositions; } } public List<DatabaseEntity> IMDGPositions { get { return this.imdgPositions; } }
public List<IBCPosition> IBCPositions { get { return this.ibcPositions; } } public List<DatabaseEntity> IBCPositions { get { return this.ibcPositions; } }
public List<IGCPosition> IGCPositions { get { return this.igcPositions; } } public List<DatabaseEntity> IGCPositions { get { return this.igcPositions; } }
public List<IMSBCPosition> IMSBCPositions { get { return this.imsbcPositions; } } public List<DatabaseEntity> IMSBCPositions { get { return this.imsbcPositions; } }
public List<MARPOL_Annex_I_Position> MARPOLPositions { get { return this.marpolPositions; } } public List<DatabaseEntity> MARPOLPositions { get { return this.marpolPositions; } }
// selektor HAZA / HAZD // selektor HAZA / HAZD
[ShowReport] [ShowReport]

View File

@ -100,7 +100,7 @@ namespace bsmd.database
} }
else else
{ {
scmd.CommandText = string.Format("UPDATE {0} SET InfectedAreaPort = @P2, InfectedAreaDate = @P3 " + scmd.CommandText = string.Format("UPDATE {0} SET InfectedAreaPort = @P2, InfectedAreaDate = @P3, Identifier = @P4 " +
"WHERE Id = @ID", this.Tablename); "WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithNullableValue("@ID", this.Id); scmd.Parameters.AddWithNullableValue("@ID", this.Id);
} }

View File

@ -160,7 +160,8 @@ namespace bsmd.database
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET CargoHandlingType = @P2, CargoCodeNST = @P3, CargoNumberOfItems = @P4, " + scmd.CommandText = string.Format("UPDATE {0} SET CargoHandlingType = @P2, CargoCodeNST = @P3, CargoNumberOfItems = @P4, " +
"CargoGrossQuantity_TNE = @P5, PortOfLoading = @P6, PortOfDischarge = @P7, CargoLACode = @P9, CargoCodeNST_3 = @P10 WHERE Id = @ID", this.Tablename); "CargoGrossQuantity_TNE = @P5, PortOfLoading = @P6, PortOfDischarge = @P7, CargoLACode = @P9, CargoCodeNST_3 = @P10, " +
"Identifier = @P8 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -101,8 +101,8 @@ namespace bsmd.database
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET PortFacilityPortName = @P2, PortFacilityPortCountry = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET PortFacilityPortName = @P2, PortFacilityPortCountry = @P3, " +
"PortFacilityPortLoCode = @P4, PortFacilityDateOfArrival = @P5, PortFacilityDateOfDeparture = @P6," + "PortFacilityPortLoCode = @P4, PortFacilityDateOfArrival = @P5, PortFacilityDateOfDeparture = @P6," +
"PortFacilityShipSecurityLevel = @P7, PortFacilitySecurityMattersToReport = @P8, PortFacilityGISISCode = @P9 " + "PortFacilityShipSecurityLevel = @P7, PortFacilitySecurityMattersToReport = @P8, PortFacilityGISISCode = @P9, " +
" WHERE Id = @ID", this.Tablename); "Identifier = @P10 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -18,28 +18,29 @@ namespace bsmd.database
public class MDH : DatabaseEntity, ISublistContainer public class MDH : DatabaseEntity, ISublistContainer
{ {
private List<PortOfCallLast30Days> portOfCallLast30Days = new List<PortOfCallLast30Days>(); private List<DatabaseEntity> portOfCallLast30Days = new List<DatabaseEntity>();
private List<SanitaryMeasuresDetail> sanitaryMeasuresDetails = new List<SanitaryMeasuresDetail>(); private List<DatabaseEntity> sanitaryMeasuresDetails = new List<DatabaseEntity>();
private List<StowawaysJoiningLocation> stowawaysJoiningLocations = new List<database.StowawaysJoiningLocation>(); private List<DatabaseEntity> stowawaysJoiningLocations = new List<DatabaseEntity>();
private List<InfectedArea> infectedAreas = new List<InfectedArea>(); private List<DatabaseEntity> infectedAreas = new List<DatabaseEntity>();
public MDH() public MDH()
{ {
this.tablename = "[dbo].[MDH]"; this.tablename = "[dbo].[MDH]";
this.MDHSimplification = false;
} }
#region Properties #region Properties
public List<PortOfCallLast30Days> PortOfCallLast30Days { get { return this.portOfCallLast30Days; } } public List<DatabaseEntity> PortOfCallLast30Days { get { return this.portOfCallLast30Days; } }
public List<SanitaryMeasuresDetail> SanitaryMeasuresDetails { get { return this.sanitaryMeasuresDetails; } } public List<DatabaseEntity> SanitaryMeasuresDetails { get { return this.sanitaryMeasuresDetails; } }
public List<StowawaysJoiningLocation> StowawaysJoiningLocations { get { return this.stowawaysJoiningLocations; } } public List<DatabaseEntity> StowawaysJoiningLocations { get { return this.stowawaysJoiningLocations; } }
public List<InfectedArea> InfectedAreas { get { return this.infectedAreas; } } public List<DatabaseEntity> InfectedAreas { get { return this.infectedAreas; } }
[ShowReport] [ShowReport]
[Validation1(ValidationCode.NOT_NULL)] [Validation1(ValidationCode.NOT_NULL)]
@ -191,7 +192,7 @@ namespace bsmd.database
{ {
if (i > 0) if (i > 0)
sb.Append(", "); sb.Append(", ");
sb.Append(this.StowawaysJoiningLocations[i].StowawayJoiningLocation); sb.Append(((StowawaysJoiningLocation)this.StowawaysJoiningLocations[i]).StowawayJoiningLocation);
} }
return sb.ToString(); return sb.ToString();
} }

View File

@ -17,7 +17,7 @@ namespace bsmd.database
public class NOA_NOD : DatabaseEntity, ISublistContainer public class NOA_NOD : DatabaseEntity, ISublistContainer
{ {
List<CallPurpose> callPurposes = new List<CallPurpose>(); List<DatabaseEntity> callPurposes = new List<DatabaseEntity>();
public NOA_NOD() public NOA_NOD()
{ {
@ -37,7 +37,7 @@ namespace bsmd.database
public DateTime? ETDFromPortOfCall { get; set; } public DateTime? ETDFromPortOfCall { get; set; }
[Validation1(ValidationCode.NOT_NULL)] [Validation1(ValidationCode.NOT_NULL)]
public List<CallPurpose> CallPurposes { get { return this.callPurposes; } } public List<DatabaseEntity> CallPurposes { get { return this.callPurposes; } }
[ShowReport] [ShowReport]
[Validation2(ValidationCode.NOT_NULL)] [Validation2(ValidationCode.NOT_NULL)]

View File

@ -170,7 +170,7 @@ namespace bsmd.database
"PassengerPlaceOfBirth = @P4, PassengerDateOfBirth = @P5, PassengerGender = @P6," + "PassengerPlaceOfBirth = @P4, PassengerDateOfBirth = @P5, PassengerGender = @P6," +
"PassengerNationality = @P7, PassengerIdentityDocumentType = @P8, PassengerIdentityDocumentId = @P9, " + "PassengerNationality = @P7, PassengerIdentityDocumentType = @P8, PassengerIdentityDocumentId = @P9, " +
"PassengerVisaNumber = @P10, PassengerPortOfEmbarkation = @P11, PassengerPortOfDisembarkation = @P12, " + "PassengerVisaNumber = @P10, PassengerPortOfEmbarkation = @P11, PassengerPortOfDisembarkation = @P12, " +
"PassengerInTransit = @P13, IsDeparture = @P15 WHERE Id = @ID", this.Tablename); "PassengerInTransit = @P13, IsDeparture = @P15, Identifier = @P14 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -141,7 +141,7 @@ namespace bsmd.database
else else
{ {
scmd.CommandText = string.Format("UPDATE {0} SET PortOfCallLast30DaysLocode = @P2, PortOfCallLast30DaysDateOfDeparture = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET PortOfCallLast30DaysLocode = @P2, PortOfCallLast30DaysDateOfDeparture = @P3, " +
"PortOfCallLast30DaysCrewMembersJoined = @P4 WHERE Id = @ID", this.Tablename); "PortOfCallLast30DaysCrewMembersJoined = @P4, Identifier = @P5 WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithNullableValue("@ID", this.Id); scmd.Parameters.AddWithNullableValue("@ID", this.Id);
} }
} }

View File

@ -53,7 +53,7 @@ namespace bsmd.database
} }
else else
{ {
cmd.CommandText = string.Format("UPDATE {0} SET PortOfCallLast30DaysCrewJoinedShipName = @P2 WHERE Id = @ID", this.Tablename); cmd.CommandText = string.Format("UPDATE {0} SET PortOfCallLast30DaysCrewJoinedShipName = @P2, Identifier = @P3 WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithValue("@ID", this.Id); scmd.Parameters.AddWithValue("@ID", this.Id);
} }

View File

@ -67,7 +67,7 @@ namespace bsmd.database
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET PortOfItineraryName = @P2, PortOfItineraryETA = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET PortOfItineraryName = @P2, PortOfItineraryETA = @P3, " +
"PortOfItineraryLocode = @P5 WHERE Id = @ID", this.Tablename); "PortOfItineraryLocode = @P5, Identifier = @P4 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyCompany("Informatikbüro Daniel Schick")]
[assembly: AssemblyProduct("BSMD NSW interface")] [assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("3.7.2")] [assembly: AssemblyInformationalVersion("3.7.3")]
[assembly: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyCopyright("Copyright © 2014-2017 Informatikbüro Daniel Schick. All rights reserved.")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]

View File

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.7.2.*")] [assembly: AssemblyVersion("3.7.3.*")]

View File

@ -17,13 +17,14 @@ namespace bsmd.database
public class SEC : DatabaseEntity, ISublistContainer public class SEC : DatabaseEntity, ISublistContainer
{ {
private List<LastTenPortFacilitiesCalled> ltpfc = new List<LastTenPortFacilitiesCalled>(); private List<DatabaseEntity> ltpfc = new List<DatabaseEntity>();
private List<ShipToShipActivitiesDuringLastTenPortFacilitiesCalled> lsts = new List<ShipToShipActivitiesDuringLastTenPortFacilitiesCalled>(); private List<DatabaseEntity> lsts = new List<DatabaseEntity>();
public SEC() public SEC()
{ {
this.tablename = "[dbo].[SEC]"; this.tablename = "[dbo].[SEC]";
this.SECSimplification = false;
} }
#region Properties #region Properties
@ -151,9 +152,9 @@ namespace bsmd.database
[ENI2Validation] [ENI2Validation]
public DateTime? KielCanalPassagePlannedOutgoing { get; set; } public DateTime? KielCanalPassagePlannedOutgoing { get; set; }
public List<LastTenPortFacilitiesCalled> LastTenPortFacilitesCalled { get { return this.ltpfc; } } public List<DatabaseEntity> LastTenPortFacilitesCalled { get { return this.ltpfc; } }
public List<ShipToShipActivitiesDuringLastTenPortFacilitiesCalled> ShipToShipActivitiesDuringLastTenPortFacilitiesCalled { get { return this.lsts; } } public List<DatabaseEntity> ShipToShipActivitiesDuringLastTenPortFacilitiesCalled { get { return this.lsts; } }
#endregion #endregion

View File

@ -76,8 +76,8 @@ namespace bsmd.database
else else
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET ServiceName = @P2, ServiceBeneficiary = @P3, ServiceInvoiceRecipient = @P4 " + scmd.CommandText = string.Format("UPDATE {0} SET ServiceName = @P2, ServiceBeneficiary = @P3, ServiceInvoiceRecipient = @P4, " +
"WHERE Id = @ID", this.Tablename); "Identifier = @P5 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -134,7 +134,7 @@ namespace bsmd.database
{ {
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET Name = @P2, Quantity = @P3, QuantityUnit = @P4, " + scmd.CommandText = string.Format("UPDATE {0} SET Name = @P2, Quantity = @P3, QuantityUnit = @P4, " +
"LocationOnBoard = @P5, OfficialUse = @P6 WHERE Id = @ID", this.Tablename); "LocationOnBoard = @P5, OfficialUse = @P6, Identifier = @P7 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -67,7 +67,7 @@ namespace bsmd.database
else else
{ {
scmd.CommandText = string.Format("UPDATE {0} SET SanitaryMeasuresType = @P2, SanitaryMeasuresLocation = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET SanitaryMeasuresType = @P2, SanitaryMeasuresLocation = @P3, " +
"SanitaryMeasuresDate = @P4 WHERE Id = @ID", this.Tablename); "SanitaryMeasuresDate = @P4, Identifier = @P5 WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithNullableValue("@ID", this.Id); scmd.Parameters.AddWithNullableValue("@ID", this.Id);
} }
} }

View File

@ -99,7 +99,7 @@ namespace bsmd.database
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET ShipToShipActivityLocationName = @P2, ShipToShipActivityLocationLoCode = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET ShipToShipActivityLocationName = @P2, ShipToShipActivityLocationLoCode = @P3, " +
"ShipToShipActivityLocationCoordinatesLatitude = @P4, ShipToShipActivityLocationCoordinatesLongitude = @P5, ShipToShipActivityDateFrom = @P6," + "ShipToShipActivityLocationCoordinatesLatitude = @P4, ShipToShipActivityLocationCoordinatesLongitude = @P5, ShipToShipActivityDateFrom = @P6," +
"ShipToShipActivityDateTo = @P7, ShipToShipActivityType = @P8, ShipToShipActivitySecurityMattersToReport = @P9 " + "ShipToShipActivityDateTo = @P7, ShipToShipActivityType = @P8, ShipToShipActivitySecurityMattersToReport = @P9, Identifier = @P10 " +
" WHERE Id = @ID", this.Tablename); " WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -55,7 +55,7 @@ namespace bsmd.database
} }
else else
{ {
scmd.CommandText = string.Format("UPDATE {0} SET StowawaysJoiningLocation = @P2 WHERE Id = @ID", this.Tablename); scmd.CommandText = string.Format("UPDATE {0} SET StowawaysJoiningLocation = @P2, Identifier = @P3 WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithNullableValue("@ID", this.Id); scmd.Parameters.AddWithNullableValue("@ID", this.Id);
} }
} }

View File

@ -52,7 +52,7 @@ namespace bsmd.database
} }
else else
{ {
cmd.CommandText = string.Format("UPDATE {0} SET SubsidiaryRisk = @P2 WHERE Id = @ID", this.Tablename); cmd.CommandText = string.Format("UPDATE {0} SET SubsidiaryRisk = @P2, Identifier = @P3 WHERE Id = @ID", this.Tablename);
scmd.Parameters.AddWithValue("@ID", this.Id); scmd.Parameters.AddWithValue("@ID", this.Id);
} }
} }

View File

@ -164,7 +164,7 @@ namespace bsmd.database
"TowageOnArrivalOperatorPhone = @P9, TowageOnArrivalOperatorFax = @P10, TowageOnArrivalOperatorEmail = @P11, " + "TowageOnArrivalOperatorPhone = @P9, TowageOnArrivalOperatorFax = @P10, TowageOnArrivalOperatorEmail = @P11, " +
"TowageOnArrivalGrossTonnage = @P12, TowageOnArrivalLengthOverall_MTR = @P13, " + "TowageOnArrivalGrossTonnage = @P12, TowageOnArrivalLengthOverall_MTR = @P13, " +
"TowageOnArrivalBeam_MTR = @P14, TowageOnArrivalPurposeOfCall = @P15, TowageOnArrivalDraught_DMT = @P16, " + "TowageOnArrivalBeam_MTR = @P14, TowageOnArrivalPurposeOfCall = @P15, TowageOnArrivalDraught_DMT = @P16, " +
"TowageOnArrivalRemarks = @P17 WHERE Id = @ID", this.Tablename); "TowageOnArrivalRemarks = @P17, Identifier = @P18 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -148,7 +148,7 @@ namespace bsmd.database
"TowageOnDepartureOperatorPhone = @P9, TowageOnDepartureOperatorFax = @P10, TowageOnDepartureOperatorEmail = @P11, " + "TowageOnDepartureOperatorPhone = @P9, TowageOnDepartureOperatorFax = @P10, TowageOnDepartureOperatorEmail = @P11, " +
"TowageOnDepartureLengthOverall_MTR = @P12, " + "TowageOnDepartureLengthOverall_MTR = @P12, " +
"TowageOnDepartureBeam_MTR = @P13, TowageOnDepartureDraught_DMT = @P14, " + "TowageOnDepartureBeam_MTR = @P13, TowageOnDepartureDraught_DMT = @P14, " +
"TowageOnDepartureRemarks = @P15 WHERE Id = @ID", this.Tablename); "TowageOnDepartureRemarks = @P15, Identifier = @P16 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -44,16 +44,14 @@ namespace bsmd.database
public ConditionOperatorEnum ConditionOperator { get; set; } public ConditionOperatorEnum ConditionOperator { get; set; }
public string Value { get; set; } public string Value { get; set; }
public string ErrorMessage { get; set; }
#endregion #endregion
#region static methods #region static methods
public static bool? CheckConditions(MessageCore core, List<Message> messages, ConditionGroup cGroup, out string message) public static bool? CheckConditions(MessageCore core, List<Message> messages, ConditionGroup cGroup, List<ValidationField> failedFieldList, out string message)
{ {
bool? result = null; bool? result = null;
message = ""; message = "";
@ -70,7 +68,7 @@ namespace bsmd.database
string errorMessage = condition.ErrorMessage; string errorMessage = cGroup.ErrorMessage;
if (otherargs != null) if (otherargs != null)
errorMessage = string.Format(errorMessage, otherargs); errorMessage = string.Format(errorMessage, otherargs);
@ -89,7 +87,7 @@ namespace bsmd.database
foreach (ConditionGroup subGroup in cGroup.SubGroups) foreach (ConditionGroup subGroup in cGroup.SubGroups)
{ {
string subMessage = ""; string subMessage = "";
bool? subResult = ValidationCondition.CheckConditions(core, messages, subGroup, out subMessage); bool? subResult = ValidationCondition.CheckConditions(core, messages, subGroup, failedFieldList, out subMessage);
if (!subResult.HasValue) // an error occurred evaluating this element if (!subResult.HasValue) // an error occurred evaluating this element
{ {
return subResult; return subResult;
@ -316,6 +314,8 @@ namespace bsmd.database
set; set;
} }
public string ErrorMessage { get; set; }
[XmlIgnore] [XmlIgnore]
public ObservableCollection<ConditionGroup> SubGroups public ObservableCollection<ConditionGroup> SubGroups
{ {

View File

@ -19,7 +19,7 @@ namespace bsmd.database
private List<WasteDisposalServiceProvider> wdsp = new List<WasteDisposalServiceProvider>(); private List<WasteDisposalServiceProvider> wdsp = new List<WasteDisposalServiceProvider>();
private List<Waste> waste = new List<Waste>(); private List<DatabaseEntity> waste = new List<DatabaseEntity>();
private static readonly int[] dkWasteCodes = { 1100, 1200, 1300, 2100, 2200, 2300, 2311, 2308, 2300, 2309, 3000, 5100, 5200, 5300, 2300 }; private static readonly int[] dkWasteCodes = { 1100, 1200, 1300, 2100, 2200, 2300, 2311, 2308, 2300, 2309, 3000, 5100, 5200, 5300, 2300 };
private static readonly string[] dkWasteTypes = { "Waste oils - Sludge", "Waste oils - Bilge water", "Waste oils - Other", "Garbage - Food waste", "Garbage - Plastic", "Garbage - Other", "Garbage - Other - Cooking oil", "Garbage - Other - Incinerator ashes and clinkers", "Garbage - Other", "Garbage - Other - Animal carcasses", "Sewage", "Cargo residues - Marpol Annex I - Other", "Cargo residues - Marpol Annex II - Other", "Cargo residues - Marpol Annex V - Other", "Garbage - Other" }; private static readonly string[] dkWasteTypes = { "Waste oils - Sludge", "Waste oils - Bilge water", "Waste oils - Other", "Garbage - Food waste", "Garbage - Plastic", "Garbage - Other", "Garbage - Other - Cooking oil", "Garbage - Other - Incinerator ashes and clinkers", "Garbage - Other", "Garbage - Other - Animal carcasses", "Sewage", "Cargo residues - Marpol Annex I - Other", "Cargo residues - Marpol Annex II - Other", "Cargo residues - Marpol Annex V - Other", "Garbage - Other" };
@ -27,6 +27,7 @@ namespace bsmd.database
public WAS() public WAS()
{ {
this.tablename = "[dbo].[WAS]"; this.tablename = "[dbo].[WAS]";
this.WasteDisposalValidExemption = false;
} }
#region Properties #region Properties
@ -67,7 +68,7 @@ namespace bsmd.database
[ENI2Validation] [ENI2Validation]
public bool? ConfirmationOfSufficiency { get; set; } public bool? ConfirmationOfSufficiency { get; set; }
public List<Waste> Waste { get { return this.waste; } } public List<DatabaseEntity> Waste { get { return this.waste; } }
public List<WasteDisposalServiceProvider> WasteDisposalServiceProvider { get { return this.wdsp; } } public List<WasteDisposalServiceProvider> WasteDisposalServiceProvider { get { return this.wdsp; } }

View File

@ -152,8 +152,8 @@ namespace bsmd.database
scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.Parameters.AddWithValue(@"ID", this.Id);
scmd.CommandText = string.Format("UPDATE {0} SET WasteType = @P2, WasteDescription = @P3, " + scmd.CommandText = string.Format("UPDATE {0} SET WasteType = @P2, WasteDescription = @P3, " +
"WasteDisposalAmount_MTQ = @P4, WasteCapacity_MTQ = @P5, WasteAmountRetained_MTQ = @P6," + "WasteDisposalAmount_MTQ = @P4, WasteCapacity_MTQ = @P5, WasteAmountRetained_MTQ = @P6," +
"WasteDisposalPort = @P7, WasteAmountGeneratedTillNextPort_MTQ = @P8, WasteDisposedAtLastPort_MTQ = @P9 " + "WasteDisposalPort = @P7, WasteAmountGeneratedTillNextPort_MTQ = @P8, WasteDisposedAtLastPort_MTQ = @P9, " +
"WHERE Id = @ID", this.Tablename); "Identifier = @P10 WHERE Id = @ID", this.Tablename);
} }
} }

View File

@ -185,8 +185,9 @@ namespace bsmd.dbh
{ {
choiceList.Add(ItemsChoiceType.CallPurpose); choiceList.Add(ItemsChoiceType.CallPurpose);
RootNOA_NODCallPurpose rnncp = new RootNOA_NODCallPurpose(); RootNOA_NODCallPurpose rnncp = new RootNOA_NODCallPurpose();
rnncp.CallPurposeCode = noa_nod.CallPurposes[i].CallPurposeCode; CallPurpose callPurpose = noa_nod.CallPurposes[i] as CallPurpose;
rnncp.CallPurposeDescription = noa_nod.CallPurposes[i].CallPurposeDescription; rnncp.CallPurposeCode = callPurpose.CallPurposeCode;
rnncp.CallPurposeDescription = callPurpose.CallPurposeDescription;
choices.Add(rnncp); choices.Add(rnncp);
} }
} }
@ -328,17 +329,18 @@ namespace bsmd.dbh
choiceType1s.Add(ItemsChoiceType1.LastTenPortFacilitiesCalled); choiceType1s.Add(ItemsChoiceType1.LastTenPortFacilitiesCalled);
RootSECLastTenPortFacilitiesCalled lastTen = new RootSECLastTenPortFacilitiesCalled(); RootSECLastTenPortFacilitiesCalled lastTen = new RootSECLastTenPortFacilitiesCalled();
secItems.Add(lastTen); secItems.Add(lastTen);
lastTen.PortFacilityPortName = sec.LastTenPortFacilitesCalled[i].PortFacilityPortName; LastTenPortFacilitiesCalled lastTenPortFacilitiesCalled = sec.LastTenPortFacilitesCalled[i] as LastTenPortFacilitiesCalled;
lastTen.PortFacilityPortCountry = sec.LastTenPortFacilitesCalled[i].PortFacilityPortCountry; lastTen.PortFacilityPortName = lastTenPortFacilitiesCalled.PortFacilityPortName;
lastTen.PortFacilityPortLoCode = sec.LastTenPortFacilitesCalled[i].PortFacilityPortLoCode; lastTen.PortFacilityPortCountry = lastTenPortFacilitiesCalled.PortFacilityPortCountry;
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.HasValue) lastTen.PortFacilityPortLoCode = lastTenPortFacilitiesCalled.PortFacilityPortLoCode;
lastTen.PortFacilityDateOfArrival = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfArrival.Value; if (lastTenPortFacilitiesCalled.PortFacilityDateOfArrival.HasValue)
if (sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.HasValue) lastTen.PortFacilityDateOfArrival = lastTenPortFacilitiesCalled.PortFacilityDateOfArrival.Value;
lastTen.PortFacilityDateOfDeparture = sec.LastTenPortFacilitesCalled[i].PortFacilityDateOfDeparture.Value; if (lastTenPortFacilitiesCalled.PortFacilityDateOfDeparture.HasValue)
if (sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel.HasValue) lastTen.PortFacilityDateOfDeparture = lastTenPortFacilitiesCalled.PortFacilityDateOfDeparture.Value;
lastTen.PortFacilityShipSecurityLevel = sec.LastTenPortFacilitesCalled[i].PortFacilityShipSecurityLevel.Value; if (lastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.HasValue)
lastTen.PortFacilitySecurityMattersToReport = sec.LastTenPortFacilitesCalled[i].PortFacilitySecurityMattersToReport; lastTen.PortFacilityShipSecurityLevel = lastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.Value;
lastTen.PortFacilityGISISCode = sec.LastTenPortFacilitesCalled[i].PortFacilityGISISCode; lastTen.PortFacilitySecurityMattersToReport = lastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport;
lastTen.PortFacilityGISISCode = lastTenPortFacilitiesCalled.PortFacilityGISISCode;
} }
for (int i = 0; i < sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count; i++) for (int i = 0; i < sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Count; i++)
@ -346,24 +348,25 @@ namespace bsmd.dbh
choiceType1s.Add(ItemsChoiceType1.ShipToShipActivities); choiceType1s.Add(ItemsChoiceType1.ShipToShipActivities);
RootSECShipToShipActivities s2s = new RootSECShipToShipActivities(); RootSECShipToShipActivities s2s = new RootSECShipToShipActivities();
secItems.Add(s2s); secItems.Add(s2s);
ShipToShipActivitiesDuringLastTenPortFacilitiesCalled shipToShip = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i] as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled;
s2s.ShipToShipActivityLocation = new RootSECShipToShipActivitiesShipToShipActivityLocation(); s2s.ShipToShipActivityLocation = new RootSECShipToShipActivitiesShipToShipActivityLocation();
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationName = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationName; s2s.ShipToShipActivityLocation.ShipToShipActivityLocationName = shipToShip.ShipToShipActivityLocationName;
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationLoCode = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationLoCode; s2s.ShipToShipActivityLocation.ShipToShipActivityLocationLoCode = shipToShip.ShipToShipActivityLocationLoCode;
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates = new RootSECShipToShipActivitiesShipToShipActivityLocationShipToShipActivityLocationCoordinates(); s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates = new RootSECShipToShipActivitiesShipToShipActivityLocationShipToShipActivityLocationCoordinates();
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude.HasValue) if (shipToShip.ShipToShipActivityLocationCoordinatesLatitude.HasValue)
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLatitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLatitude.Value; s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLatitude = shipToShip.ShipToShipActivityLocationCoordinatesLatitude.Value;
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude.HasValue) if (shipToShip.ShipToShipActivityLocationCoordinatesLongitude.HasValue)
s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLongitude = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityLocationCoordinatesLongitude.Value; s2s.ShipToShipActivityLocation.ShipToShipActivityLocationCoordinates.ShipToShipActivityLocationCoordinatesLongitude = shipToShip.ShipToShipActivityLocationCoordinatesLongitude.Value;
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.HasValue) if (shipToShip.ShipToShipActivityDateFrom.HasValue)
s2s.ShipToShipActivityDateFrom = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateFrom.Value; s2s.ShipToShipActivityDateFrom = shipToShip.ShipToShipActivityDateFrom.Value;
if (sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.HasValue) if (shipToShip.ShipToShipActivityDateTo.HasValue)
s2s.ShipToShipActivityDateTo = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityDateTo.Value; s2s.ShipToShipActivityDateTo = shipToShip.ShipToShipActivityDateTo.Value;
int activityType; int activityType;
if (!Int32.TryParse(sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityType, out activityType)) if (!Int32.TryParse(shipToShip.ShipToShipActivityType, out activityType))
activityType = NOA_NOD.getCallPurposeCodeFromDescription(sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivityType) ?? 0; activityType = NOA_NOD.getCallPurposeCodeFromDescription(shipToShip.ShipToShipActivityType) ?? 0;
s2s.ShipToShipActivityType = activityType; s2s.ShipToShipActivityType = activityType;
s2s.ShipToShipActivitySecurityMattersToReport = sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled[i].ShipToShipActivitySecurityMattersToReport; s2s.ShipToShipActivitySecurityMattersToReport = shipToShip.ShipToShipActivitySecurityMattersToReport;
} }
} }
@ -388,9 +391,10 @@ namespace bsmd.dbh
for (int i = 0; i < bpol.PortOfItineraries.Count; i++) for (int i = 0; i < bpol.PortOfItineraries.Count; i++)
{ {
RootBPOLPortOfItinerary port = new RootBPOLPortOfItinerary(); RootBPOLPortOfItinerary port = new RootBPOLPortOfItinerary();
if (bpol.PortOfItineraries[i].PortOfItineraryETA.HasValue) PortOfItinerary portOfItinerary = bpol.PortOfItineraries[i] as PortOfItinerary;
port.PortOfItineraryETA = bpol.PortOfItineraries[i].PortOfItineraryETA.Value.ToDBHDateString(); if (portOfItinerary.PortOfItineraryETA.HasValue)
port.PortOfItineraryName = bpol.PortOfItineraries[i].PortOfItineraryName; port.PortOfItineraryETA = portOfItinerary.PortOfItineraryETA.Value.ToDBHDateString();
port.PortOfItineraryName = portOfItinerary.PortOfItineraryName;
poiArray[i] = port; poiArray[i] = port;
} }
@ -868,19 +872,20 @@ namespace bsmd.dbh
for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++) for (int i = 0; i < mdh.PortOfCallLast30Days.Count; i++)
{ {
l30d.PortOfCallLast30Days[i] = new RootMDHPortsOfCallLast30DaysPortOfCallLast30Days(); l30d.PortOfCallLast30Days[i] = new RootMDHPortsOfCallLast30DaysPortOfCallLast30Days();
PortOfCallLast30Days portOfCallLast30Days = mdh.PortOfCallLast30Days[i] as PortOfCallLast30Days;
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip = new RootMDHPortsOfCallLast30DaysPortOfCallLast30DaysPortOfCallLast30DaysCrewJoinedShip(); l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip = new RootMDHPortsOfCallLast30DaysPortOfCallLast30DaysPortOfCallLast30DaysCrewJoinedShip();
if (mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count > 0) if (portOfCallLast30Days.CrewJoinedShip.Count > 0)
{ {
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName = new string[mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count]; l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName = new string[portOfCallLast30Days.CrewJoinedShip.Count];
for (int j = 0; j < mdh.PortOfCallLast30Days[i].CrewJoinedShip.Count; j++) for (int j = 0; j < portOfCallLast30Days.CrewJoinedShip.Count; j++)
{ {
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName[j] = mdh.PortOfCallLast30Days[i].CrewJoinedShip[j].PortOfCallLast30DaysCrewJoinedShipName; l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewJoinedShip.PortOfCallLast30DaysCrewJoinedShipName[j] = portOfCallLast30Days.CrewJoinedShip[j].PortOfCallLast30DaysCrewJoinedShipName;
} }
} }
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N; l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysCrewMembersJoined = portOfCallLast30Days.PortOfCallLast30DaysCrewMembersJoined ?? false ? RootSECValidISSCOnBoard.Y : RootSECValidISSCOnBoard.N;
if (mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.HasValue) if (portOfCallLast30Days.PortOfCallLast30DaysDateOfDeparture.HasValue)
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture.Value; l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysDateOfDeparture = portOfCallLast30Days.PortOfCallLast30DaysDateOfDeparture.Value;
l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode = mdh.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode; l30d.PortOfCallLast30Days[i].PortOfCallLast30DaysLocode = portOfCallLast30Days.PortOfCallLast30DaysLocode;
} }
} }
@ -946,7 +951,7 @@ namespace bsmd.dbh
{ {
choiceType3s.Add(ItemsChoiceType3.Waste); choiceType3s.Add(ItemsChoiceType3.Waste);
RootWASWaste rww = new RootWASWaste(); RootWASWaste rww = new RootWASWaste();
Waste waste = was.Waste[j]; Waste waste = was.Waste[j] as Waste;
if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type if ((waste.WasteType ?? 0) == 0) continue; // not a valid waste type
rww.WasteType = new RootWASWasteWasteType(); rww.WasteType = new RootWASWasteWasteType();
rww.WasteType.WasteCode = waste.WasteType ?? 0; rww.WasteType.WasteCode = waste.WasteType ?? 0;
@ -1080,7 +1085,7 @@ namespace bsmd.dbh
dpgOnArrival.DPGItemIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition[haz.IMDGPositions.Count]; dpgOnArrival.DPGItemIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition[haz.IMDGPositions.Count];
for (int i = 0; i < haz.IMDGPositions.Count; i++) for (int i = 0; i < haz.IMDGPositions.Count; i++)
{ {
bsmd.database.IMDGPosition imdgPos = haz.IMDGPositions[i]; bsmd.database.IMDGPosition imdgPos = haz.IMDGPositions[i] as bsmd.database.IMDGPosition;
bsmd.dbh.DBHWebReference.IMDGPosition rootIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition(); bsmd.dbh.DBHWebReference.IMDGPosition rootIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition();
rootIMDG.UNNumber = imdgPos.UNNumber; rootIMDG.UNNumber = imdgPos.UNNumber;
@ -1159,7 +1164,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IBCPositions.Count; i++) for (int i = 0; i < haz.IBCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IBCPosition rootIBC = new bsmd.dbh.DBHWebReference.IBCPosition(); bsmd.dbh.DBHWebReference.IBCPosition rootIBC = new bsmd.dbh.DBHWebReference.IBCPosition();
bsmd.database.IBCPosition ibcPos = haz.IBCPositions[i]; bsmd.database.IBCPosition ibcPos = haz.IBCPositions[i] as bsmd.database.IBCPosition;
rootIBC.ProductName = ibcPos.ProductName; rootIBC.ProductName = ibcPos.ProductName;
if (ibcPos.PollutionCategory.HasValue) if (ibcPos.PollutionCategory.HasValue)
@ -1192,7 +1197,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IGCPositions.Count; i++) for (int i = 0; i < haz.IGCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IGCPosition rootIGC = new bsmd.dbh.DBHWebReference.IGCPosition(); bsmd.dbh.DBHWebReference.IGCPosition rootIGC = new bsmd.dbh.DBHWebReference.IGCPosition();
bsmd.database.IGCPosition igcPos = haz.IGCPositions[i]; bsmd.database.IGCPosition igcPos = haz.IGCPositions[i] as bsmd.database.IGCPosition;
rootIGC.UNNumber = igcPos.UNNumber; rootIGC.UNNumber = igcPos.UNNumber;
rootIGC.IMOClass = igcPos.IMOClass; rootIGC.IMOClass = igcPos.IMOClass;
@ -1216,7 +1221,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IMSBCPositions.Count; i++) for (int i = 0; i < haz.IMSBCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IMSBCPosition rootIMSBC = new bsmd.dbh.DBHWebReference.IMSBCPosition(); bsmd.dbh.DBHWebReference.IMSBCPosition rootIMSBC = new bsmd.dbh.DBHWebReference.IMSBCPosition();
bsmd.database.IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; bsmd.database.IMSBCPosition imsbcPos = haz.IMSBCPositions[i] as bsmd.database.IMSBCPosition;
rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName;
if (imsbcPos.MHB.HasValue) if (imsbcPos.MHB.HasValue)
@ -1242,7 +1247,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.MARPOLPositions.Count; i++) for (int i = 0; i < haz.MARPOLPositions.Count; i++)
{ {
DBHWebReference.MARPOLPosition rootMarpol = new DBHWebReference.MARPOLPosition(); DBHWebReference.MARPOLPosition rootMarpol = new DBHWebReference.MARPOLPosition();
MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i] as MARPOL_Annex_I_Position;
rootMarpol.Name = marpolPos.Name; rootMarpol.Name = marpolPos.Name;
if (marpolPos.FlashpointInformation.HasValue) if (marpolPos.FlashpointInformation.HasValue)
@ -1313,7 +1318,7 @@ namespace bsmd.dbh
dpgOnDeparture.DPGItemIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition[haz.IMDGPositions.Count]; dpgOnDeparture.DPGItemIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition[haz.IMDGPositions.Count];
for (int i = 0; i < haz.IMDGPositions.Count; i++) for (int i = 0; i < haz.IMDGPositions.Count; i++)
{ {
bsmd.database.IMDGPosition imdgPos = haz.IMDGPositions[i]; bsmd.database.IMDGPosition imdgPos = haz.IMDGPositions[i] as bsmd.database.IMDGPosition;
bsmd.dbh.DBHWebReference.IMDGPosition rootIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition(); bsmd.dbh.DBHWebReference.IMDGPosition rootIMDG = new bsmd.dbh.DBHWebReference.IMDGPosition();
rootIMDG.UNNumber = imdgPos.UNNumber; rootIMDG.UNNumber = imdgPos.UNNumber;
@ -1392,7 +1397,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IBCPositions.Count; i++) for (int i = 0; i < haz.IBCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IBCPosition rootIBC = new bsmd.dbh.DBHWebReference.IBCPosition(); bsmd.dbh.DBHWebReference.IBCPosition rootIBC = new bsmd.dbh.DBHWebReference.IBCPosition();
bsmd.database.IBCPosition ibcPos = haz.IBCPositions[i]; bsmd.database.IBCPosition ibcPos = haz.IBCPositions[i] as bsmd.database.IBCPosition;
rootIBC.ProductName = ibcPos.ProductName; rootIBC.ProductName = ibcPos.ProductName;
if (ibcPos.PollutionCategory.HasValue) if (ibcPos.PollutionCategory.HasValue)
@ -1425,7 +1430,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IGCPositions.Count; i++) for (int i = 0; i < haz.IGCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IGCPosition rootIGC = new bsmd.dbh.DBHWebReference.IGCPosition(); bsmd.dbh.DBHWebReference.IGCPosition rootIGC = new bsmd.dbh.DBHWebReference.IGCPosition();
bsmd.database.IGCPosition igcPos = haz.IGCPositions[i]; bsmd.database.IGCPosition igcPos = haz.IGCPositions[i] as bsmd.database.IGCPosition;
rootIGC.UNNumber = igcPos.UNNumber; rootIGC.UNNumber = igcPos.UNNumber;
rootIGC.IMOClass = igcPos.IMOClass; rootIGC.IMOClass = igcPos.IMOClass;
@ -1449,7 +1454,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.IMSBCPositions.Count; i++) for (int i = 0; i < haz.IMSBCPositions.Count; i++)
{ {
bsmd.dbh.DBHWebReference.IMSBCPosition rootIMSBC = new bsmd.dbh.DBHWebReference.IMSBCPosition(); bsmd.dbh.DBHWebReference.IMSBCPosition rootIMSBC = new bsmd.dbh.DBHWebReference.IMSBCPosition();
bsmd.database.IMSBCPosition imsbcPos = haz.IMSBCPositions[i]; bsmd.database.IMSBCPosition imsbcPos = haz.IMSBCPositions[i] as bsmd.database.IMSBCPosition;
rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName; rootIMSBC.BulkCargoShippingName = imsbcPos.BulkCargoShippingName;
if (imsbcPos.MHB.HasValue) if (imsbcPos.MHB.HasValue)
@ -1475,7 +1480,7 @@ namespace bsmd.dbh
for (int i = 0; i < haz.MARPOLPositions.Count; i++) for (int i = 0; i < haz.MARPOLPositions.Count; i++)
{ {
MARPOLPosition rootMarpol = new MARPOLPosition(); MARPOLPosition rootMarpol = new MARPOLPosition();
MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i]; MARPOL_Annex_I_Position marpolPos = haz.MARPOLPositions[i] as MARPOL_Annex_I_Position;
rootMarpol.Name = marpolPos.Name; rootMarpol.Name = marpolPos.Name;
if (marpolPos.FlashpointInformation.HasValue) if (marpolPos.FlashpointInformation.HasValue)

View File

@ -36,6 +36,7 @@ namespace bsmd.hisnord
XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/"; XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace ns15 = "http://api.national-single-window.de/visitIdResponse"; XNamespace ns15 = "http://api.national-single-window.de/visitIdResponse";
XNamespace ns16 = "http://api.national-single-window.de/transitIdResponse"; XNamespace ns16 = "http://api.national-single-window.de/transitIdResponse";
XNamespace resetNS = "http://api.national-single-window.de/reset";
XNamespace ladgNS = "http://api.national-single-window.de/ladg"; XNamespace ladgNS = "http://api.national-single-window.de/ladg";
XNamespace hazaNS = "http://api.national-single-window.de/haza"; XNamespace hazaNS = "http://api.national-single-window.de/haza";
XNamespace hazdNS = "http://api.national-single-window.de/hazd"; XNamespace hazdNS = "http://api.national-single-window.de/hazd";
@ -74,143 +75,148 @@ namespace bsmd.hisnord
_messageCoreId = aGuid; _messageCoreId = aGuid;
else else
_log.WarnFormat("cannot parse ConveyanceCode {0}", elem.FirstOrDefault()); _log.WarnFormat("cannot parse ConveyanceCode {0}", elem.FirstOrDefault());
}else }
else
{ {
_log.Warn("NSWResponse does not contain ConveyanceCode!!"); _log.Warn("NSWResponse does not contain ConveyanceCode!!");
} }
// detect response type XName meldeTypeName = "Meldetype";
var mElem = xml.Descendants(meldeTypeName);
Message.NotificationClass? notificationClass = null;
foreach (Message.NotificationClass messageClassType in Enum.GetValues(typeof(Message.NotificationClass))) if(mElem.Count() > 0)
{
Message.NotificationClass tmpClass;
if (Enum.TryParse<Message.NotificationClass>(mElem.FirstOrDefault()?.Value, out tmpClass))
notificationClass = tmpClass;
else
{
// könnte VISIT/TRANSIT Id Beantragung sein
XName test = ns15 + "VisitIdResponse";
if (xml.Descendants(test).Count() > 0)
{
notificationClass = Message.NotificationClass.VISIT;
}
else
{
test = ns16 + "TransitIdResponse";
if (xml.Descendants(test).Count() > 0) notificationClass = Message.NotificationClass.TRANSIT;
}
if(!notificationClass.HasValue)
_log.WarnFormat("NSWResponse does not contain Notification class");
}
}
// detect response type
if(notificationClass.HasValue)
{ {
XName lookupName; XName lookupName;
XName resetLookup; XName resetLookup = resetNS + "ResetResponse";
switch (messageClassType) switch (notificationClass.Value)
{ {
// we won't get answers for these message types
case Message.NotificationClass.STO: continue;
case Message.NotificationClass.CREWD: continue;
case Message.NotificationClass.PASD: continue;
case Message.NotificationClass.VISIT: case Message.NotificationClass.VISIT:
lookupName = ns15 + "VisitIdResponse"; lookupName = ns15 + "VisitIdResponse";
resetLookup = ns15 + "ResetResponse";
break; break;
case Message.NotificationClass.TRANSIT: case Message.NotificationClass.TRANSIT:
lookupName = ns16 + "TransitIdResponse"; lookupName = ns16 + "TransitIdResponse";
resetLookup = ns16 + "ResetResponse";
break; break;
case Message.NotificationClass.LADG: case Message.NotificationClass.LADG:
lookupName = ladgNS + "LADGResponse"; lookupName = ladgNS + "LADGResponse";
resetLookup = ladgNS + "ResetResponse";
break; break;
case Message.NotificationClass.HAZA: case Message.NotificationClass.HAZA:
lookupName = hazaNS + "HAZAResponse"; lookupName = hazaNS + "HAZAResponse";
resetLookup = hazaNS + "ResetResponse";
break; break;
case Message.NotificationClass.HAZD: case Message.NotificationClass.HAZD:
lookupName = hazdNS + "HAZDResponse"; lookupName = hazdNS + "HAZDResponse";
resetLookup = hazdNS + "ResetResponse";
break; break;
case Message.NotificationClass.MDH: case Message.NotificationClass.MDH:
lookupName = mdhNS + "MDHResponse"; lookupName = mdhNS + "MDHResponse";
resetLookup = mdhNS + "ResetResponse";
break; break;
case Message.NotificationClass.AGNT: case Message.NotificationClass.AGNT:
lookupName = agntNS + "AGNTResponse"; lookupName = agntNS + "AGNTResponse";
resetLookup = agntNS + "ResetResponse";
break; break;
case Message.NotificationClass.SEC: case Message.NotificationClass.SEC:
lookupName = secNS + "SECResponse"; lookupName = secNS + "SECResponse";
resetLookup = secNS + "ResetResponse";
break; break;
case Message.NotificationClass.STAT: case Message.NotificationClass.STAT:
lookupName = statNS + "STATResponse"; lookupName = statNS + "STATResponse";
resetLookup = statNS + "ResetResponse";
break; break;
case Message.NotificationClass.NOA_NOD: case Message.NotificationClass.NOA_NOD:
lookupName = noa_nodNS + "NOA_NODResponse"; lookupName = noa_nodNS + "NOA_NODResponse";
resetLookup = noa_nodNS + "ResetResponse";
break; break;
case Message.NotificationClass.ATA: case Message.NotificationClass.ATA:
lookupName = ataNS + "ATAResponse"; lookupName = ataNS + "ATAResponse";
resetLookup = ataNS + "ResetResponse";
break; break;
case Message.NotificationClass.ATD: case Message.NotificationClass.ATD:
lookupName = atdNS + "ATDResponse"; lookupName = atdNS + "ATDResponse";
resetLookup = atdNS + "ResetResponse";
break; break;
case Message.NotificationClass.POBA: case Message.NotificationClass.POBA:
lookupName = pobaNS + "POBAResponse"; lookupName = pobaNS + "POBAResponse";
resetLookup = pobaNS + "ResetResponse";
break; break;
case Message.NotificationClass.POBD: case Message.NotificationClass.POBD:
lookupName = pobdNS + "POBDResponse"; lookupName = pobdNS + "POBDResponse";
resetLookup = pobdNS + "ResetResponse";
break; break;
case Message.NotificationClass.NAME: case Message.NotificationClass.NAME:
lookupName = nameNS + "NAMEResponse"; lookupName = nameNS + "NAMEResponse";
resetLookup = nameNS + "ResetResponse";
break; break;
case Message.NotificationClass.TIEFA: case Message.NotificationClass.TIEFA:
lookupName = tiefaNS + "TIEFAResponse"; lookupName = tiefaNS + "TIEFAResponse";
resetLookup = tiefaNS + "ResetResponse";
break; break;
case Message.NotificationClass.TIEFD: case Message.NotificationClass.TIEFD:
lookupName = tiefdNS + "TIEFDResponse"; lookupName = tiefdNS + "TIEFDResponse";
resetLookup = tiefdNS + "ResetResponse";
break; break;
case Message.NotificationClass.BKRA: case Message.NotificationClass.BKRA:
lookupName = bkraNS + "BKRAResponse"; lookupName = bkraNS + "BKRAResponse";
resetLookup = bkraNS + "ResetResponse";
break; break;
case Message.NotificationClass.BKRD: case Message.NotificationClass.BKRD:
lookupName = bkrdNS + "BKRDResponse"; lookupName = bkrdNS + "BKRDResponse";
resetLookup = bkrdNS + "ResetResponse";
break; break;
case Message.NotificationClass.INFO: case Message.NotificationClass.INFO:
lookupName = infoNS + "INFOResponse"; lookupName = infoNS + "INFOResponse";
resetLookup = infoNS + "ResetResponse";
break; break;
case Message.NotificationClass.SERV: case Message.NotificationClass.SERV:
lookupName = servNS + "SERVResponse"; lookupName = servNS + "SERVResponse";
resetLookup = servNS + "ResetResponse";
break; break;
case Message.NotificationClass.PRE72H: case Message.NotificationClass.PRE72H:
lookupName = pre72hNS + "PRE72HResponse"; lookupName = pre72hNS + "PRE72HResponse";
resetLookup = pre72hNS + "ResetResponse";
break; break;
case Message.NotificationClass.WAS: case Message.NotificationClass.WAS:
lookupName = wasNS + "WASResponse"; lookupName = wasNS + "WASResponse";
resetLookup = wasNS + "ResetResponse";
break; break;
case Message.NotificationClass.CREW: case Message.NotificationClass.CREW:
lookupName = crewNS + "CREWResponse"; lookupName = crewNS + "CREWResponse";
resetLookup = crewNS + "ResetResponse";
break; break;
case Message.NotificationClass.PAS: case Message.NotificationClass.PAS:
lookupName = pasNS + "PASResponse"; lookupName = pasNS + "PASResponse";
resetLookup = pasNS + "ResetResponse";
break; break;
case Message.NotificationClass.BPOL: case Message.NotificationClass.BPOL:
lookupName = bpolNS + "BPOLResponse"; lookupName = bpolNS + "BPOLResponse";
resetLookup = bpolNS + "ResetResponse";
break; break;
case Message.NotificationClass.TOWA: case Message.NotificationClass.TOWA:
lookupName = towaNS + "TOWAResponse"; lookupName = towaNS + "TOWAResponse";
resetLookup = towaNS + "ResetResponse";
break; break;
case Message.NotificationClass.TOWD: case Message.NotificationClass.TOWD:
lookupName = towdNS + "TOWDResponse"; lookupName = towdNS + "TOWDResponse";
resetLookup = towdNS + "ResetResponse";
break; break;
default: default:
// we won't get answers for these message types
case Message.NotificationClass.STO:
case Message.NotificationClass.CREWD:
case Message.NotificationClass.PASD:
lookupName = "dontmatchmeplease"; lookupName = "dontmatchmeplease";
resetLookup = "dontmatchmeplease"; resetLookup = "dontmatchmeplease";
break; break;
} }
bool lookupMatch = (xml.Descendants(lookupName).Count() > 0); bool lookupMatch = (xml.Descendants(lookupName).Count() > 0);
bool resetMatch = (xml.Descendants(resetLookup).Count() > 0); bool resetMatch = (xml.Descendants(resetLookup).Count() > 0);
@ -219,7 +225,7 @@ namespace bsmd.hisnord
_isReset = resetMatch; _isReset = resetMatch;
_notificationClass = messageClassType; _notificationClass = notificationClass.Value;
// match found // match found
XName xname = ns6 + "ClientRequestId"; XName xname = ns6 + "ClientRequestId";
@ -296,8 +302,7 @@ namespace bsmd.hisnord
me.ErrorText = anElem.Element(eTextName).Value; me.ErrorText = anElem.Element(eTextName).Value;
_errors.Add(me); _errors.Add(me);
} }
break;
} }
} }
} }

View File

@ -25,7 +25,7 @@ namespace bsmd.hisnord.Properties {
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("5")] [global::System.Configuration.DefaultSettingValueAttribute("1")]
public int BatchTimeoutMins { public int BatchTimeoutMins {
get { get {
return ((int)(this["BatchTimeoutMins"])); return ((int)(this["BatchTimeoutMins"]));
@ -106,5 +106,29 @@ namespace bsmd.hisnord.Properties {
this["AnswerCorruptDir"] = value; this["AnswerCorruptDir"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("E:\\svnlager\\BSMD\\nsw\\HIS-NORD\\")]
public string TestTransmitterRoot {
get {
return ((string)(this["TestTransmitterRoot"]));
}
set {
this["TestTransmitterRoot"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string LiveTransmitterRoot {
get {
return ((string)(this["LiveTransmitterRoot"]));
}
set {
this["LiveTransmitterRoot"] = value;
}
}
} }
} }

View File

@ -3,7 +3,7 @@
<Profiles /> <Profiles />
<Settings> <Settings>
<Setting Name="BatchTimeoutMins" Type="System.Int32" Scope="User"> <Setting Name="BatchTimeoutMins" Type="System.Int32" Scope="User">
<Value Profile="(Default)">5</Value> <Value Profile="(Default)">1</Value>
</Setting> </Setting>
<Setting Name="OutputDir" Type="System.String" Scope="User"> <Setting Name="OutputDir" Type="System.String" Scope="User">
<Value Profile="(Default)">E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\IMP</Value> <Value Profile="(Default)">E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\IMP</Value>
@ -23,5 +23,11 @@
<Setting Name="AnswerCorruptDir" Type="System.String" Scope="User"> <Setting Name="AnswerCorruptDir" Type="System.String" Scope="User">
<Value Profile="(Default)">E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\ANSWERS_CORRUPT</Value> <Value Profile="(Default)">E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\ANSWERS_CORRUPT</Value>
</Setting> </Setting>
<Setting Name="TestTransmitterRoot" Type="System.String" Scope="User">
<Value Profile="(Default)">E:\svnlager\BSMD\nsw\HIS-NORD\</Value>
</Setting>
<Setting Name="LiveTransmitterRoot" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

View File

@ -22,6 +22,7 @@ namespace bsmd.hisnord
private static ILog _log = LogManager.GetLogger(typeof(Request)); private static ILog _log = LogManager.GetLogger(typeof(Request));
private static Dictionary<Guid, ReportingParty> _reportingPartyDict = null; private static Dictionary<Guid, ReportingParty> _reportingPartyDict = null;
private static Dictionary<MessageCore, string> coreFilenameDict = new Dictionary<MessageCore, string>(); private static Dictionary<MessageCore, string> coreFilenameDict = new Dictionary<MessageCore, string>();
private static Dictionary<MessageCore, bool> coreUseTestDict = new Dictionary<MessageCore, bool>();
private static Dictionary<Message.NotificationClass, Message> noteMessageDict = new Dictionary<Message.NotificationClass, Message>(); private static Dictionary<Message.NotificationClass, Message> noteMessageDict = new Dictionary<Message.NotificationClass, Message>();
internal static Dictionary<Guid, ReportingParty> ReportingPartyDict internal static Dictionary<Guid, ReportingParty> ReportingPartyDict
@ -39,13 +40,14 @@ namespace bsmd.hisnord
public static void Clear() public static void Clear()
{ {
coreFilenameDict.Clear(); coreFilenameDict.Clear();
coreUseTestDict.Clear();
} }
public static void ReadResponseFiles() public static void ReadResponseFiles()
{ {
foreach (MessageCore core in coreFilenameDict.Keys) foreach (MessageCore core in coreFilenameDict.Keys)
{ {
transmitter.result theResult = transmitter.GetResult(coreFilenameDict[core]); transmitter.result theResult = transmitter.GetResult(coreFilenameDict[core], coreUseTestDict[core]);
if (theResult != null) if (theResult != null)
{ {
_log.InfoFormat("Result: Code {0} Detail {1} Message {2}", theResult.code, theResult.detail, theResult.message); _log.InfoFormat("Result: Code {0} Detail {1} Message {2}", theResult.code, theResult.detail, theResult.message);
@ -110,6 +112,7 @@ namespace bsmd.hisnord
{ {
_log.DebugFormat("preparing {0}", noteMessageDict[notificationClass].MessageNotificationClassDisplay); _log.DebugFormat("preparing {0}", noteMessageDict[notificationClass].MessageNotificationClassDisplay);
noteMessageDict[notificationClass].StatusInfo = ""; noteMessageDict[notificationClass].StatusInfo = "";
noteMessageDict[notificationClass].ChangedBy = ""; // Leeren nach RS mit CH: Sie möchte das Feld als Indikator "zu versenden" verwenden (ich war dagegen ;-)
noteMessageDict[notificationClass].InternalStatus = Message.BSMDStatus.SENT; noteMessageDict[notificationClass].InternalStatus = Message.BSMDStatus.SENT;
noteMessageDict[notificationClass].SentAt = DateTime.Now; noteMessageDict[notificationClass].SentAt = DateTime.Now;
DBManager.Instance.DeleteSystemErrors(noteMessageDict[notificationClass]); DBManager.Instance.DeleteSystemErrors(noteMessageDict[notificationClass]);
@ -316,8 +319,9 @@ namespace bsmd.hisnord
for (int i = 0; i < noa_nod.CallPurposes.Count; i++) for (int i = 0; i < noa_nod.CallPurposes.Count; i++)
{ {
hn_noanod.CallPurposes[i] = new callpurpose(); hn_noanod.CallPurposes[i] = new callpurpose();
hn_noanod.CallPurposes[i].CallPurposeCode = noa_nod.CallPurposes[i].CallPurposeCode.ToString(); CallPurpose callPurpose = noa_nod.CallPurposes[i] as CallPurpose;
hn_noanod.CallPurposes[i].CallPurposeDescription = noa_nod.CallPurposes[i].CallPurposeDescription; hn_noanod.CallPurposes[i].CallPurposeCode = callPurpose.CallPurposeCode.ToString();
hn_noanod.CallPurposes[i].CallPurposeDescription = callPurpose.CallPurposeDescription;
} }
} }
@ -1085,7 +1089,7 @@ namespace bsmd.hisnord
sanitarydetail[] sanitaryDetails = new sanitarydetail[mdh.SanitaryMeasuresDetails.Count]; sanitarydetail[] sanitaryDetails = new sanitarydetail[mdh.SanitaryMeasuresDetails.Count];
for (int j = 0; j < mdh.SanitaryMeasuresDetails.Count; j++) for (int j = 0; j < mdh.SanitaryMeasuresDetails.Count; j++)
{ {
SanitaryMeasuresDetail detail = mdh.SanitaryMeasuresDetails[j]; SanitaryMeasuresDetail detail = mdh.SanitaryMeasuresDetails[j] as SanitaryMeasuresDetail;
sanitaryDetails[j] = new sanitarydetail(); sanitaryDetails[j] = new sanitarydetail();
if (detail.SanitaryMeasuresDate.HasValue) if (detail.SanitaryMeasuresDate.HasValue)
sanitaryDetails[j].SanitaryMeasuresDate = detail.SanitaryMeasuresDate.Value; sanitaryDetails[j].SanitaryMeasuresDate = detail.SanitaryMeasuresDate.Value;
@ -1148,18 +1152,19 @@ namespace bsmd.hisnord
for (int j = 0; j < mdh.PortOfCallLast30Days.Count; j++) for (int j = 0; j < mdh.PortOfCallLast30Days.Count; j++)
{ {
pocs.PortOfCallLast30Days[j] = new portofcallmdh(); pocs.PortOfCallLast30Days[j] = new portofcallmdh();
pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysLocode = mdh.PortOfCallLast30Days[j].PortOfCallLast30DaysLocode; PortOfCallLast30Days portOfCallLast30Days = mdh.PortOfCallLast30Days[j] as PortOfCallLast30Days;
if (mdh.PortOfCallLast30Days[j].PortOfCallLast30DaysDateOfDeparture.HasValue) pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysLocode = portOfCallLast30Days.PortOfCallLast30DaysLocode;
pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysDateOfDeparture = mdh.PortOfCallLast30Days[j].PortOfCallLast30DaysDateOfDeparture.Value; if (portOfCallLast30Days.PortOfCallLast30DaysDateOfDeparture.HasValue)
pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysCrewMembersJoined = (mdh.PortOfCallLast30Days[j].PortOfCallLast30DaysCrewMembersJoined ?? false) ? yorntype.Y : yorntype.N; pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysDateOfDeparture = portOfCallLast30Days.PortOfCallLast30DaysDateOfDeparture.Value;
pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysCrewMembersJoined = (portOfCallLast30Days.PortOfCallLast30DaysCrewMembersJoined ?? false) ? yorntype.Y : yorntype.N;
if (mdh.PortOfCallLast30Days[j].CrewJoinedShip.Count > 0) if (portOfCallLast30Days.CrewJoinedShip.Count > 0)
{ {
List<string> crewJoinedShipList = new List<string>(); List<string> crewJoinedShipList = new List<string>();
for (int k = 0; k < mdh.PortOfCallLast30Days[j].CrewJoinedShip.Count; k++) for (int k = 0; k < portOfCallLast30Days.CrewJoinedShip.Count; k++)
{ {
if (!mdh.PortOfCallLast30Days[j].CrewJoinedShip[k].PortOfCallLast30DaysCrewJoinedShipName.IsNullOrEmpty()) if (!portOfCallLast30Days.CrewJoinedShip[k].PortOfCallLast30DaysCrewJoinedShipName.IsNullOrEmpty())
crewJoinedShipList.Add(mdh.PortOfCallLast30Days[j].CrewJoinedShip[k].PortOfCallLast30DaysCrewJoinedShipName); crewJoinedShipList.Add(portOfCallLast30Days.CrewJoinedShip[k].PortOfCallLast30DaysCrewJoinedShipName);
} }
pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysCrewJoinedShip = crewJoinedShipList.ToArray(); pocs.PortOfCallLast30Days[j].PortOfCallLast30DaysCrewJoinedShip = crewJoinedShipList.ToArray();
} }
@ -1228,7 +1233,7 @@ namespace bsmd.hisnord
for (int i = 0; i < was.Waste.Count; i++) for (int i = 0; i < was.Waste.Count; i++)
{ {
waste hn_waste = new waste(); waste hn_waste = new waste();
Waste waste = was.Waste[i]; Waste waste = was.Waste[i] as Waste;
if (waste.WasteDisposalAmount_MTQ.HasValue) if (waste.WasteDisposalAmount_MTQ.HasValue)
hn_waste.WasteDisposalAmount_MTQ = (float)waste.WasteDisposalAmount_MTQ.Value; hn_waste.WasteDisposalAmount_MTQ = (float)waste.WasteDisposalAmount_MTQ.Value;
@ -1304,9 +1309,10 @@ namespace bsmd.hisnord
for (int i = 0; i < bpol.PortOfItineraries.Count; i++) for (int i = 0; i < bpol.PortOfItineraries.Count; i++)
{ {
hn_bpol.PortOfItinerary[i] = new portofitinery(); hn_bpol.PortOfItinerary[i] = new portofitinery();
hn_bpol.PortOfItinerary[i].PortOfItineryName = bpol.PortOfItineraries[i].PortOfItineraryName; PortOfItinerary portOfItinerary = bpol.PortOfItineraries[i] as PortOfItinerary;
if (bpol.PortOfItineraries[i].PortOfItineraryETA.HasValue) hn_bpol.PortOfItinerary[i].PortOfItineryName = portOfItinerary.PortOfItineraryName;
hn_bpol.PortOfItinerary[i].PortOfItineryETA = bpol.PortOfItineraries[i].PortOfItineraryETA.Value; if (portOfItinerary.PortOfItineraryETA.HasValue)
hn_bpol.PortOfItinerary[i].PortOfItineryETA = portOfItinerary.PortOfItineraryETA.Value;
} }
} }
@ -1577,16 +1583,20 @@ namespace bsmd.hisnord
#region serialize and save message #region serialize and save message
string outputDir = Path.Combine(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot,
Properties.Settings.Default.OutputDir);
string filename = string.Format("BSMD_{0}-{1}.xml", DateTime.Now.ToString("yyyyMMddHHmmss"), core.Id.Value); string filename = string.Format("BSMD_{0}-{1}.xml", DateTime.Now.ToString("yyyyMMddHHmmss"), core.Id.Value);
_log.InfoFormat("saving {0} to output directory", filename); _log.InfoFormat("saving {0} to output directory", filename);
string filePath = Path.Combine(Properties.Settings.Default.OutputDir, filename); string filePath = Path.Combine(outputDir, filename);
XmlSerializer serializer = new XmlSerializer(typeof(nsw)); XmlSerializer serializer = new XmlSerializer(typeof(nsw));
using(TextWriter tw = new StreamWriter(filePath)) { using(TextWriter tw = new StreamWriter(filePath)) {
serializer.Serialize(tw, _nsw); serializer.Serialize(tw, _nsw);
} }
coreFilenameDict[core] = filename; coreFilenameDict[core] = filename;
coreUseTestDict[core] = useTest;
#endregion #endregion
@ -1612,7 +1622,7 @@ namespace bsmd.hisnord
{ {
for (int i = 0; i < haz.IMDGPositions.Count; i++) for (int i = 0; i < haz.IMDGPositions.Count; i++)
{ {
IMDGPosition imdgPosition = haz.IMDGPositions[i]; IMDGPosition imdgPosition = haz.IMDGPositions[i] as IMDGPosition;
positionimdg pi = new positionimdg(); positionimdg pi = new positionimdg();
pi.UNNumber = imdgPosition.UNNumber; pi.UNNumber = imdgPosition.UNNumber;
@ -1683,7 +1693,8 @@ namespace bsmd.hisnord
} }
pi.PortOfLoading = imdgPosition.PortOfLoading; pi.PortOfLoading = imdgPosition.PortOfLoading;
pi.PortOfDischarge = imdgPosition.PortOfDischarge; pi.PortOfDischarge = imdgPosition.PortOfDischarge;
pi.Remarks = imdgPosition.Remarks; if(!imdgPosition.Remarks.IsNullOrEmpty())
pi.Remarks = imdgPosition.Remarks;
dgList.Add(pi); dgList.Add(pi);
} }
@ -1699,7 +1710,7 @@ namespace bsmd.hisnord
for (int i = 0; i < haz.IBCPositions.Count; i++) for (int i = 0; i < haz.IBCPositions.Count; i++)
{ {
positionibc pi = new positionibc(); positionibc pi = new positionibc();
IBCPosition ibcPosition = haz.IBCPositions[i]; IBCPosition ibcPosition = haz.IBCPositions[i] as IBCPosition;
pi.ProductName = ibcPosition.ProductName; pi.ProductName = ibcPosition.ProductName;
if (ibcPosition.PollutionCategory.HasValue) if (ibcPosition.PollutionCategory.HasValue)
@ -1718,7 +1729,8 @@ namespace bsmd.hisnord
pi.SpecRef15_19Specified = ibcPosition.SpecRef15_19.HasValue; pi.SpecRef15_19Specified = ibcPosition.SpecRef15_19.HasValue;
if (pi.SpecRef15_19Specified) if (pi.SpecRef15_19Specified)
pi.SpecRef15_19 = ibcPosition.SpecRef15_19.Value ? yorntype.Y : yorntype.N; pi.SpecRef15_19 = ibcPosition.SpecRef15_19.Value ? yorntype.Y : yorntype.N;
pi.Remarks = ibcPosition.Remarks; if(!ibcPosition.Remarks.IsNullOrEmpty())
pi.Remarks = ibcPosition.Remarks;
dgList.Add(pi); dgList.Add(pi);
} }
@ -1733,7 +1745,7 @@ namespace bsmd.hisnord
for (int i = 0; i < haz.IGCPositions.Count; i++) for (int i = 0; i < haz.IGCPositions.Count; i++)
{ {
positionigc pi = new positionigc(); positionigc pi = new positionigc();
IGCPosition igcPosition = haz.IGCPositions[i]; IGCPosition igcPosition = haz.IGCPositions[i] as IGCPosition;
pi.UNNumber = igcPosition.UNNumber; pi.UNNumber = igcPosition.UNNumber;
pi.IMOClass = igcPosition.IMOClass; pi.IMOClass = igcPosition.IMOClass;
@ -1743,7 +1755,8 @@ namespace bsmd.hisnord
pi.StowagePosition = igcPosition.StowagePosition; pi.StowagePosition = igcPosition.StowagePosition;
pi.PortOfLoading = igcPosition.PortOfLoading; pi.PortOfLoading = igcPosition.PortOfLoading;
pi.PortOfDischarge = igcPosition.PortOfDischarge; pi.PortOfDischarge = igcPosition.PortOfDischarge;
pi.Remarks = igcPosition.Remarks; if(!igcPosition.Remarks.IsNullOrEmpty())
pi.Remarks = igcPosition.Remarks;
dgList.Add(pi); dgList.Add(pi);
} }
@ -1758,7 +1771,7 @@ namespace bsmd.hisnord
for (int i = 0; i < haz.IMSBCPositions.Count; i++) for (int i = 0; i < haz.IMSBCPositions.Count; i++)
{ {
positionimsbc pi = new positionimsbc(); positionimsbc pi = new positionimsbc();
IMSBCPosition imsbcPosition = haz.IMSBCPositions[i]; IMSBCPosition imsbcPosition = haz.IMSBCPositions[i] as IMSBCPosition;
pi.BulkCargoShippingName = imsbcPosition.BulkCargoShippingName; pi.BulkCargoShippingName = imsbcPosition.BulkCargoShippingName;
pi.MHB = (imsbcPosition.MHB ?? false) ? yorntype.Y : yorntype.N; pi.MHB = (imsbcPosition.MHB ?? false) ? yorntype.Y : yorntype.N;
@ -1769,7 +1782,8 @@ namespace bsmd.hisnord
pi.StowagePosition = imsbcPosition.StowagePosition; pi.StowagePosition = imsbcPosition.StowagePosition;
pi.PortOfLoading = imsbcPosition.PortOfLoading; pi.PortOfLoading = imsbcPosition.PortOfLoading;
pi.PortOfDischarge = imsbcPosition.PortOfDischarge; pi.PortOfDischarge = imsbcPosition.PortOfDischarge;
pi.Remarks = imsbcPosition.Remarks; if(!imsbcPosition.Remarks.IsNullOrEmpty())
pi.Remarks = imsbcPosition.Remarks;
dgList.Add(pi); dgList.Add(pi);
} }
@ -1785,7 +1799,7 @@ namespace bsmd.hisnord
for (int i = 0; i < haz.MARPOLPositions.Count; i++) for (int i = 0; i < haz.MARPOLPositions.Count; i++)
{ {
positionmarpol pi = new positionmarpol(); positionmarpol pi = new positionmarpol();
MARPOL_Annex_I_Position marpolPosition = haz.MARPOLPositions[i]; MARPOL_Annex_I_Position marpolPosition = haz.MARPOLPositions[i] as MARPOL_Annex_I_Position;
pi.Name = marpolPosition.Name; pi.Name = marpolPosition.Name;
if (marpolPosition.FlashpointInformation.HasValue) if (marpolPosition.FlashpointInformation.HasValue)
@ -1796,7 +1810,8 @@ namespace bsmd.hisnord
pi.StowagePosition = marpolPosition.StowagePosition; pi.StowagePosition = marpolPosition.StowagePosition;
pi.PortOfLoading = marpolPosition.PortOfLoading; pi.PortOfLoading = marpolPosition.PortOfLoading;
pi.PortOfDischarge = marpolPosition.PortOfDischarge; pi.PortOfDischarge = marpolPosition.PortOfDischarge;
pi.Remarks = marpolPosition.Remarks; if(!marpolPosition.Remarks.IsNullOrEmpty())
pi.Remarks = marpolPosition.Remarks;
dgList.Add(pi); dgList.Add(pi);
} }

View File

@ -16,9 +16,12 @@ namespace bsmd.hisnord
private static ILog _log = LogManager.GetLogger(typeof(Response)); private static ILog _log = LogManager.GetLogger(typeof(Response));
public static void ReadAnswers() public static void ReadAnswers(bool useTest)
{ {
foreach (string answerFile in Directory.GetFiles(Properties.Settings.Default.AnswerDir)) string answerDir = Path.Combine(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot,
Properties.Settings.Default.AnswerDir);
foreach (string answerFile in Directory.GetFiles(answerDir))
{ {
bool isOK = true; bool isOK = true;
@ -91,13 +94,17 @@ namespace bsmd.hisnord
} }
_log.WarnFormat("SystemError received for Core [{0}], IMO {1} ETA {2}: {3} Class {4}", aCore.Id, aCore.IMO, aCore.ETADisplay, systemError.ErrorMessage, Enum.GetName(typeof(Message.NotificationClass), notificationClass)); _log.WarnFormat("SystemError received for Core [{0}], IMO {1} ETA {2}: {3} Class {4}", aCore.Id, aCore.IMO, aCore.ETADisplay, systemError.ErrorMessage, Enum.GetName(typeof(Message.NotificationClass), notificationClass));
// Nach einiger Diskussion (vs. "SENT" und "FAILURE" geht das hier jetzt auf RESPONDED)
aCore.BSMDStatusInternal = MessageCore.BSMDStatus.RESPONDED;
DBManager.Instance.Save(aCore);
} }
else else
{ {
_log.WarnFormat("SystemError received for unknown core {0}: {1}", systemError.MessageCoreId, systemError.ErrorMessage); _log.WarnFormat("SystemError received for unknown core {0}: {1}", systemError.MessageCoreId, systemError.ErrorMessage);
} }
// trotzdem immer speichern // trotzdem immer speichern
DBManager.Instance.Save(systemError); DBManager.Instance.Save(systemError);
} }
} }
else else
@ -227,12 +234,16 @@ namespace bsmd.hisnord
if(isOK) if(isOK)
{ {
// archive file // archive file
File.Move(answerFile, Path.Combine(Properties.Settings.Default.AnswerArchiveDir, Path.GetFileName(answerFile))); string answerArchiveDir = Path.Combine(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot,
Properties.Settings.Default.AnswerArchiveDir);
File.Move(answerFile, Path.Combine(answerArchiveDir, Path.GetFileName(answerFile)));
} }
else else
{ {
// save in separate folder (to look at it later?) // save in separate folder (to look at it later?)
File.Move(answerFile, Path.Combine(Properties.Settings.Default.AnswerCorruptDir, Path.GetFileName(answerFile))); string answerCorruptDir = Path.Combine(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot,
Properties.Settings.Default.AnswerCorruptDir);
File.Move(answerFile, Path.Combine(answerCorruptDir, Path.GetFileName(answerFile)));
} }
} }
} }

View File

@ -8,7 +8,7 @@
<userSettings> <userSettings>
<bsmd.hisnord.Properties.Settings> <bsmd.hisnord.Properties.Settings>
<setting name="BatchTimeoutMins" serializeAs="String"> <setting name="BatchTimeoutMins" serializeAs="String">
<value>5</value> <value>1</value>
</setting> </setting>
<setting name="OutputDir" serializeAs="String"> <setting name="OutputDir" serializeAs="String">
<value>E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\IMP</value> <value>E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\IMP</value>
@ -28,6 +28,12 @@
<setting name="AnswerCorruptDir" serializeAs="String"> <setting name="AnswerCorruptDir" serializeAs="String">
<value>E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\ANSWERS_CORRUPT</value> <value>E:\svnlager\BSMD\nsw\HIS-NORD\Transmitter-Tool\ANSWERS_CORRUPT</value>
</setting> </setting>
<setting name="TestTransmitterRoot" serializeAs="String">
<value>E:\svnlager\BSMD\nsw\HIS-NORD\</value>
</setting>
<setting name="LiveTransmitterRoot" serializeAs="String">
<value />
</setting>
</bsmd.hisnord.Properties.Settings> </bsmd.hisnord.Properties.Settings>
</userSettings> </userSettings>
</configuration> </configuration>

View File

@ -24,11 +24,11 @@ namespace bsmd.hisnord
private static ILog _log = LogManager.GetLogger(typeof(transmitter)); private static ILog _log = LogManager.GetLogger(typeof(transmitter));
public static void CallTransmitter() public static void CallTransmitter(bool useTest)
{ {
Process process = new Process(); Process process = new Process();
process.StartInfo.FileName = Properties.Settings.Default.Transmitter; process.StartInfo.FileName = Properties.Settings.Default.Transmitter;
process.StartInfo.WorkingDirectory = Path.GetDirectoryName(Properties.Settings.Default.Transmitter); process.StartInfo.WorkingDirectory = Path.GetDirectoryName(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot);
process.StartInfo.RedirectStandardError = true; process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = false; process.StartInfo.RedirectStandardInput = false;
@ -50,11 +50,15 @@ namespace bsmd.hisnord
// process.WaitForExit(); // process.WaitForExit();
} }
public static result GetResult(string filenameFullPath) public static result GetResult(string filenameFullPath, bool useTest)
{ {
// now we should read the response message... // now we should read the response message...
string resultFilename = string.Format("{0}.result.xml", Path.GetFileName(filenameFullPath)); string resultFilename = string.Format("{0}.result.xml", Path.GetFileName(filenameFullPath));
string resultFullPath = Path.Combine(Properties.Settings.Default.ResultDir, resultFilename);
string resultDir = Path.Combine(useTest ? Properties.Settings.Default.TestTransmitterRoot : Properties.Settings.Default.LiveTransmitterRoot,
Properties.Settings.Default.ResultDir);
string resultFullPath = Path.Combine(resultDir, resultFilename);
return result.ReadResult(resultFullPath); return result.ReadResult(resultFullPath);
} }