Merge branch 'release/eni_7.7'
This commit is contained in:
commit
888f33ae09
@ -119,7 +119,7 @@ namespace ENI2.Controls
|
||||
{
|
||||
var grid = sender as ENIDataGrid;
|
||||
if (Key.Delete == e.Key)
|
||||
this.deleteItem(null, null);
|
||||
this.deleteItem(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -109,6 +109,7 @@ namespace ENI2.Controls
|
||||
thePicker.Value = new DateTime(year, month, day, hour, minute, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (ArgumentOutOfRangeException) { thePicker.Value = null; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,10 +122,11 @@ namespace ENI2.Controls
|
||||
string timevalText = rd.Match(thePicker.Text).Captures[0].Value;
|
||||
int day = Int32.Parse(timevalText.Substring(0, 2));
|
||||
int month = Int32.Parse(timevalText.Substring(2, 2));
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (ArgumentOutOfRangeException) { thePicker.SelectedDate = null; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLogin}" Binding="{Binding Logon}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textEMail}" Binding="{Binding UserEMail}" IsReadOnly="True" Width="0.2*" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textAdministrator}" Binding="{Binding IsAdmin}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textEditor}" Binding="{Binding IsEditor}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCreated}" Binding="{Binding Created}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textChanged}" Binding="{Binding Changed}" IsReadOnly="True" Width="0.1*" />
|
||||
</DataGrid.Columns>
|
||||
|
||||
@ -59,7 +59,7 @@ namespace ENI2.Controls
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedParty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region grid event handler
|
||||
@ -98,13 +98,13 @@ namespace ENI2.Controls
|
||||
{
|
||||
ReportingParty rp = new ReportingParty();
|
||||
EditReportingPartyDialog ebd = new EditReportingPartyDialog();
|
||||
ebd.ReportingParty = rp;
|
||||
ebd.ReportingParty = rp;
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
{
|
||||
DBManager.Instance.GetReportingPartyDict().Add(Guid.NewGuid(), rp);
|
||||
this.ReportingParties.Add(rp);
|
||||
this.dataGridReportingParties.Items.Refresh();
|
||||
this.dataGridReportingParties.Items.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -298,7 +298,9 @@ namespace ENI2
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (Exception) {
|
||||
thePicker.SelectedDate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -106,6 +106,26 @@ namespace ENI2
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasCriticalInfoMissing(out string messageText)
|
||||
{
|
||||
messageText = "";
|
||||
// Hier haben wir Logik für Spezialfälle, z.B. dass für BRE und BRV bestimmte Meldeklassen gesendet werden *müssen*
|
||||
|
||||
if(this.Core.PoC.Equals("DEBRV") || this.Core.PoC.Equals("DEBRE"))
|
||||
{
|
||||
foreach(Message aMessage in _messages)
|
||||
{
|
||||
if((aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "NOA_NOD"; return true; }
|
||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.AGNT) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "AGNT"; return true; }
|
||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.INFO) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "INFO"; return true; }
|
||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.SEC) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "SEC"; return true; }
|
||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.TIEFA) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "TIEFA"; return true; }
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
@ -67,6 +67,9 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterTextboxChange(this.textBox_AgentPostalCode, Message.NotificationClass.AGNT);
|
||||
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, Message.NotificationClass.AGNT);
|
||||
this.RegisterTextboxChange(this.textBox_AgentCountry, Message.NotificationClass.AGNT);
|
||||
|
||||
this.buttonSaveTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
||||
this.buttonDeleteTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
@ -108,7 +111,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridCallPurposes.EditRequested += DataGridCallPurposes_EditRequested;
|
||||
this.dataGridCallPurposes.AddingNewItem += DataGridCallPurposes_AddingNewItem;
|
||||
this.dataGridCallPurposes.CreateRequested += DataGridCallPurposes_CreateRequested;
|
||||
this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
|
||||
this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
|
||||
|
||||
|
||||
this.agentGroupBox.DataContext = _agnt;
|
||||
@ -138,8 +141,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
CallPurpose cp = obj as CallPurpose;
|
||||
if (cp != null)
|
||||
if (obj is CallPurpose cp)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
_noa_nod.CallPurposes.Remove(cp);
|
||||
@ -151,7 +153,7 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
private void DataGridCallPurposes_CreateRequested()
|
||||
{
|
||||
{
|
||||
EditCallPurposeDialog ecpd = new EditCallPurposeDialog();
|
||||
ecpd.AddClicked += () =>
|
||||
{
|
||||
@ -256,16 +258,15 @@ namespace ENI2.DetailViewControls
|
||||
private void comboBox_AgentTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("combo selection changed");
|
||||
AGNT_Template at = this.comboBox_AgentTemplate.SelectedItem as AGNT_Template;
|
||||
if(at != null)
|
||||
if (this.comboBox_AgentTemplate.SelectedItem is AGNT_Template at)
|
||||
{
|
||||
this.textBoxTemplateTitle.Text = at.AgentTitle;
|
||||
this.buttonDeleteTemplate.IsEnabled = true;
|
||||
this.buttonDeleteTemplate.IsEnabled = true;
|
||||
this.buttonSetTemplate.IsEnabled = true;
|
||||
this._currentTemplate = at;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonDeleteTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@ -308,21 +309,21 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (MessageBox.Show("A template with this name already exists, overwrite?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this._currentTemplate = createFromCurrentText(title, existingTemplate);
|
||||
DBManager.Instance.Save(this._currentTemplate);
|
||||
|
||||
DBManager.Instance.Save(this._currentTemplate);
|
||||
|
||||
if(existingTemplate == null)
|
||||
{
|
||||
comboBox_AgentTemplate.ItemsSource = null;
|
||||
_agntTemplates.Add(this._currentTemplate);
|
||||
_agntTemplates.Sort();
|
||||
comboBox_AgentTemplate.ItemsSource = _agntTemplates;
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("Template saved", "OK", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonUndoTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@ -349,7 +350,7 @@ namespace ENI2.DetailViewControls
|
||||
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||
|
||||
this.buttonUndoTemplate.IsEnabled = false; // can't undo after undo
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
@ -36,8 +36,8 @@
|
||||
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.html</WebPage>
|
||||
<ApplicationRevision>4</ApplicationRevision>
|
||||
<ApplicationVersion>7.6.0.%2a</ApplicationVersion>
|
||||
<ApplicationRevision>8</ApplicationRevision>
|
||||
<ApplicationVersion>7.7.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
@ -996,7 +996,7 @@
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
|
||||
</Target>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
|
||||
@ -19,7 +19,7 @@ Copyright (c) 2017 schick Informatik
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
@ -35,6 +35,8 @@ Copyright (c) 2017 schick Informatik
|
||||
<Label Name="labelPortOfLoading" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textCargoPortOfLoading}" />
|
||||
<Label Name="labelPortOfDischarge" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textCargoPortOfDischarge}" />
|
||||
<Label Name="labelCodeNST3" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textCargoCodeNST3}" />
|
||||
<Label Name="labelSearchNST2007" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textSearchNST}" HorizontalAlignment="Right" />
|
||||
|
||||
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="comboBoxHandlingType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<ComboBox Grid.Row="0" Grid.Column="3" Name="comboBoxLACodes" Margin="2" IsEditable="True" SelectedValuePath="Key" DisplayMemberPath="Value" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
@ -43,7 +45,26 @@ Copyright (c) 2017 schick Informatik
|
||||
<xctk:IntegerUpDown Grid.Row="2" Grid.Column="1" Name="integerUpDownNumberOfItems" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" TextAlignment="Left"/>
|
||||
<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" Name="doubleUpDownGrossQuantity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N3" TextAlignment="Left"/>
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="4" Width="Auto" x:Name="locodeControl_PortOfLoading" />
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="5" Width="Auto" x:Name="locodeControl_PortOfDischarge" />
|
||||
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="5" Width="Auto" x:Name="locodeControl_PortOfDischarge" Height="28" VerticalAlignment="Top"/>
|
||||
|
||||
<TextBox Grid.Row="3" Grid.Column="3" Margin="2" Name="textBoxSearchNSTList" TextChanged="textBoxSearchNSTList_TextChanged" VerticalContentAlignment="Center" />
|
||||
<Grid Grid.Row="4" Grid.Column="3" Grid.RowSpan="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="28" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<ListBox Name="listBoxNST2007" Margin="2" Grid.RowSpan="2" DisplayMemberPath="Key" MouseDoubleClick="listBoxNST2007_MouseDoubleClick" />
|
||||
<!--ComboBox Name="comboBoxSelectNST2007ListItem" Margin="2" DisplayMemberPath="Key" Grid.RowSpan="2" /-->
|
||||
<Button Name="buttonSetTemplate" Margin="2" Click="buttonSetTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Apply template" HorizontalContentAlignment="Right" Grid.Column="1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="../Resources/check.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
|
||||
@ -2,13 +2,14 @@
|
||||
// Description: LADG Bearbeitungsdialog
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Controls;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Windows.Data;
|
||||
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
@ -30,13 +31,17 @@ namespace ENI2.EditControls
|
||||
Properties.Resources.textDischarge
|
||||
};
|
||||
|
||||
private static List<KeyValuePair<string, string>> _nstList = null;
|
||||
|
||||
public EditLADGDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += EditLADGDialog_Loaded;
|
||||
if (_nstList == null)
|
||||
_nstList = LocalizedLookup.GetNST2007List();
|
||||
}
|
||||
|
||||
public LADG LADG { get; set; }
|
||||
public LADG LADG { get; set; }
|
||||
|
||||
public MessageCore Core { get; set; }
|
||||
|
||||
@ -55,16 +60,16 @@ namespace ENI2.EditControls
|
||||
if (this.LADG.CargoHandlingType.HasValue)
|
||||
this.comboBoxHandlingType.SelectedIndex = this.LADG.CargoHandlingType.Value;
|
||||
|
||||
this.comboBoxLACodes.ItemsSource = LADG.LACodes;
|
||||
this.comboBoxLACodes.ItemsSource = LADG.LACodes;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
|
||||
this.integerUpDownNumberOfItems.Value = this.LADG.CargoNumberOfItems;
|
||||
this.doubleUpDownGrossQuantity.Value = this.LADG.CargoGrossQuantity_TNE;
|
||||
this.locodeControl_PortOfLoading.LocodeValue = this.LADG.PortOfLoading;
|
||||
this.locodeControl_PortOfDischarge.LocodeValue = this.LADG.PortOfDischarge;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
|
||||
this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
|
||||
this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
|
||||
this.comboBoxNSTCode.SelectedValue = this.LADG.CargoCodeNST;
|
||||
this.comboBoxNSTCode.SelectionChanged += ComboBoxNSTCode_SelectionChanged;
|
||||
this.comboBoxNST3Code.ItemsSource = LADG.CargoCodesNST3;
|
||||
@ -93,7 +98,7 @@ namespace ENI2.EditControls
|
||||
{
|
||||
if (this.comboBoxNSTCode.SelectedItem == null) return;
|
||||
// filter ItemsSource von NST3
|
||||
KeyValuePair<string, string> selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
|
||||
KeyValuePair<string, string> selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
|
||||
string key = selectedItem.Key;
|
||||
if (key.Length == 1) key = "0" + key;
|
||||
List<KeyValuePair<string, string>> filteredItemsSource = new List<KeyValuePair<string, string>>();
|
||||
@ -102,7 +107,7 @@ namespace ENI2.EditControls
|
||||
if (aPair.Value.StartsWith(key))
|
||||
filteredItemsSource.Add(aPair);
|
||||
}
|
||||
this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
|
||||
this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
|
||||
}
|
||||
|
||||
private void EditLADGDialog_OKClicked()
|
||||
@ -110,7 +115,44 @@ namespace ENI2.EditControls
|
||||
this.CopyValuesToEntity();
|
||||
}
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region NST2007 list search/select event handler
|
||||
|
||||
private void textBoxSearchNSTList_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
||||
{
|
||||
if (textBoxSearchNSTList.Text.IsNullOrEmpty() || (textBoxSearchNSTList.Text.Length == 1))
|
||||
{
|
||||
this.listBoxNST2007.ItemsSource = null;
|
||||
// this.comboBoxSelectNST2007ListItem.ItemsSource = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = _nstList.Where(kvp => kvp.Key.Contains(textBoxSearchNSTList.Text, StringComparison.OrdinalIgnoreCase));
|
||||
this.listBoxNST2007.ItemsSource = result;
|
||||
//this.comboBoxSelectNST2007ListItem.ItemsSource = result;
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if(this.listBoxNST2007.SelectedItem != null)
|
||||
{
|
||||
KeyValuePair<string, string> selectedTemplate = (KeyValuePair<string, string>) this.listBoxNST2007.SelectedItem;
|
||||
if(selectedTemplate.Value.Length == 3)
|
||||
{
|
||||
this.comboBoxNSTCode.SelectedValue = selectedTemplate.Value.Substring(0, 2);
|
||||
this.comboBoxNST3Code.SelectedValue = selectedTemplate.Value.Substring(2, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listBoxNST2007_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
this.buttonSetTemplate_Click(null, null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@
|
||||
<Label Name="labelArchived" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textArchived}" HorizontalContentAlignment="Right" />
|
||||
<Label Name="labelCreated" Grid.Row="9" Grid.Column="0" Content="{x:Static p:Resources.textCreated}" HorizontalContentAlignment="Right" />
|
||||
<Label Name="labelChanged" Grid.Row="9" Grid.Column="2" Content="{x:Static p:Resources.textChanged}" HorizontalContentAlignment="Right" />
|
||||
<Label Name="labelEditor" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textEditor}" HorizontalContentAlignment="Right" />
|
||||
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
<TextBox Grid.Row="0" Grid.Column="3" Width="auto" Name="textBoxEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
@ -64,6 +65,7 @@
|
||||
<PasswordBox Grid.Row="6" Grid.Column="3" Width="auto" Name="passwordBoxPassword" Margin="2" VerticalContentAlignment="Center" />
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxUserEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
<CheckBox Grid.Row="7" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxAdministrator" Margin="2" />
|
||||
<CheckBox Grid.Row="8" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxEditor" Margin="2" />
|
||||
<CheckBox Grid.Row="8" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxArchived" Margin="2" />
|
||||
|
||||
<Label Grid.Row="9" Grid.Column="1" Name="dateTimePickerCreated" FontStyle="Italic" />
|
||||
|
||||
@ -39,6 +39,7 @@ namespace ENI2.EditControls
|
||||
|
||||
this.checkBoxAdministrator.IsChecked = this.ReportingParty.IsAdmin;
|
||||
this.checkBoxArchived.IsChecked = this.ReportingParty.IsArchived;
|
||||
this.checkBoxEditor.IsChecked = this.ReportingParty.IsEditor;
|
||||
|
||||
this.dateTimePickerChanged.Content = this.ReportingParty.Changed.HasValue ? this.ReportingParty.Changed.ToString() : "";
|
||||
this.dateTimePickerCreated.Content = this.ReportingParty.Created.HasValue ? this.ReportingParty.Created.ToString() : "";
|
||||
@ -67,8 +68,9 @@ namespace ENI2.EditControls
|
||||
this.ReportingParty.SetPassword(this.passwordBoxPassword.Password);
|
||||
}
|
||||
|
||||
this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
|
||||
this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
|
||||
this.ReportingParty.IsArchived = this.checkBoxArchived.IsChecked ?? false;
|
||||
this.ReportingParty.IsEditor = this.checkBoxEditor.IsChecked ?? false;
|
||||
|
||||
// save value
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.ReportingParty);
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<Label Name="labelIMO" Grid.Column="1" Grid.Row="2"/>
|
||||
<Label Name="statusLabel" HorizontalAlignment="Center" Content="{x:Static p:Resources.textWaitForId}" Background="LemonChiffon" Grid.Row="3" Grid.ColumnSpan="2"/>
|
||||
<TextBox IsReadOnly="True" Name="textBoxId" MouseDown="textBoxId_MouseDown" FontWeight="Bold" HorizontalAlignment="Center" VerticalContentAlignment="Center" Margin="2" Grid.Row="4" Grid.ColumnSpan="2"/>
|
||||
<Label Name="clickToCopyLabel" Content=" -> click to copy" HorizontalAlignment="Center" Grid.Row="5" Grid.ColumnSpan="2" MouseDown="textBoxId_MouseDown" Visibility="Hidden"/>
|
||||
<Button Name="clickToCopyButton" Content=" -> click to copy <- " HorizontalAlignment="Center" Grid.Row="5" Grid.ColumnSpan="2" Click="clickToCopyButton_Click" Visibility="Hidden" Margin="2"/>
|
||||
<Button Grid.Row="6" Grid.Column="0" HorizontalAlignment="Left" Content="Close and open Id" Margin="2" Width="100" Click="Button_Click_1" />
|
||||
<Button Grid.Row="6" Grid.Column="1" HorizontalAlignment="Right" Content="Close" Margin="2" Width="100" Click="Button_Click" />
|
||||
</Grid>
|
||||
|
||||
@ -38,15 +38,10 @@ namespace ENI2.EditControls
|
||||
this.DisplayId = id;
|
||||
this.statusLabel.Content = Properties.Resources.textIdReceived;
|
||||
this.statusLabel.Background = Brushes.LightGreen;
|
||||
this.clickToCopyLabel.Visibility = Visibility.Visible;
|
||||
this.clickToCopyButton.Visibility = Visibility.Visible;
|
||||
}));
|
||||
}
|
||||
|
||||
private void textBoxId_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Clipboard.SetText(this.textBoxId.Text);
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
@ -67,5 +62,16 @@ namespace ENI2.EditControls
|
||||
this.labelIMO.Content = this.Core.IMO.IsNullOrEmpty() ? this.Core.ENI : this.Core.IMO;
|
||||
}
|
||||
}
|
||||
|
||||
private void clickToCopyButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Clipboard.SetText(this.textBoxId.Text);
|
||||
this.clickToCopyButton.Background = Brushes.LightGreen;
|
||||
}
|
||||
|
||||
private void textBoxId_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Clipboard.SetText(this.textBoxId.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,27 +7,25 @@
|
||||
//
|
||||
// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved.
|
||||
|
||||
using log4net;
|
||||
using bsmd.database;
|
||||
using ENI2.Locode;
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using ENI2.Locode;
|
||||
using bsmd.database;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ENI2.Excel
|
||||
{
|
||||
internal class ExcelReader : ExcelBase
|
||||
{
|
||||
internal enum ReadState
|
||||
{ NONE, OK, WARN, FAIL };
|
||||
|
||||
internal enum ReadState { NONE, OK, WARN, FAIL };
|
||||
|
||||
internal enum SheetTypeEnum { BSMD, DAKOSY };
|
||||
internal enum SheetTypeEnum
|
||||
{ BSMD, DAKOSY };
|
||||
|
||||
private readonly SheetTypeEnum _sheetType = SheetTypeEnum.BSMD;
|
||||
|
||||
@ -36,15 +34,16 @@ namespace ENI2.Excel
|
||||
public ExcelReader(string filePath, bool openReadonly = true, bool createNameFields = true)
|
||||
{
|
||||
this._workBook = _excelWorkbooks.Open(filePath, 0, openReadonly, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false);
|
||||
if(createNameFields)
|
||||
if (createNameFields)
|
||||
this.InitNameFields();
|
||||
|
||||
// Determine if this is a Dakosy or BSMD Sheet
|
||||
if(createNameFields)
|
||||
if (createNameFields)
|
||||
_sheetType = (_nameDict.Count > 10) ? SheetTypeEnum.BSMD : SheetTypeEnum.DAKOSY;
|
||||
}
|
||||
|
||||
public SheetTypeEnum SheetType { get { return _sheetType; } }
|
||||
public SheetTypeEnum SheetType
|
||||
{ get { return _sheetType; } }
|
||||
|
||||
internal static void SaveMessage(Message message)
|
||||
{
|
||||
@ -80,7 +79,7 @@ namespace ENI2.Excel
|
||||
if (result != null)
|
||||
{
|
||||
result = result.Trim();
|
||||
if(result.Length > 0)
|
||||
if (result.Length > 0)
|
||||
{
|
||||
result = result.Clean();
|
||||
}
|
||||
@ -120,7 +119,7 @@ namespace ENI2.Excel
|
||||
if (!val.IsNullOrEmpty())
|
||||
{
|
||||
val = val.ToUpper();
|
||||
string portName = LocodeDB.SSNPortNameFromLocode(val);
|
||||
string portName = LocodeDB.SSNPortNameFromLocode(val);
|
||||
if (portName.IsNullOrEmpty())
|
||||
{
|
||||
_log.WarnFormat("unknown Locode {0}", val);
|
||||
@ -135,7 +134,7 @@ namespace ENI2.Excel
|
||||
string val = ReadText(lookup);
|
||||
if (val.IsNullOrEmpty()) return null;
|
||||
|
||||
if(int.TryParse(val, out int result))
|
||||
if (int.TryParse(val, out int result))
|
||||
{
|
||||
if ((result < 10) || (result > 99))
|
||||
_log.WarnFormat("invalid cargo LA code {0}", result);
|
||||
@ -154,16 +153,17 @@ namespace ENI2.Excel
|
||||
string val = this.ReadText(lookup);
|
||||
if (val != null)
|
||||
{
|
||||
if (val.Equals("m", StringComparison.CurrentCultureIgnoreCase) || val.Equals("male", StringComparison.CurrentCultureIgnoreCase)) {
|
||||
if (val.Equals("m", StringComparison.CurrentCultureIgnoreCase) || val.Equals("male", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
result = 1;
|
||||
}
|
||||
else if (val.Equals("f", StringComparison.CurrentCultureIgnoreCase) || val.Equals("female", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
result = 2;
|
||||
}
|
||||
else if (val.Equals("n", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
val.Equals("not applicable", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
val.Equals("d", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
else if (val.Equals("n", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
val.Equals("not applicable", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
val.Equals("d", StringComparison.CurrentCultureIgnoreCase) ||
|
||||
val.Equals("diverse", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
result = 9;
|
||||
@ -173,7 +173,7 @@ namespace ENI2.Excel
|
||||
result = 0;
|
||||
}
|
||||
}
|
||||
if(result == null)
|
||||
if (result == null)
|
||||
{
|
||||
_log.ErrorFormat("error reading gender on {0}", lookup);
|
||||
}
|
||||
@ -192,7 +192,7 @@ namespace ENI2.Excel
|
||||
if (val.Equals("picture_id", StringComparison.CurrentCultureIgnoreCase) || val.Equals("picture id", StringComparison.CurrentCultureIgnoreCase) || val.Equals("4")) result = 3;
|
||||
if (val.Equals("residental_permit", StringComparison.CurrentCultureIgnoreCase) || val.Equals("residental permit", StringComparison.CurrentCultureIgnoreCase) || val.Equals("5")) result = 4;
|
||||
if (val.Equals("other_legal_identity_document", StringComparison.CurrentCultureIgnoreCase) || val.Equals("other legal identity document", StringComparison.CurrentCultureIgnoreCase) || val.Equals("6")) result = 5;
|
||||
if (val.Equals("ic", StringComparison.CurrentCultureIgnoreCase)) result = 0;
|
||||
if (val.Equals("ic", StringComparison.CurrentCultureIgnoreCase)) result = 0;
|
||||
}
|
||||
|
||||
if (!result.HasValue)
|
||||
@ -243,11 +243,11 @@ namespace ENI2.Excel
|
||||
string val = this.ReadText(lookup);
|
||||
byte? result = null;
|
||||
|
||||
if(val != null)
|
||||
if (val != null)
|
||||
{
|
||||
if ((val.IndexOf("load", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("1")) result = 0;
|
||||
if ((val.IndexOf("discharge", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("2")) result = 1;
|
||||
if ((val.IndexOf("transit", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("3")) result = 2;
|
||||
if ((val.IndexOf("transit", StringComparison.OrdinalIgnoreCase) >= 0) || val.Equals("3")) result = 2;
|
||||
}
|
||||
|
||||
if (!result.HasValue)
|
||||
@ -275,7 +275,7 @@ namespace ENI2.Excel
|
||||
_log.ErrorFormat("Wrong ISO code {0}", val);
|
||||
val = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return val;
|
||||
}
|
||||
@ -302,7 +302,7 @@ namespace ENI2.Excel
|
||||
string val = this.ReadText(lookup);
|
||||
byte? result = null;
|
||||
|
||||
if(val!= null)
|
||||
if (val != null)
|
||||
{
|
||||
if (val == "I") result = 0;
|
||||
if (val == "1") result = 0;
|
||||
@ -310,7 +310,7 @@ namespace ENI2.Excel
|
||||
if (val == "2") result = 1;
|
||||
if (val == "III") result = 2;
|
||||
if (val == "3") result = 2;
|
||||
if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0;
|
||||
if (val.Equals("NONE", StringComparison.OrdinalIgnoreCase)) result = 0;
|
||||
}
|
||||
|
||||
if (!result.HasValue)
|
||||
@ -323,7 +323,7 @@ namespace ENI2.Excel
|
||||
{
|
||||
string val = this.ReadText(lookup);
|
||||
bool isValid = false;
|
||||
if(!val.IsNullOrEmpty())
|
||||
if (!val.IsNullOrEmpty())
|
||||
{
|
||||
if (int.TryParse(val, out int typeVal))
|
||||
{
|
||||
@ -371,13 +371,13 @@ namespace ENI2.Excel
|
||||
_log.ErrorFormat("cannot read delivery {0}", lookup);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
internal byte? ReadHazards(string lookup)
|
||||
{
|
||||
string val = this.ReadText(lookup);
|
||||
byte? result = null;
|
||||
if(val != null)
|
||||
if (val != null)
|
||||
{
|
||||
if (val.Equals("p", StringComparison.OrdinalIgnoreCase)) return 0;
|
||||
if (val.Equals("s", StringComparison.OrdinalIgnoreCase)) return 1;
|
||||
@ -390,7 +390,7 @@ namespace ENI2.Excel
|
||||
{
|
||||
string val = this.ReadText(lookup);
|
||||
byte? result = null;
|
||||
if(val != null)
|
||||
if (val != null)
|
||||
{
|
||||
if (val.Equals("a", StringComparison.OrdinalIgnoreCase)) return 0;
|
||||
if (val.Equals("b", StringComparison.OrdinalIgnoreCase)) return 1;
|
||||
@ -401,8 +401,8 @@ namespace ENI2.Excel
|
||||
|
||||
internal DateTime? ReadBirthDate(string lookup)
|
||||
{
|
||||
DateTime? result = this.ReadDate(lookup);
|
||||
if(result.HasValue)
|
||||
DateTime? result = this.ReadDate(lookup);
|
||||
if (result.HasValue)
|
||||
{
|
||||
if (result.Value > DateTime.Now)
|
||||
_log.WarnFormat("Birth date implausible for {0} : {1}", lookup, result);
|
||||
@ -420,7 +420,7 @@ namespace ENI2.Excel
|
||||
{
|
||||
var val = _nameDict[lookup].RefersToRange.Value;
|
||||
if (val is DateTime)
|
||||
{
|
||||
{
|
||||
date = val;
|
||||
}
|
||||
else if (val is double)
|
||||
@ -430,7 +430,7 @@ namespace ENI2.Excel
|
||||
date = DateTime.FromOADate(val);
|
||||
}
|
||||
catch (ArgumentException) { /* .. */ }
|
||||
if(date == null)
|
||||
if (date == null)
|
||||
{
|
||||
CultureInfo provider = CultureInfo.InvariantCulture;
|
||||
string dateString = val.ToString();
|
||||
@ -446,22 +446,37 @@ namespace ENI2.Excel
|
||||
date = tmpDate;
|
||||
}
|
||||
|
||||
if (date == null)
|
||||
{
|
||||
string[] formats = { "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d", "dd-MM-yyyy" };
|
||||
if (DateTime.TryParseExact(val, formats, NumberFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTime tmpDate))
|
||||
date = tmpDate;
|
||||
}
|
||||
|
||||
if (date == null)
|
||||
{
|
||||
CultureInfo en = CultureInfo.CreateSpecificCulture("en-US");
|
||||
string[] formats = { "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d", "dd-MM-yyyy" };
|
||||
if (DateTime.TryParseExact(val, formats, en, DateTimeStyles.None, out DateTime tmpDate))
|
||||
return tmpDate;
|
||||
}
|
||||
|
||||
if (date != null)
|
||||
{
|
||||
if ((date.Value < new DateTime(1899, 1, 1)) || (date.Value > new DateTime(2130, 1, 1)))
|
||||
{
|
||||
date = null; // this can't be right
|
||||
}
|
||||
date = null; // this can't be right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return date;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
{
|
||||
_log.WarnFormat("error parsing datetime for lookup {0}", lookup);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal DateTime? ReadDateTime(string dateField, string timeField)
|
||||
@ -470,26 +485,26 @@ namespace ENI2.Excel
|
||||
DateTime? etaDate = this.ReadDate(dateField);
|
||||
DateTime? etaTime = this.ReadTime(timeField);
|
||||
if (etaDate != 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, DateTimeKind.Local);
|
||||
result = result.Value.ToUniversalTime();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result = new DateTime(etaDate.Value.Year, etaDate.Value.Month, etaDate.Value.Day, 0, 0, 0, DateTimeKind.Local);
|
||||
result = result.Value.ToUniversalTime();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
internal DateTime? ReadTime(string lookup)
|
||||
{
|
||||
DateTime? result = null;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
if (_nameDict.ContainsKey(lookup))
|
||||
@ -505,7 +520,7 @@ namespace ENI2.Excel
|
||||
{
|
||||
result = DateTime.FromOADate(val);
|
||||
}
|
||||
catch(ArgumentException) { }
|
||||
catch (ArgumentException) { }
|
||||
|
||||
if (result == null)
|
||||
{
|
||||
@ -520,7 +535,8 @@ namespace ENI2.Excel
|
||||
}
|
||||
}
|
||||
|
||||
if (val is string) {
|
||||
if (val is string)
|
||||
{
|
||||
if (((string)val).EndsWith("lt", StringComparison.OrdinalIgnoreCase))
|
||||
val = ((string)val).Substring(0, ((string)val).Length - 2).Trim();
|
||||
else
|
||||
@ -549,21 +565,21 @@ namespace ENI2.Excel
|
||||
if (DateTime.TryParseExact(dateString, format, provider, DateTimeStyles.None, out DateTime tmpDate))
|
||||
result = tmpDate;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
_log.WarnFormat("error reading time for lookup {0}", lookup);
|
||||
{
|
||||
_log.WarnFormat("error reading time for lookup {0}", lookup);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
internal double ReadNumberDefaultZero(string lookup)
|
||||
{
|
||||
double? result = this.ReadNumber(lookup);
|
||||
if(!result.HasValue)
|
||||
if (!result.HasValue)
|
||||
{
|
||||
result = 0;
|
||||
}
|
||||
@ -573,9 +589,9 @@ namespace ENI2.Excel
|
||||
internal bool? ReadBoolean(string lookup)
|
||||
{
|
||||
string val = this.ReadText(lookup);
|
||||
if (val == null)
|
||||
if (val == null)
|
||||
return null;
|
||||
|
||||
|
||||
if ((val == "y") || (val == "Y") || val.Equals("yes", StringComparison.OrdinalIgnoreCase) || (val == "1") || (val == "x") || (val == "X"))
|
||||
return true;
|
||||
|
||||
@ -584,17 +600,30 @@ namespace ENI2.Excel
|
||||
|
||||
#region Dakosy-specific functions
|
||||
|
||||
internal bool HasWorksheetNamed(string sheetName)
|
||||
{
|
||||
try
|
||||
{
|
||||
Worksheet theWorkSheet = _workBook.Worksheets[sheetName];
|
||||
return theWorkSheet != null;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
internal string ReadCellAsText(string sheetName, string range)
|
||||
{
|
||||
try
|
||||
{
|
||||
Worksheet workSheet = (Worksheet) _workBook.Worksheets[sheetName];
|
||||
Worksheet workSheet = (Worksheet)_workBook.Worksheets[sheetName];
|
||||
string result = workSheet.Range[range].Text.ToString();
|
||||
if (!result.IsNullOrEmpty())
|
||||
result = result.Trim().Clean();
|
||||
return result;
|
||||
}
|
||||
catch(Exception e)
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.Warn(e.Message);
|
||||
}
|
||||
@ -627,7 +656,6 @@ namespace ENI2.Excel
|
||||
Range aRange = workSheet.Range[range];
|
||||
if (aRange != null)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@ -690,23 +718,19 @@ namespace ENI2.Excel
|
||||
string dateString = ReadCellAsText(sheetName, range);
|
||||
if (dateString != null)
|
||||
{
|
||||
CultureInfo provider = CultureInfo.InvariantCulture;
|
||||
const string dateTimeFormat = "yyyy/MM/dd HH:mm";
|
||||
if (DateTime.TryParseExact(dateString, dateTimeFormat, provider, DateTimeStyles.None, out DateTime tmpDate))
|
||||
return tmpDate.ToUniversalTime();
|
||||
const string dateFormat = "yyyy/MM/dd";
|
||||
if (DateTime.TryParseExact(dateString, dateFormat, provider, DateTimeStyles.None, out DateTime tmpDate2))
|
||||
string[] formats = { "yyyy/MM/dd HH:mm", "yyyy/MM/dd", "dd.MM.yyyy", "dd-MM-yyyy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/MMM/yyyy", "dd/MMM/yyyy", "yyyy-MM-dd", "yyyy-mm-d" };
|
||||
if (DateTime.TryParseExact(dateString, formats, NumberFormatInfo.InvariantInfo, DateTimeStyles.None, out DateTime tmpDate))
|
||||
return tmpDate;
|
||||
CultureInfo en = CultureInfo.CreateSpecificCulture("en-US");
|
||||
if (DateTime.TryParseExact(dateString, formats, en, DateTimeStyles.None, out DateTime tmpDate2))
|
||||
return tmpDate2;
|
||||
const string dateFormat2 = "dd.MM.yyyy";
|
||||
if (DateTime.TryParseExact(dateString, dateFormat2, provider, DateTimeStyles.None, out DateTime tmpDate3))
|
||||
return tmpDate3;
|
||||
return null;
|
||||
}
|
||||
else return null;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion Dakosy-specific functions
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -27,7 +27,7 @@ namespace ENI2
|
||||
{
|
||||
Dictionary<int, string> result = new Dictionary<int, string>();
|
||||
string query = string.Format("SELECT key, text FROM LADG_CargoHandlingCodes WHERE langKey = '{0}'", languageCode);
|
||||
|
||||
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
IDataReader reader = cmd.ExecuteReader();
|
||||
int key;
|
||||
@ -48,19 +48,19 @@ namespace ENI2
|
||||
string query = string.Format("SELECT Code, PortArea FROM INFO_PortArea WHERE Locode = '{0}' ORDER BY PortArea", locode);
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
IDataReader reader = cmd.ExecuteReader();
|
||||
while(reader.Read())
|
||||
while (reader.Read())
|
||||
{
|
||||
string code = null;
|
||||
string portarea = null;
|
||||
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
||||
if (!reader.IsDBNull(1)) portarea = reader.GetString(1);
|
||||
if((code != null) && (portarea != null))
|
||||
if ((code != null) && (portarea != null))
|
||||
{
|
||||
result[code] = string.Format("{0}-{1}", code, portarea);
|
||||
}
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool PortAreaExists(string locode, string portArea)
|
||||
@ -68,7 +68,7 @@ namespace ENI2
|
||||
if (locode.IsNullOrEmpty() || portArea.IsNullOrEmpty()) return false;
|
||||
string query = string.Format("SELECT COUNT(*) FROM INFO_PortArea WHERE Locode = '{0}' AND Code = '{1}'", locode, portArea);
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
long numResults = (long) cmd.ExecuteScalar();
|
||||
long numResults = (long)cmd.ExecuteScalar();
|
||||
return numResults > 0;
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ namespace ENI2
|
||||
string query = string.Format("SELECT Code, Name FROM Nationality ORDER BY Code");
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
IDataReader reader = cmd.ExecuteReader();
|
||||
while(reader.Read())
|
||||
while (reader.Read())
|
||||
{
|
||||
string code = null;
|
||||
string name = null;
|
||||
@ -142,7 +142,7 @@ namespace ENI2
|
||||
string query = string.Format("SELECT PortArea from INFO_PortArea WHERE Code = '{0}'", code);
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
IDataReader reader = cmd.ExecuteReader();
|
||||
if(reader.Read())
|
||||
if (reader.Read())
|
||||
{
|
||||
if (!reader.IsDBNull(0)) result = reader.GetString(0);
|
||||
}
|
||||
@ -182,7 +182,7 @@ namespace ENI2
|
||||
if (!reader.IsDBNull(0)) code = reader.GetInt32(0);
|
||||
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
||||
if ((code != null) && (name != null))
|
||||
result[(int) code] = string.Format("{0} {1}", code, name);
|
||||
result[(int)code] = string.Format("{0} {1}", code, name);
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
@ -235,7 +235,7 @@ namespace ENI2
|
||||
}
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<LocodeDB.LocodeEntry> SSNAllLocodesForCityNameAsEntries(string city)
|
||||
@ -250,7 +250,7 @@ namespace ENI2
|
||||
{
|
||||
if (!reader.IsDBNull(0) && !reader.IsDBNull(1))
|
||||
{
|
||||
LocodeDB.LocodeEntry entry = new LocodeDB.LocodeEntry();
|
||||
LocodeDB.LocodeEntry entry = new LocodeDB.LocodeEntry();
|
||||
entry.Locode = reader.GetString(0);
|
||||
entry.Name = reader.GetString(1);
|
||||
results.Add(entry);
|
||||
@ -269,5 +269,24 @@ namespace ENI2
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<KeyValuePair<string, string>> GetNST2007List()
|
||||
{
|
||||
List<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>();
|
||||
|
||||
string query = string.Format("SELECT Description, NST2007 FROM LADG_NST2007 ORDER BY Description");
|
||||
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||
IDataReader reader = cmd.ExecuteReader();
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.IsDBNull(0)) continue;
|
||||
string desc = reader.GetString(0);
|
||||
string code = reader.GetString(1);
|
||||
KeyValuePair<string, string> kvp = new KeyValuePair<string, string>(desc, code);
|
||||
result.Add(kvp);
|
||||
}
|
||||
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ namespace ENI2
|
||||
{
|
||||
if (!openTabs.ContainsKey(aMessageCore.Id.Value))
|
||||
{
|
||||
ClosableTabItem searchResultItem = new ClosableTabItem();
|
||||
ClosableTabItem searchResultItem = new ClosableTabItem();
|
||||
|
||||
// try to lock the item
|
||||
Guid lockedUserId = Guid.Empty;
|
||||
@ -185,7 +185,7 @@ namespace ENI2
|
||||
}
|
||||
mBuilder.AppendLine();
|
||||
mBuilder.Append(Properties.Resources.textConfirmUnsentMessages);
|
||||
if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||
if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
e.Cancel = true;
|
||||
}
|
||||
@ -202,11 +202,23 @@ namespace ENI2
|
||||
}
|
||||
mBuilder.AppendLine();
|
||||
mBuilder.Append(Properties.Resources.textConfirmUnconfirmedMessages);
|
||||
if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||
if (MessageBox.Show(mBuilder.ToString(), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
e.Cancel = true;
|
||||
}
|
||||
|
||||
// Dez.22: Special case for BRE/BRV: Warning if some messages are not "confirmed"
|
||||
if(drc.Core.PoC.Equals("DEBRE")||drc.Core.PoC.Equals("DEBRV"))
|
||||
{
|
||||
if(drc.HasCriticalInfoMissing(out string missingClass))
|
||||
{
|
||||
_log.WarnFormat("set close warning because at least {0} is missing from BRE/BRV arrival", missingClass);
|
||||
if (MessageBox.Show(string.Format(Properties.Resources.textSpecialCaseBREBRV, missingClass), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!e.Cancel)
|
||||
{
|
||||
if (lockedCores.ContainsKey(tabItem))
|
||||
@ -265,7 +277,7 @@ namespace ENI2
|
||||
Dictionary<Guid, ReportingParty> repPartyDict = DBManager.Instance.GetReportingPartyDict();
|
||||
this.rpControl.ReportingParties = new ObservableCollection<ReportingParty>(repPartyDict.Values);
|
||||
}
|
||||
this.rootContainer.Children.Add(this.rpControl);
|
||||
this.rootContainer.Children.Add(this.rpControl);
|
||||
}
|
||||
else if(sender == this.buttonPOListe)
|
||||
{
|
||||
|
||||
27
ENI2/Properties/Resources.Designer.cs
generated
27
ENI2/Properties/Resources.Designer.cs
generated
@ -2040,6 +2040,15 @@ namespace ENI2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Editor.
|
||||
/// </summary>
|
||||
public static string textEditor {
|
||||
get {
|
||||
return ResourceManager.GetString("textEditor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Edit rules.
|
||||
/// </summary>
|
||||
@ -4236,6 +4245,15 @@ namespace ENI2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Search NST2007 list.
|
||||
/// </summary>
|
||||
public static string textSearchNST {
|
||||
get {
|
||||
return ResourceManager.GetString("textSearchNST", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to SEC - Security.
|
||||
/// </summary>
|
||||
@ -4533,6 +4551,15 @@ namespace ENI2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA hasn't been sent for DEBRE/DEBRV: ({0}) Close anyway?.
|
||||
/// </summary>
|
||||
public static string textSpecialCaseBREBRV {
|
||||
get {
|
||||
return ResourceManager.GetString("textSpecialCaseBREBRV", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Special requirements.
|
||||
/// </summary>
|
||||
|
||||
@ -1852,4 +1852,13 @@
|
||||
<data name="textNewDGItem" xml:space="preserve">
|
||||
<value>New dangerous goods item</value>
|
||||
</data>
|
||||
<data name="textEditor" xml:space="preserve">
|
||||
<value>Editor</value>
|
||||
</data>
|
||||
<data name="textSearchNST" xml:space="preserve">
|
||||
<value>Search NST2007 list</value>
|
||||
</data>
|
||||
<data name="textSpecialCaseBREBRV" xml:space="preserve">
|
||||
<value>At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA hasn't been sent for DEBRE/DEBRV: ({0}) Close anyway?</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -24,7 +24,7 @@ namespace bsmd.database
|
||||
#region Properties
|
||||
|
||||
[ShowReport]
|
||||
[Validation(ValidationCode.NOT_NULL)]
|
||||
// [Validation(ValidationCode.NOT_NULL)] // damit sieht die Validierung "sauberer" aus (v7.7, Dez. 2022)
|
||||
[LookupName("ATA.ATAPortOfCall")]
|
||||
[ENI2Validation]
|
||||
public DateTime? ATAPortOfCall { get; set; }
|
||||
|
||||
@ -24,7 +24,7 @@ namespace bsmd.database
|
||||
#region Properties
|
||||
|
||||
[ShowReport]
|
||||
[Validation(ValidationCode.NOT_NULL)]
|
||||
// [Validation(ValidationCode.NOT_NULL)] // damit sieht die Validierung "sauberer" aus (v7.7, Dez. 2022)
|
||||
[LookupName("ATD.ATDPortOfCall")]
|
||||
[ENI2Validation]
|
||||
public DateTime? ATDPortOfCall { get; set; }
|
||||
|
||||
@ -256,34 +256,26 @@ namespace bsmd.database
|
||||
|
||||
public override void Validate(List<MessageError> errors, List<MessageViolation> violations)
|
||||
{
|
||||
if (this.GetValidationBlock() == ValidationBlock.BLOCK1)
|
||||
if (this.GetValidationBlock() == ValidationBlock.BLOCK1) // VISIT
|
||||
{
|
||||
if(this.ETDFromPortOfCall.HasValue && this.ETAToPortOfCall.HasValue &&
|
||||
(this.ETDFromPortOfCall < this.ETAToPortOfCall))
|
||||
if(this.ETDFromPortOfCall.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromPortOfCall < this.ETAToPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromPortOfCall implausible", this.ETDFromPortOfCall?.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
|
||||
// 8.11.20 Validierung gegen ETA /ETD in der Vergangenheit
|
||||
if((this.ETAToPortOfCall < DateTime.Now) || (this.ETAToPortOfCall.HasValue && this.ETAToPortOfCall.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToPortOfCall: might be implausible", this.ETAToPortOfCall.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
// NSW 7.1 ETDFromLastPort Pflichtfeld, wenn LastPort != ZZUKN
|
||||
if(!this.LastPort.IsNullOrEmpty() && !this.LastPort.Equals("ZZUKN") && !this.ETDFromLastPort.HasValue)
|
||||
{
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E125, "ETDFromLastPort must be provided for a given last port", "", this.Title, null, this.Tablename));
|
||||
}
|
||||
if((this.ETDFromLastPort < DateTime.Now.AddDays(-14)) || (this.ETDFromLastPort.HasValue && this.ETDFromLastPort.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromLastPort: might be implausible", this.ETDFromLastPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
if ((this.ETDFromPortOfCall < DateTime.Now.AddDays(-14)) || (this.ETDFromPortOfCall > DateTime.Now.AddDays(14)) || (this.ETDFromPortOfCall.HasValue && this.ETDFromPortOfCall.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromPortOfCall: might be implausible", this.ETDFromPortOfCall.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
if ((this.ETAToNextPort < DateTime.Now) || (this.ETAToNextPort > DateTime.Now.AddDays(14)) || (this.ETAToNextPort.HasValue && this.ETAToNextPort.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToNextPort: might be implausible", this.ETAToNextPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
|
||||
if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) && (this.ETAToNextPort <= ETDFromPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if (this.ETDFromLastPort.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromLastPort >= this.ETAToPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if (this.CallPurposes.IsNullOrEmpty())
|
||||
{
|
||||
@ -300,34 +292,47 @@ namespace bsmd.database
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else // TRANSIT
|
||||
{
|
||||
if (this.ETDFromKielCanal.HasValue && this.ETAToKielCanal.HasValue && (this.ETDFromKielCanal < this.ETAToKielCanal))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E121, "ETDFromKielCanal implausible", this.ETDFromKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
|
||||
if(this.ETDFromKielCanal.HasValue && this.ETDFromKielCanal.Value.ToLocalTime().IsTimeEmpty())
|
||||
if ((this.ETAToKielCanal < DateTime.Now) || (this.ETAToKielCanal.HasValue && this.ETAToKielCanal.Value.ToLocalTime().IsTimeEmpty()))
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToKielCanal: might be implausible", this.ETAToKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
|
||||
if ((this.ETDFromKielCanal < DateTime.Now.AddDays(-14)) || (this.ETDFromKielCanal > DateTime.Now.AddDays(14)) || (this.ETDFromKielCanal.HasValue && this.ETDFromKielCanal.Value.ToLocalTime().IsTimeEmpty()))
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromKielCanal: might be implausible", this.ETDFromKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
|
||||
if(this.ETAToKielCanal.HasValue && this.ETAToKielCanal.Value.ToLocalTime().IsTimeEmpty())
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToKielCanal: might be implausible", this.ETAToKielCanal.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
if (this.ETDFromKielCanal.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) && (this.ETAToNextPort <= ETDFromKielCanal))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
if (this.ETDFromLastPort.HasValue && this.ETAToKielCanal.HasValue && (this.ETDFromLastPort >= this.ETAToKielCanal))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
|
||||
}
|
||||
|
||||
if((this.LastPort?.Equals("ZZUKN") == true) && this.ETDFromLastPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
|
||||
// NSW 7.1 ETDFromLastPort Pflichtfeld, wenn LastPort != ZZUKN
|
||||
if (!this.LastPort.IsNullOrEmpty() && !this.LastPort.Equals("ZZUKN") && !this.ETDFromLastPort.HasValue)
|
||||
{
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E125, "ETDFromLastPort must be provided for a given last port", "", this.Title, null, this.Tablename));
|
||||
}
|
||||
if ((this.ETDFromLastPort < DateTime.Now.AddDays(-14)) || (this.ETDFromLastPort.HasValue && this.ETDFromLastPort.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETDFromLastPort: might be implausible", this.ETDFromLastPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
if ((this.ETAToNextPort < DateTime.Now) || (this.ETAToNextPort > DateTime.Now.AddDays(14)) || (this.ETAToNextPort.HasValue && this.ETAToNextPort.Value.ToLocalTime().IsTimeEmpty()))
|
||||
{
|
||||
violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Check ETAToNextPort: might be implausible", this.ETAToNextPort.Value.ToLocalTime().ToString(), this.Title, null, this.Tablename));
|
||||
}
|
||||
|
||||
if (this.ETDFromPortOfCall.HasValue && this.ETAToNextPort.HasValue && (this.NextPort?.Equals("ZZUKN") == false) &&
|
||||
(this.ETAToNextPort <= ETDFromPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.E122, "ETAToNextPort", null, this.Title, null, this.Tablename));
|
||||
if ((this.LastPort?.Equals("ZZUKN") == true) && this.ETDFromLastPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETDFromLastPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
|
||||
|
||||
if ((this.NextPort?.Equals("ZZUKN") == false) && !this.ETAToNextPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "ETAToNextPort missing", null, this.Title, null, this.Tablename));
|
||||
|
||||
if((this.NextPort?.Equals("ZZUKN") == true) && this.ETAToNextPort.HasValue)
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE_ZZUKN, "ETAToNextPort cannot be set if ZZUKN", null, this.Title, null, this.Tablename));
|
||||
|
||||
if (this.ETDFromLastPort.HasValue && this.ETAToPortOfCall.HasValue && (this.ETDFromLastPort >= this.ETAToPortOfCall))
|
||||
errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "ETDFromLastPort", null, this.Title, null, this.Tablename));
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override DatabaseEntity.ValidationBlock GetValidationBlock()
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
|
||||
[assembly: AssemblyCompany("schick Informatik")]
|
||||
[assembly: AssemblyProduct("BSMD NSW interface")]
|
||||
[assembly: AssemblyInformationalVersion("7.6.0")]
|
||||
[assembly: AssemblyInformationalVersion("7.7.0")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014-2022 schick Informatik")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
@ -1,4 +1,4 @@
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion("7.6.0.*")]
|
||||
[assembly: AssemblyVersion("7.7.0.*")]
|
||||
|
||||
|
||||
@ -42,7 +42,11 @@ namespace bsmd.database
|
||||
/// <summary>
|
||||
/// System-User (Testing, Tool)
|
||||
/// </summary>
|
||||
SYSTEM = 4
|
||||
SYSTEM = 4,
|
||||
/// <summary>
|
||||
/// kann bestimmte Dinge (e.g. templates) im ENI bearbeiten
|
||||
/// </summary>
|
||||
EDITOR = 8
|
||||
};
|
||||
|
||||
#endregion
|
||||
@ -156,6 +160,12 @@ namespace bsmd.database
|
||||
set { this.SetUserFlag(value, UserFlags.ADMIN); }
|
||||
}
|
||||
|
||||
public bool IsEditor
|
||||
{
|
||||
get { return (this.Flags & (int)UserFlags.EDITOR) != 0; }
|
||||
set { this.SetUserFlag(value, UserFlags.EDITOR); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
3011
misc/LADG_NST2007.csv
Normal file
3011
misc/LADG_NST2007.csv
Normal file
File diff suppressed because it is too large
Load Diff
17
misc/bsmd-emswe_eu.csr
Normal file
17
misc/bsmd-emswe_eu.csr
Normal file
@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICsDCCAZgCAQAwazELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJyZW1lbjEPMA0G
|
||||
A1UEBwwGQnJlbWVuMSIwIAYDVQQKDBlCcmVtZXIgU2NoaWZmc21lbGRlZGllbnN0
|
||||
MRYwFAYDVQQDDA1ic21kLWVtc3dlLmV1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEApvboTA8dRaz1hBcv3y6v+CBIdE3jUPNqOsZAjGuD9+gpCFv9F/ve
|
||||
r+kQGvfRCPTPTPk7FM4hC2TKGk6PwmshkWdru4c4S7mYJW3KGe7t0wIgv/g1FkUV
|
||||
eR5sXl4zvHnBXuV+ciuqb8RVW7izuNHVVUFAVhUlGROBb2ERqW5Cq7JCUM68H6l6
|
||||
ZAW0yltrO0BSEV6UTxja3f9K4Sz1AcvXXxFeJGUoUZ9J83n3kS5vGyyjeqA3mz7j
|
||||
NrkYxvXgRJHw4qBxnNtj0YkmwNPg/KFtNslsbUjvdA83s1dYIJA2YaoJPu+b/Nj0
|
||||
guUaNbxUcFXP7VxU9P1sj5/Nwu4yef2a9wIDAQABoAAwDQYJKoZIhvcNAQELBQAD
|
||||
ggEBADXDUI9c6GI1hv4AB//E0RBD0aJzuM8hLCI5GDEkgwfhdTI/QOHTZI6G+TT5
|
||||
mq6AJgha67ZcOGnP7tr38YxNxGWmLOo+pRS9qTBc3A7ynuvvhKiaZtbhLSpDBgs1
|
||||
JQtMYOnvSOzmYSsUhwZl/ugvrTnA5oe453O8cRhFR4/IUzm2wjWrUhiY15fUtJq9
|
||||
MtBRmGHZ3P92e9K1KBvTtsmbmU1/YidVnTvjmItQKkg3Ga9M/Bech19IEQLFdNET
|
||||
wA3Tn18anNSdB22Gzj6eyZYaEtSnpmfjaxZFJixF4r8h/sZY9KD93arRV5vWjKHX
|
||||
tcUl76Jw2skPpMfG94Xd0sc9DrI=
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
28
misc/bsmd-emswe_eu.key
Normal file
28
misc/bsmd-emswe_eu.key
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCm9uhMDx1FrPWE
|
||||
Fy/fLq/4IEh0TeNQ82o6xkCMa4P36CkIW/0X+96v6RAa99EI9M9M+TsUziELZMoa
|
||||
To/CayGRZ2u7hzhLuZglbcoZ7u3TAiC/+DUWRRV5HmxeXjO8ecFe5X5yK6pvxFVb
|
||||
uLO40dVVQUBWFSUZE4FvYRGpbkKrskJQzrwfqXpkBbTKW2s7QFIRXpRPGNrd/0rh
|
||||
LPUBy9dfEV4kZShRn0nzefeRLm8bLKN6oDebPuM2uRjG9eBEkfDioHGc22PRiSbA
|
||||
0+D8oW02yWxtSO90DzezV1ggkDZhqgk+75v82PSC5Ro1vFRwVc/tXFT0/WyPn83C
|
||||
7jJ5/Zr3AgMBAAECggEAfEGCbaBN852ddflfmiP/t5Qm989DXepZY3ZJcXdOVj/D
|
||||
0cHL4H6Eoru7TaaiPZ0bbbiJnJkvBHC069ENse3SpIioJ36hidGMhkZnwtcKzR9n
|
||||
ShapQ3KUYXgfxDctH5YpL7txV/xhMh6WO9WAgwo+Tt1pyOahnkDi8gX2g/ZXzbh+
|
||||
3+LuY7QHUQSdmb/8IjAiY9e0uh7rscTiPOb3fH6Fucs5iCsyOMu20/Vri50WGNAK
|
||||
c367ijMl5zSf0rAOXAdV7kQ6zOQ2FESRlRtGjeMhEEdty9ONgkrdGlyAuR878Kn3
|
||||
LR9TDBVmgrDUV1tGjUpq6pfePphIh2DNQ/EnKzF5OQKBgQDa/8Zq6zY6knzHXd/a
|
||||
QfhAa46+ulztA9gG+qm9LU7PjF1yKgbaXLFuarRdKVd6JXCHk0aItWYz1ptuTKEV
|
||||
AbN19hJViSRlZp2rMyRAxW44q6mH7Fd0zkEDcM/c489gULRDeEWcr5m0KJciLCXt
|
||||
/epzS90pxGmWcUYbpEBIbOCjkwKBgQDDLIMnT5LmRLRbqZoZZlms9xl/kIFiiOTB
|
||||
8O4tHAuaS2js1jSdz+eGM24lGDpMGznuloSLdVBMr4BVNEFLX6UFjr4L8mEtDlfg
|
||||
Yn02fPKj05TuGN+VixpUq4n1WPXoE0/f2KziGxJGyDUgSiD6ySVDUNhAljJkRLuw
|
||||
BuO6zLZRjQKBgQCY4cvrYg52b0MKjr8yB7G9jxiUj1dF4tQRczXBqfqFq3CkvTAR
|
||||
inoXIgiNrMmzrKVVD/xCfZg+ggf5xScCmjBlHgaIjffJjgxtsoMRcIJUr4nnKJeZ
|
||||
JE+AjmWdx69ChrSBEVpPWssLWPbA1V8ZOJROLtzTRpmLe8I8k7qIlPFxXwKBgQCb
|
||||
FUSFuQIF/LO/Xg23fw9kk9fr9/wHOrVisbnfmDhT+vW9sxuOBkR262jrCsxP6xZm
|
||||
Ua2yTp5mwNFdYq87YB11RA4Y2hiDP7Ft93R9Fl2K9bWSV6tZXXWnr8JodK65IJdI
|
||||
TBhbdZ1ZJv6n0J9SBwCX86ZR88bIy6DDZ0YPCVkZhQKBgQCNX2wtDbkNHefJzvng
|
||||
gf8lwSirsmbb+lKRH55bdvcC2T4JiyZnyUzQ4hc8UWYtpzL9uXGo0NMNe6rHHOM7
|
||||
fM66OcZDjM8jy5TZxj9qdKrghvGzKhDMl8dZK4V4njUVvFmERZ6QKkojswA660YN
|
||||
uyCANbdzyFO0K6/8kP5Ms48BfA==
|
||||
-----END PRIVATE KEY-----
|
||||
35
misc/cert_bsmd-emswe.eu.crt
Normal file
35
misc/cert_bsmd-emswe.eu.crt
Normal file
@ -0,0 +1,35 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGAzCCBOugAwIBAgIQBjhqmobDgXwAAkDwc4TUnDANBgkqhkiG9w0BAQsFADBu
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
|
||||
RFYgVExTIENBIC0gRzEwHhcNMjIxMTA1MDAwMDAwWhcNMjMxMTA1MjM1OTU5WjAY
|
||||
MRYwFAYDVQQDEw1ic21kLWVtc3dlLmV1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEApvboTA8dRaz1hBcv3y6v+CBIdE3jUPNqOsZAjGuD9+gpCFv9F/ve
|
||||
r+kQGvfRCPTPTPk7FM4hC2TKGk6PwmshkWdru4c4S7mYJW3KGe7t0wIgv/g1FkUV
|
||||
eR5sXl4zvHnBXuV+ciuqb8RVW7izuNHVVUFAVhUlGROBb2ERqW5Cq7JCUM68H6l6
|
||||
ZAW0yltrO0BSEV6UTxja3f9K4Sz1AcvXXxFeJGUoUZ9J83n3kS5vGyyjeqA3mz7j
|
||||
NrkYxvXgRJHw4qBxnNtj0YkmwNPg/KFtNslsbUjvdA83s1dYIJA2YaoJPu+b/Nj0
|
||||
guUaNbxUcFXP7VxU9P1sj5/Nwu4yef2a9wIDAQABo4IC8TCCAu0wHwYDVR0jBBgw
|
||||
FoAUVXRPsnJP9WC6UNHX5lFcmgGHGtcwHQYDVR0OBBYEFBziyqorVnL5UZ+MmdHi
|
||||
B2dRT2b3MCsGA1UdEQQkMCKCDWJzbWQtZW1zd2UuZXWCEXd3dy5ic21kLWVtc3dl
|
||||
LmV1MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH
|
||||
AwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3
|
||||
dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGG
|
||||
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2Nh
|
||||
Y2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1H
|
||||
MS5jcnQwCQYDVR0TBAIwADCCAX8GCisGAQQB1nkCBAIEggFvBIIBawFpAHcA6D7Q
|
||||
2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAGER8N2hQAABAMASDBGAiEA
|
||||
jFJjUH0ypQ2CZysGcxDsuQGWiXKC2YLwcdDi/TRVUmQCIQCQ8Z8eTutA7+z5GQeZ
|
||||
sTDcWliMWwg0opagw6jGYeEJrwB1ALNzdwfhhFD4Y4bWBancEQlKeS2xZwwLh9zw
|
||||
Aw55NqWaAAABhEfDdqkAAAQDAEYwRAIgfq4ILA3L781Wpl9MzwuZ4QwYfs9PXAcf
|
||||
mwwVWIdp6M8CIF8mK3ze6v6Qomtw7Yyah1VdHKW2G6X0EVbMlb6iG1o1AHcAtz77
|
||||
JN+cTbp18jnFulj0bF38Qs96nzXEnh0JgSXttJkAAAGER8N2YAAABAMASDBGAiEA
|
||||
lIYSvWBcBkpB++CkL+9DzhNl51hUgDYGupKgipq7gkkCIQDfwVzxkg9mJlpVpaGA
|
||||
rQmVs8gtAJTa5Ko72522DGbjxzANBgkqhkiG9w0BAQsFAAOCAQEALOEtbhcB4kB9
|
||||
1rkD0hoTzmy2lOZ/EuBXnrKzqTxtgDcCX7WUY6shIZYKqD1mjsUNwsd4LuAsZ18X
|
||||
1+dR2ynhfe0P2HFjrHFF29E5Vn8MWDuzmfW8OglJdz2uckh2VW0Q/ydjpEvBGyZe
|
||||
Tzms0HnyLPJrCRM7T3hSlTff2DF5SZCOsDg53rex6bcg5jS9tZjcs17wZzm5Hw6J
|
||||
+39eSN7nwnl5DxJ5sFd0lRaQ7UnDSB1/HWKQA9NEHuuE93sMb/yfWfxAcnFJQ8pn
|
||||
mj1rVqoyAgB/jQT5Q/fXIfDM0IwaZcWWc4lu70nzbpqgXzPXrC0IdkuRtfMoDI88
|
||||
6u/DhTWwmA==
|
||||
-----END CERTIFICATE-----
|
||||
BIN
misc/db.sqlite
BIN
misc/db.sqlite
Binary file not shown.
@ -1,12 +1,9 @@
|
||||
1) copyprod.cmd ausführen (damit app.config richtig überschrieben wird)
|
||||
2) Prüfen ob das ENI App logo richtig ist
|
||||
3) VS: Publish: Folder Location und Url richtig auswählen
|
||||
4) Signing: "Sign the ClickOnce manifests": Hier für Prod das Zertifikat
|
||||
auswählen, das am 10.5.23 abläuft. Das Test Zertifikat läuft am 12.11.22 ab.
|
||||
4) Signing: "Sign the ClickOnce manifests": Hier für Prod das Zertifikat
|
||||
Schiffsmelder CA auswählen, das am 02/24 abläuft.
|
||||
Auswahl über "Select from Store.."
|
||||
5) Release build einstellen
|
||||
5) Release Build einstellen
|
||||
6) komplett neu bauen (clean!)
|
||||
7) In Publish -> Options -> Description bei Product name "ENI" statt "ENI Testversion"
|
||||
8) Publish now
|
||||
9) Upload
|
||||
10) last/next Version.txt pflegen
|
||||
7) In Description bei Product name "ENI" statt "ENI Testversion"
|
||||
|
||||
27
misc/intermediate_bsmd-emswe.eu.crt
Normal file
27
misc/intermediate_bsmd-emswe.eu.crt
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
|
||||
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
|
||||
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
|
||||
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
|
||||
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
|
||||
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
|
||||
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
|
||||
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
|
||||
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
|
||||
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
|
||||
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
|
||||
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
|
||||
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
|
||||
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
|
||||
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
|
||||
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
|
||||
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
|
||||
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
|
||||
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
|
||||
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
|
||||
-----END CERTIFICATE-----
|
||||
22
misc/root_bsmd-emswe.eu.crt
Normal file
22
misc/root_bsmd-emswe.eu.crt
Normal file
@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
||||
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
||||
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
||||
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
||||
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
||||
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
||||
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
||||
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
||||
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
||||
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
||||
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
||||
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
||||
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
||||
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
||||
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
||||
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
||||
-----END CERTIFICATE-----
|
||||
Loading…
Reference in New Issue
Block a user