diff --git a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs index 1efebed..e9b584a 100644 --- a/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyIncomingControl.xaml.cs @@ -31,6 +31,8 @@ namespace BreCalClient public Times Times { get; set; } = new(); + public Extensions.TypeEnum CallType { get; set; } + #endregion #region event handler diff --git a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs index eca4860..b697ebd 100644 --- a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml.cs @@ -4,8 +4,6 @@ using BreCalClient.misc.Model; using System; -using System.Collections.Generic; -using System.Linq; using System.Windows; using static BreCalClient.Extensions; @@ -32,6 +30,8 @@ namespace BreCalClient public Times Times { get; set; } = new(); + public Extensions.TypeEnum CallType { get; set; } + #endregion #region event handler diff --git a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs index 93fdbfa..beb7e04 100644 --- a/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs +++ b/src/BreCalClient/EditTimesAgencyShiftingControl.xaml.cs @@ -4,8 +4,6 @@ using BreCalClient.misc.Model; using System; -using System.Collections.Generic; -using System.Linq; using System.Windows; using static BreCalClient.Extensions; @@ -32,6 +30,8 @@ namespace BreCalClient public Times Times { get; set; } = new(); + public Extensions.TypeEnum CallType { get; set; } + #endregion #region event handler diff --git a/src/BreCalClient/EditTimesControl.xaml.cs b/src/BreCalClient/EditTimesControl.xaml.cs index 94c26dc..66ceb6d 100644 --- a/src/BreCalClient/EditTimesControl.xaml.cs +++ b/src/BreCalClient/EditTimesControl.xaml.cs @@ -27,6 +27,8 @@ namespace BreCalClient public Times Times { get; set; } = new(); + public Extensions.TypeEnum CallType { get; set; } + internal Extensions.ParticipantType ParticipantType { get; set; } = Extensions.ParticipantType.NONE; #endregion @@ -36,19 +38,7 @@ namespace BreCalClient private void Window_Loaded(object sender, RoutedEventArgs e) { this.CopyToControls(); - bool enableControls = this.Times.ParticipantId == App.Participant.Id; - - this.datePickerETABerth.IsEnabled = enableControls; - this.checkBoxEtaBerthFixed.IsEnabled = enableControls; - this.datePickerETDBerth.IsEnabled = enableControls; - this.checkBoxEtDBerthFixed.IsEnabled = enableControls; - this.datePickerLockTime.IsEnabled = enableControls; - this.checkBoxLockTimeFixed.IsEnabled = enableControls; - this.datePickerZoneEntry.IsEnabled = enableControls; - this.checkBoxZoneEntryFixed.IsEnabled = enableControls; - this.textBoxRemarks.IsEnabled = enableControls; - this.buttonOK.IsEnabled = enableControls; - + this.EnableControls(); } private void buttonOK_Click(object sender, RoutedEventArgs e) @@ -96,6 +86,37 @@ namespace BreCalClient this.checkBoxZoneEntryFixed.IsChecked = this.Times.ZoneEntryFixed; } + private void EnableControls() + { + switch (this.ParticipantType) + { + case Extensions.ParticipantType.MOORING: + case Extensions.ParticipantType.PORT_ADMINISTRATION: + case Extensions.ParticipantType.TUG: + this.datePickerETABerth.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxEtaBerthFixed.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.datePickerETDBerth.IsEnabled = (CallType == Extensions.TypeEnum.Outgoing || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxEtDBerthFixed.IsEnabled = (CallType == Extensions.TypeEnum.Outgoing || CallType == Extensions.TypeEnum.Shifting); + this.datePickerLockTime.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxLockTimeFixed.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.datePickerZoneEntry.IsEnabled = false; + this.checkBoxZoneEntryFixed.IsEnabled = false; + this.textBoxRemarks.IsEnabled = true; + break; + case Extensions.ParticipantType.PILOT: + this.datePickerETABerth.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxEtaBerthFixed.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.datePickerETDBerth.IsEnabled = (CallType == Extensions.TypeEnum.Outgoing || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxEtDBerthFixed.IsEnabled = (CallType == Extensions.TypeEnum.Outgoing || CallType == Extensions.TypeEnum.Shifting); + this.datePickerLockTime.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.checkBoxLockTimeFixed.IsEnabled = (CallType == Extensions.TypeEnum.Incoming || CallType == Extensions.TypeEnum.Shifting); + this.datePickerZoneEntry.IsEnabled = (CallType == Extensions.TypeEnum.Incoming); + this.checkBoxZoneEntryFixed.IsEnabled = (CallType == Extensions.TypeEnum.Incoming); + this.textBoxRemarks.IsEnabled = true; + break; + } + } + #endregion #region clear value event handler diff --git a/src/BreCalClient/EditTimesTerminalControl.xaml.cs b/src/BreCalClient/EditTimesTerminalControl.xaml.cs index 3f2e939..26ffb9f 100644 --- a/src/BreCalClient/EditTimesTerminalControl.xaml.cs +++ b/src/BreCalClient/EditTimesTerminalControl.xaml.cs @@ -19,7 +19,9 @@ namespace BreCalClient #region Properties - public Times Times { get; set; } = new(); + public Times Times { get; set; } = new(); + + public Extensions.TypeEnum CallType { get; set; } #endregion @@ -29,15 +31,7 @@ namespace BreCalClient { this.comboBoxBerth.ItemsSource = BreCalLists.Berths; this.CopyToControls(); - - bool enableControls = this.Times.ParticipantId == App.Participant.Id; - this.datePickerOperationStart.IsEnabled = enableControls; - this.datePickerOperationEnd.IsEnabled = enableControls; - this.comboBoxBerth.IsEnabled = enableControls; - this.comboBoxPierside.IsEnabled = enableControls; - this.textBoxRemarks.IsEnabled = enableControls; - this.textBoxBerthRemarks.IsEnabled = enableControls; - this.buttonOK.IsEnabled = enableControls; + this.EnableControls(); } private void contextMenuItemClearOperationStart_Click(object sender, RoutedEventArgs e) @@ -98,8 +92,17 @@ namespace BreCalClient this.textBoxBerthRemarks.Text = this.Times.BerthInfo; } - #endregion + private void EnableControls() + { + this.datePickerOperationStart.IsEnabled = (CallType == Extensions.TypeEnum.Incoming) || (CallType == Extensions.TypeEnum.Shifting); + this.datePickerOperationEnd.IsEnabled = (CallType == Extensions.TypeEnum.Outgoing) || (CallType == Extensions.TypeEnum.Shifting); + this.comboBoxBerth.IsEnabled = (CallType == Extensions.TypeEnum.Incoming) || (CallType == Extensions.TypeEnum.Shifting); + this.comboBoxPierside.IsEnabled = (CallType == Extensions.TypeEnum.Incoming) || (CallType == Extensions.TypeEnum.Shifting); + this.textBoxBerthRemarks.IsEnabled = (CallType == Extensions.TypeEnum.Incoming) || (CallType == Extensions.TypeEnum.Shifting); + this.textBoxRemarks.IsEnabled = true; + } + #endregion } } diff --git a/src/BreCalClient/Extensions.cs b/src/BreCalClient/Extensions.cs index 1a93d42..2d15fc9 100644 --- a/src/BreCalClient/Extensions.cs +++ b/src/BreCalClient/Extensions.cs @@ -4,15 +4,11 @@ using BreCalClient.misc.Model; using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace BreCalClient { - internal static class Extensions + public static class Extensions { #region Enum diff --git a/src/BreCalClient/IEditTimesControl.cs b/src/BreCalClient/IEditTimesControl.cs index 2c08ba7..aaaf669 100644 --- a/src/BreCalClient/IEditTimesControl.cs +++ b/src/BreCalClient/IEditTimesControl.cs @@ -11,6 +11,8 @@ namespace BreCalClient { Times Times { get; set; } + Extensions.TypeEnum CallType { get; set; } + bool? ShowDialog(); } diff --git a/src/BreCalClient/MainWindow.xaml.cs b/src/BreCalClient/MainWindow.xaml.cs index 3f7e095..97415e5 100644 --- a/src/BreCalClient/MainWindow.xaml.cs +++ b/src/BreCalClient/MainWindow.xaml.cs @@ -565,9 +565,10 @@ namespace BreCalClient if (!obj.ShipcallControlModel.AssignedParticipants.ContainsKey(participantType)) return; // no assigment means no dialog my friend // show a dialog that lets the user create / update times for the given shipcall - IEditTimesControl etc = (participantType == ParticipantType.TERMINAL) ? new EditTimesTerminalControl() : new EditTimesControl(); - + IEditTimesControl etc = (participantType == ParticipantType.TERMINAL) ? new EditTimesTerminalControl() : new EditTimesControl(); + if(obj.ShipcallControlModel.Shipcall != null) + etc.CallType = (TypeEnum) obj.ShipcallControlModel.Shipcall.Type; bool wasEdit = false; if (times != null) {