From c3f16f4b2091e10f5a99d6e636057ae8361b26b7 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Mon, 4 Sep 2023 12:12:07 +0200 Subject: [PATCH] Fixed adding and removing assignments of participants and berths --- src/BreCalClient/BreCalClient.csproj | 2 + src/BreCalClient/EditShipcallControl.xaml | 26 ++- src/BreCalClient/EditShipcallControl.xaml.cs | 216 +++++++++++------- src/BreCalClient/EditTimesControl.xaml | 74 +++++- src/BreCalClient/EditTimesControl.xaml.cs | 34 +++ src/BreCalClient/MainWindow.xaml.cs | 33 ++- .../Resources/Resources.Designer.cs | 19 ++ src/BreCalClient/Resources/Resources.de.resx | 3 + src/BreCalClient/Resources/Resources.resx | 6 + src/BreCalClient/Resources/delete.png | Bin 0 -> 1279 bytes src/BreCalClient/ShipcallControl.xaml.cs | 67 +++--- src/BreCalClient/ShipcallControlModel.cs | 16 +- 12 files changed, 348 insertions(+), 148 deletions(-) create mode 100644 src/BreCalClient/Resources/delete.png diff --git a/src/BreCalClient/BreCalClient.csproj b/src/BreCalClient/BreCalClient.csproj index 38ee163..d69e72f 100644 --- a/src/BreCalClient/BreCalClient.csproj +++ b/src/BreCalClient/BreCalClient.csproj @@ -25,6 +25,7 @@ + @@ -70,6 +71,7 @@ + diff --git a/src/BreCalClient/EditShipcallControl.xaml b/src/BreCalClient/EditShipcallControl.xaml index ee95adf..ceae106 100644 --- a/src/BreCalClient/EditShipcallControl.xaml +++ b/src/BreCalClient/EditShipcallControl.xaml @@ -69,11 +69,23 @@ - + - - - + + + + + + + + + + + + + + + @@ -135,9 +147,9 @@ - - - + + + diff --git a/src/BreCalClient/EditShipcallControl.xaml.cs b/src/BreCalClient/EditShipcallControl.xaml.cs index 6730be8..d4ae813 100644 --- a/src/BreCalClient/EditShipcallControl.xaml.cs +++ b/src/BreCalClient/EditShipcallControl.xaml.cs @@ -23,7 +23,7 @@ namespace BreCalClient #region Properties - public Shipcall Shipcall { get; set; } = new (); + public ShipcallControlModel ShipcallModel { get; set; } = new (); public List Participants { get; set; } = new(); @@ -98,26 +98,42 @@ namespace BreCalClient private void contextMenuItemClearAgency_Click(object sender, RoutedEventArgs e) { this.comboBoxAgency.SelectedIndex = -1; + this.ShipcallModel.AssignedParticipants.Remove((int)Extensions.ParticipantType.AGENCY); } private void contextMenuItemClearMooring_Click(object sender, RoutedEventArgs e) { this.comboBoxMooring.SelectedIndex = -1; + this.ShipcallModel.AssignedParticipants.Remove((int)Extensions.ParticipantType.MOORING); } private void contextMenuItemClearPilot_Click(object sender, RoutedEventArgs e) { this.comboBoxPilot.SelectedIndex = -1; + this.ShipcallModel.AssignedParticipants.Remove((int)Extensions.ParticipantType.PILOT); } private void contextMenuItemClearTug_Click(object sender, RoutedEventArgs e) { this.comboBoxTug.SelectedIndex = -1; + this.ShipcallModel.AssignedParticipants.Remove((int)Extensions.ParticipantType.TUG); } private void contextMenuItemClearTerminal_Click(object sender, RoutedEventArgs e) { this.comboBoxTerminal.SelectedIndex = -1; + this.ShipcallModel.AssignedParticipants.Remove((int)Extensions.ParticipantType.TERMINAL); + } + + private void contextMenuItemArrivalBerth_Click(object sender, RoutedEventArgs e) + { + this.comboBoxArrivalBerth.SelectedIndex = -1; + this.ShipcallModel.Berth = ""; + } + + private void contextMenuItemDepartureBerth_Click(object sender, RoutedEventArgs e) + { + this.comboBoxDepartureBerth.SelectedIndex -= 1; } #endregion @@ -126,100 +142,132 @@ namespace BreCalClient private void CopyToModel() { - this.Shipcall.Type = (int) this.comboBoxCategories.SelectedItem; - this.Shipcall.Eta = this.datePickerETA.Value ?? DateTime.Now; - this.Shipcall.Voyage = this.textBoxVoyage.Text.Trim(); - this.Shipcall.Etd = this.datePickerETD.Value ?? DateTime.Now.AddDays(1); - this.Shipcall.Anchored = this.checkBoxAnchored.IsChecked; - this.Shipcall.ShipId = ((Ship)this.comboBoxShip.SelectedItem).Id; - this.Shipcall.ArrivalBerthId = (this.comboBoxArrivalBerth.SelectedItem != null) ? ((Berth)this.comboBoxArrivalBerth.SelectedItem).Id : null; - this.Shipcall.DepartureBerthId = (this.comboBoxDepartureBerth.SelectedItem != null) ? ((Berth)this.comboBoxDepartureBerth.SelectedItem).Id : null; - this.Shipcall.Bunkering = this.checkBoxBunkering.IsChecked; - this.Shipcall.Canceled = this.checkBoxCanceled.IsChecked; - this.Shipcall.Draft = (float?) this.doubleUpDownDraft.Value; - this.Shipcall.MooredLock = this.checkBoxMooredLock.IsChecked; - this.Shipcall.RainSensitiveCargo = this.checkBoxRainsensitiveCargo.IsChecked; - this.Shipcall.PilotRequired = this.checkBoxPilotRequired.IsChecked; - this.Shipcall.ReplenishingLock = this.checkBoxReplenishingLock.IsChecked; - this.Shipcall.ReplenishingTerminal = this.checkBoxReplenishingTerminal.IsChecked; - this.Shipcall.RecommendedTugs = this.integerUpDownRecommendedTugs.Value; - this.Shipcall.TidalWindowFrom = this.datePickerTidalWindowFrom.Value; - this.Shipcall.TidalWindowTo = this.datePickerTidalWindowTo.Value; - this.Shipcall.TugRequired = this.checkBoxTugRequired.IsChecked; - if(this.comboBoxPierside.SelectedIndex >= 0) + if (this.ShipcallModel.Shipcall != null) { - this.Shipcall.PierSide = (this.comboBoxPierside.SelectedIndex == 0) ? true : false; + this.ShipcallModel.Shipcall.Type = (int)this.comboBoxCategories.SelectedItem; + this.ShipcallModel.Shipcall.Eta = this.datePickerETA.Value ?? DateTime.Now; + this.ShipcallModel.Shipcall.Voyage = this.textBoxVoyage.Text.Trim(); + this.ShipcallModel.Shipcall.Etd = this.datePickerETD.Value ?? DateTime.Now.AddDays(1); + this.ShipcallModel.Shipcall.Anchored = this.checkBoxAnchored.IsChecked; + this.ShipcallModel.Shipcall.ShipId = ((Ship)this.comboBoxShip.SelectedItem).Id; + this.ShipcallModel.Shipcall.ArrivalBerthId = (this.comboBoxArrivalBerth.SelectedItem != null) ? ((Berth)this.comboBoxArrivalBerth.SelectedItem).Id : null; + this.ShipcallModel.Shipcall.DepartureBerthId = (this.comboBoxDepartureBerth.SelectedItem != null) ? ((Berth)this.comboBoxDepartureBerth.SelectedItem).Id : null; + this.ShipcallModel.Shipcall.Bunkering = this.checkBoxBunkering.IsChecked; + this.ShipcallModel.Shipcall.Canceled = this.checkBoxCanceled.IsChecked; + this.ShipcallModel.Shipcall.Draft = (float?)this.doubleUpDownDraft.Value; + this.ShipcallModel.Shipcall.MooredLock = this.checkBoxMooredLock.IsChecked; + this.ShipcallModel.Shipcall.RainSensitiveCargo = this.checkBoxRainsensitiveCargo.IsChecked; + this.ShipcallModel.Shipcall.PilotRequired = this.checkBoxPilotRequired.IsChecked; + this.ShipcallModel.Shipcall.ReplenishingLock = this.checkBoxReplenishingLock.IsChecked; + this.ShipcallModel.Shipcall.ReplenishingTerminal = this.checkBoxReplenishingTerminal.IsChecked; + this.ShipcallModel.Shipcall.RecommendedTugs = this.integerUpDownRecommendedTugs.Value; + this.ShipcallModel.Shipcall.TidalWindowFrom = this.datePickerTidalWindowFrom.Value; + this.ShipcallModel.Shipcall.TidalWindowTo = this.datePickerTidalWindowTo.Value; + this.ShipcallModel.Shipcall.TugRequired = this.checkBoxTugRequired.IsChecked; + if (this.comboBoxPierside.SelectedIndex >= 0) + { + this.ShipcallModel.Shipcall.PierSide = (this.comboBoxPierside.SelectedIndex == 0) ? true : false; + } + + // remove all and add selected participants + this.ShipcallModel.Shipcall.Participants.Clear(); + this.ShipcallModel.AssignedParticipants.Clear(); + + Participant? participant; + participant = (Participant?)this.comboBoxAgency.SelectedItem; + if (participant != null) + { + this.ShipcallModel.Shipcall.Participants.Add(participant.Id); + this.ShipcallModel.AssignedParticipants[participant.Type] = participant; + } + participant = (Participant?)this.comboBoxMooring.SelectedItem; + if (participant != null) + { + this.ShipcallModel.Shipcall.Participants.Add(participant.Id); + this.ShipcallModel.AssignedParticipants[participant.Type] = participant; + } + participant = (Participant?)this.comboBoxPilot.SelectedItem; + if (participant != null) + { + this.ShipcallModel.Shipcall.Participants.Add(participant.Id); + this.ShipcallModel.AssignedParticipants[participant.Type] = participant; + } + participant = (Participant?)this.comboBoxTerminal.SelectedItem; + if (participant != null) { + this.ShipcallModel.Shipcall.Participants.Add(participant.Id); + this.ShipcallModel.AssignedParticipants[participant.Type] = participant; + } + participant = (Participant?)this.comboBoxTug.SelectedItem; + if (participant != null) { + this.ShipcallModel.Shipcall.Participants.Add(participant.Id); + this.ShipcallModel.AssignedParticipants[participant.Type] = participant; + } + + // BSMD and port authority are always added + foreach (Participant p in Participants) + { + if (p.Type == (int)Extensions.ParticipantType.PORT_ADMINISTRATION) + { + this.ShipcallModel.Shipcall.Participants.Add(p.Id); + this.ShipcallModel.AssignedParticipants[p.Type] = p; + } + if (p.Type == (int)Extensions.ParticipantType.BSMD) + { + this.ShipcallModel.Shipcall.Participants.Add(p.Id); + this.ShipcallModel.AssignedParticipants[p.Type] = p; + } + } } - - // remove all and add selected participants - this.Shipcall.Participants.Clear(); - Participant? participant; - participant = (Participant?) this.comboBoxAgency.SelectedItem; - if (participant != null) this.Shipcall.Participants.Add(participant.Id); - participant = (Participant?) this.comboBoxMooring.SelectedItem; - if (participant != null) this.Shipcall.Participants.Add(participant.Id); - participant = (Participant?) this.comboBoxPilot.SelectedItem; - if (participant != null) this.Shipcall.Participants.Add(participant.Id); - participant = (Participant?) this.comboBoxTerminal.SelectedItem; - if (participant != null) this.Shipcall.Participants.Add(participant.Id); - participant = (Participant?) this.comboBoxTug.SelectedItem; - if (participant != null) this.Shipcall.Participants.Add(participant.Id); - - // BSMD and port authority are always added - foreach(Participant p in Participants) - { - if(p.Type == (int) Extensions.ParticipantType.PORT_ADMINISTRATION) this.Shipcall.Participants.Add(p.Id); - if (p.Type == (int)Extensions.ParticipantType.BSMD) this.Shipcall.Participants.Add(p.Id); - } - } private void CopyToControls() { - if (this.Shipcall == null) return; - this.comboBoxCategories.SelectedItem = (Extensions.TypeEnum) this.Shipcall.Type; - if(this.Shipcall.Eta != DateTime.MinValue) - this.datePickerETA.Value = this.Shipcall.Eta; - this.textBoxVoyage.Text = this.Shipcall.Voyage; - this.datePickerETD.Value = this.Shipcall.Etd; - this.checkBoxAnchored.IsChecked = this.Shipcall.Anchored; - this.comboBoxShip.SelectedValue = this.Shipcall.ShipId; - this.comboBoxArrivalBerth.SelectedValue = this.Shipcall.ArrivalBerthId; - this.comboBoxDepartureBerth.SelectedValue = this.Shipcall.DepartureBerthId; - this.checkBoxBunkering.IsChecked = this.Shipcall.Bunkering; - this.checkBoxCanceled.IsChecked = this.Shipcall.Canceled; - this.doubleUpDownDraft.Value = this.Shipcall.Draft; - this.checkBoxMooredLock.IsChecked = this.Shipcall.MooredLock; - - this.checkBoxRainsensitiveCargo.IsChecked = this.Shipcall.RainSensitiveCargo; - this.checkBoxPilotRequired.IsChecked = this.Shipcall.PilotRequired; - this.checkBoxReplenishingLock.IsChecked = this.Shipcall.ReplenishingLock; - this.checkBoxReplenishingTerminal.IsChecked = this.Shipcall.ReplenishingTerminal; - this.integerUpDownRecommendedTugs.Value = this.Shipcall.RecommendedTugs; - this.datePickerTidalWindowFrom.Value = this.Shipcall.TidalWindowFrom; - this.datePickerTidalWindowTo.Value = this.Shipcall.TidalWindowTo; - this.checkBoxTugRequired.IsChecked = this.Shipcall.TugRequired; - if(this.Shipcall.PierSide.HasValue) + if (this.ShipcallModel == null) return; + if (this.ShipcallModel.Shipcall != null) { - if (this.Shipcall.PierSide.Value) this.comboBoxPierside.SelectedIndex = 0; - else this.comboBoxPierside.SelectedIndex = 1; + this.comboBoxCategories.SelectedItem = (Extensions.TypeEnum)this.ShipcallModel.Shipcall.Type; + if (this.ShipcallModel.Shipcall.Eta != DateTime.MinValue) + this.datePickerETA.Value = this.ShipcallModel.Shipcall.Eta; + this.textBoxVoyage.Text = this.ShipcallModel.Shipcall.Voyage; + this.datePickerETD.Value = this.ShipcallModel.Shipcall.Etd; + this.checkBoxAnchored.IsChecked = this.ShipcallModel.Shipcall.Anchored; + this.comboBoxShip.SelectedValue = this.ShipcallModel.Shipcall.ShipId; + this.comboBoxArrivalBerth.SelectedValue = this.ShipcallModel.Shipcall.ArrivalBerthId; + this.comboBoxDepartureBerth.SelectedValue = this.ShipcallModel.Shipcall.DepartureBerthId; + this.checkBoxBunkering.IsChecked = this.ShipcallModel.Shipcall.Bunkering; + this.checkBoxCanceled.IsChecked = this.ShipcallModel.Shipcall.Canceled; + this.doubleUpDownDraft.Value = this.ShipcallModel.Shipcall.Draft; + this.checkBoxMooredLock.IsChecked = this.ShipcallModel.Shipcall.MooredLock; + + this.checkBoxRainsensitiveCargo.IsChecked = this.ShipcallModel.Shipcall.RainSensitiveCargo; + this.checkBoxPilotRequired.IsChecked = this.ShipcallModel.Shipcall.PilotRequired; + this.checkBoxReplenishingLock.IsChecked = this.ShipcallModel.Shipcall.ReplenishingLock; + this.checkBoxReplenishingTerminal.IsChecked = this.ShipcallModel.Shipcall.ReplenishingTerminal; + this.integerUpDownRecommendedTugs.Value = this.ShipcallModel.Shipcall.RecommendedTugs; + this.datePickerTidalWindowFrom.Value = this.ShipcallModel.Shipcall.TidalWindowFrom; + this.datePickerTidalWindowTo.Value = this.ShipcallModel.Shipcall.TidalWindowTo; + this.checkBoxTugRequired.IsChecked = this.ShipcallModel.Shipcall.TugRequired; + if (this.ShipcallModel.Shipcall.PierSide.HasValue) + { + if (this.ShipcallModel.Shipcall.PierSide.Value) this.comboBoxPierside.SelectedIndex = 0; + else this.comboBoxPierside.SelectedIndex = 1; + } + + if (this.ShipcallModel.Shipcall.Participants == null) this.ShipcallModel.Shipcall.Participants = new(); + + foreach (int participant_id in this.ShipcallModel.Shipcall.Participants) + { + if (((List)this.comboBoxAgency.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxAgency.SelectedValue = participant_id; + if (((List)this.comboBoxMooring.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxMooring.SelectedValue = participant_id; + if (((List)this.comboBoxPilot.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxPilot.SelectedValue = participant_id; + if (((List)this.comboBoxTerminal.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxTerminal.SelectedValue = participant_id; + if (((List)this.comboBoxTug.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxTug.SelectedValue = participant_id; + } } - - if (this.Shipcall.Participants == null) this.Shipcall.Participants = new(); - - foreach(int participant_id in this.Shipcall.Participants) - { - if (((List)this.comboBoxAgency.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxAgency.SelectedValue = participant_id; - if (((List)this.comboBoxMooring.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxMooring.SelectedValue = participant_id; - if (((List)this.comboBoxPilot.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxPilot.SelectedValue = participant_id; - if (((List)this.comboBoxTerminal.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxTerminal.SelectedValue = participant_id; - if (((List)this.comboBoxTug.ItemsSource).Any(x => x.Id == participant_id)) this.comboBoxTug.SelectedValue = participant_id; - } - } - #endregion + #endregion } } diff --git a/src/BreCalClient/EditTimesControl.xaml b/src/BreCalClient/EditTimesControl.xaml index cec997c..879d663 100644 --- a/src/BreCalClient/EditTimesControl.xaml +++ b/src/BreCalClient/EditTimesControl.xaml @@ -8,7 +8,7 @@ xmlns:db="clr-namespace:BreCalClient;assembly=BreCalClient" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" mc:Ignorable="d" - Title="{x:Static p:Resources.textEditTimes}" Height="320" Width="400" Loaded="Window_Loaded" ResizeMode="NoResize" Icon="Resources/containership.ico"> + Title="{x:Static p:Resources.textEditTimes}" Height="330" Width="400" Loaded="Window_Loaded" ResizeMode="NoResize" Icon="Resources/containership.ico"> @@ -35,16 +35,76 @@