// 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 { /// /// Interaction logic for PortCallDetailControl.xaml /// 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 } }