git_bsmd/ENI-2/ENI2/ENI2/DetailViewControls/PortCallDetailControl.xaml.cs

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
}
}