206 lines
9.2 KiB
C#
206 lines
9.2 KiB
C#
// Copyright (c) 2017 schick Informatik
|
|
// Description: Detailansicht NOA_NOD, AGNT
|
|
//
|
|
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
|
|
using bsmd.database;
|
|
using ENI2.EditControls;
|
|
using ENI2.Util;
|
|
|
|
namespace ENI2.DetailViewControls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for PortCallDetailControl.xaml
|
|
/// </summary>
|
|
public partial class PortCallDetailControl : DetailBaseControl
|
|
{
|
|
private NOA_NOD _noa_nod;
|
|
private AGNT _agnt;
|
|
|
|
public PortCallDetailControl()
|
|
{
|
|
InitializeComponent();
|
|
this.Loaded += PortCallDetailControl_Loaded;
|
|
}
|
|
|
|
private void PortCallDetailControl_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
// NOA_NOD
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETAToKielCanal, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETAToNextPort, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETAToPortOfCall, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETDFromKielCanal, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETDFromLastPort, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterDateTimePickerChange(this.dateTimePicker_ETDFromPortOfCall, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterLocodeChange(this.locodeControl_LastPort, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterLocodeChange(this.locodeControl_NextPort, Message.NotificationClass.NOA_NOD);
|
|
this.RegisterCheckboxChange(this.checkBox_IsAnchored, Message.NotificationClass.NOA_NOD);
|
|
|
|
// AGNT
|
|
this.RegisterTextboxChange(this.textBox_AgentCity, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentCompanyName, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentEMail, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentFax, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentFirstName, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentLastName, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentPhone, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentPostalCode, Message.NotificationClass.AGNT);
|
|
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, Message.NotificationClass.AGNT);
|
|
}
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
foreach (Message aMessage in this.Messages)
|
|
{
|
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD)
|
|
{
|
|
if (aMessage.Elements.Count > 0)
|
|
_noa_nod = aMessage.Elements[0] as NOA_NOD;
|
|
else
|
|
_noa_nod = new NOA_NOD(); // TODO
|
|
this.ControlMessages.Add(aMessage);
|
|
}
|
|
|
|
if(aMessage.MessageNotificationClass == Message.NotificationClass.AGNT)
|
|
{
|
|
if (aMessage.Elements.Count > 0)
|
|
_agnt = aMessage.Elements[0] as AGNT;
|
|
else
|
|
_agnt = new AGNT();
|
|
this.ControlMessages.Add(aMessage);
|
|
}
|
|
}
|
|
|
|
this.dateTimePicker_ETAToKielCanal.IsEnabled = this.Core.IsTransit;
|
|
this.dateTimePicker_ETDFromKielCanal.IsEnabled = this.Core.IsTransit;
|
|
this.dateTimePicker_ETAToPortOfCall.IsEnabled = !this.Core.IsTransit;
|
|
this.dateTimePicker_ETDFromPortOfCall.IsEnabled = !this.Core.IsTransit;
|
|
|
|
this.noaNodGroupBox.DataContext = _noa_nod;
|
|
this.locodeControl_LastPort.DataContext = _noa_nod;
|
|
this.locodeControl_NextPort.DataContext = _noa_nod;
|
|
|
|
this.dataGridCallPurposes.Initialize();
|
|
this.dataGridCallPurposes.ItemsSource = _noa_nod.CallPurposes;
|
|
this.dataGridCallPurposes.EditRequested += DataGridCallPurposes_EditRequested;
|
|
this.dataGridCallPurposes.AddingNewItem += DataGridCallPurposes_AddingNewItem;
|
|
this.dataGridCallPurposes.CreateRequested += DataGridCallPurposes_CreateRequested;
|
|
this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
|
|
|
|
|
|
this.agentGroupBox.DataContext = _agnt;
|
|
|
|
this.dateTimePicker_ETAToKielCanal.DataContext = _noa_nod;
|
|
this.dateTimePicker_ETAToNextPort.DataContext = _noa_nod;
|
|
this.dateTimePicker_ETAToPortOfCall.DataContext = _noa_nod;
|
|
this.dateTimePicker_ETDFromKielCanal.DataContext = _noa_nod;
|
|
this.dateTimePicker_ETDFromLastPort.DataContext = _noa_nod;
|
|
this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod;
|
|
|
|
this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK;
|
|
}
|
|
|
|
private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
CallPurpose cp = obj as CallPurpose;
|
|
if (cp != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
_noa_nod.CallPurposes.Remove(cp);
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(cp);
|
|
this.dataGridCallPurposes.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridCallPurposes_CreateRequested()
|
|
{
|
|
EditCallPurposeDialog ecpd = new EditCallPurposeDialog();
|
|
ecpd.AddClicked += () =>
|
|
{
|
|
ecpd.CopyValuesToEntity();
|
|
if (!_noa_nod.CallPurposes.Contains(ecpd.CallPurpose))
|
|
_noa_nod.CallPurposes.Add(ecpd.CallPurpose);
|
|
this.dataGridCallPurposes.Items.Refresh();
|
|
ecpd.CallPurpose = new CallPurpose();
|
|
ecpd.CallPurpose.NOA_NOD = this._noa_nod;
|
|
this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
|
|
};
|
|
ecpd.CallPurpose = new CallPurpose();
|
|
ecpd.CallPurpose.NOA_NOD = this._noa_nod;
|
|
|
|
if(ecpd.ShowDialog() ?? false)
|
|
{
|
|
if(!_noa_nod.CallPurposes.Contains(ecpd.CallPurpose))
|
|
_noa_nod.CallPurposes.Add(ecpd.CallPurpose);
|
|
this.dataGridCallPurposes.Items.Refresh();
|
|
// signal up
|
|
this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
|
|
}
|
|
}
|
|
|
|
private void DataGridCallPurposes_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
|
{
|
|
this.DataGridCallPurposes_CreateRequested();
|
|
}
|
|
|
|
private void DataGridCallPurposes_EditRequested(DatabaseEntity obj)
|
|
{
|
|
EditCallPurposeDialog ecpd = new EditCallPurposeDialog();
|
|
ecpd.CallPurpose = obj as CallPurpose;
|
|
ecpd.AddClicked += () =>
|
|
{
|
|
ecpd.CopyValuesToEntity();
|
|
if (!_noa_nod.CallPurposes.Contains(ecpd.CallPurpose))
|
|
_noa_nod.CallPurposes.Add(ecpd.CallPurpose);
|
|
this.dataGridCallPurposes.Items.Refresh();
|
|
ecpd.CallPurpose = new CallPurpose();
|
|
ecpd.CallPurpose.NOA_NOD = this._noa_nod;
|
|
this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
|
|
};
|
|
if (ecpd.ShowDialog() ?? false)
|
|
{
|
|
if (!_noa_nod.CallPurposes.Contains(ecpd.CallPurpose))
|
|
_noa_nod.CallPurposes.Add(ecpd.CallPurpose);
|
|
this.dataGridCallPurposes.Items.Refresh();
|
|
// signal up
|
|
this.SublistElementChanged(Message.NotificationClass.NOA_NOD);
|
|
}
|
|
}
|
|
|
|
#region Highlighting
|
|
|
|
public override void HighlightErrorMessageContainer()
|
|
{
|
|
if (this._noa_nod.MessageHeader.HasErrors)
|
|
{
|
|
HighlightService.HighlightControl(this.portCallGroupBox, HighlightService.HighlightStyle.ERROR, this._noa_nod.MessageHeader);
|
|
}
|
|
|
|
if (this._agnt.MessageHeader.HasErrors)
|
|
{
|
|
HighlightService.HighlightControl(this.agentGroupBox, HighlightService.HighlightStyle.ERROR, this._agnt.MessageHeader);
|
|
}
|
|
}
|
|
|
|
public override void HighlightViolationMessageContainer()
|
|
{
|
|
if (this._noa_nod.MessageHeader.HasViolations)
|
|
{
|
|
HighlightService.HighlightControl(this.portCallGroupBox, HighlightService.HighlightStyle.VIOLATION, this._noa_nod.MessageHeader);
|
|
}
|
|
|
|
if (this._agnt.MessageHeader.HasViolations)
|
|
{
|
|
HighlightService.HighlightControl(this.agentGroupBox, HighlightService.HighlightStyle.VIOLATION, this._agnt.MessageHeader);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|