diff --git a/src/BreCalClient/ShipcallControl.xaml.cs b/src/BreCalClient/ShipcallControl.xaml.cs index adbc12a..79cefa9 100644 --- a/src/BreCalClient/ShipcallControl.xaml.cs +++ b/src/BreCalClient/ShipcallControl.xaml.cs @@ -256,93 +256,114 @@ namespace BreCalClient if (this.ShipcallControlModel != null) { - foreach (Times times in this.ShipcallControlModel.Times) + + + Times? agencyTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.AGENCY); + if (agencyTimes != null) { - string? berthText = null; - if ((BreCalLists.Berths != null) && times.BerthId.HasValue && (this.ShipcallControlModel?.Shipcall?.Type != (int) Extensions.TypeEnum.Shifting)) + this.labelAgencyBerth.Content = this.ShipcallControlModel?.GetBerthText(agencyTimes); + this.labelAgencyETAETDValue.Content = agencyTimes.EtaBerth.HasValue ? agencyTimes.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockAgencyRemarks.Text = agencyTimes.Remarks; + this.textBlockAgencyBerthRemarks.Text = agencyTimes.BerthInfo; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) { - Berth? berth = BreCalLists.Berths.Find((x) => x.Id == times.BerthId); - berthText = berth?.Name; + this.labelAgencyETAETDValue.Content = agencyTimes.EtdBerth.HasValue ? agencyTimes.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; } + } + else + { + // no agency times set (yet) + this.labelAgencyBerth.Content = ""; + this.labelAgencyETAETDValue.Content = "- / -"; + this.textBlockAgencyRemarks.Text = ""; + this.textBlockAgencyBerthRemarks.Text = ""; + } - if ((berthText == null) && (times.ParticipantType != (int) Extensions.ParticipantType.TERMINAL)) - { - if (this.ShipcallControlModel?.Shipcall?.Type == (int)Extensions.TypeEnum.Incoming) - { - Berth? berth = BreCalLists.Berths?.Find((x) => x.Id == this.ShipcallControlModel.Shipcall?.ArrivalBerthId); - berthText = berth?.Name; - } - else - { - Berth? berth = BreCalLists.Berths?.Find((x) => x.Id == this.ShipcallControlModel?.Shipcall?.DepartureBerthId); - berthText = berth?.Name; - } - } + Times? mooringTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.MOORING); + if (mooringTimes != null) + { - if (times.ParticipantType == (int)Extensions.ParticipantType.AGENCY) + this.labelMooringETAETDValue.Content = mooringTimes.EtaBerth.HasValue ? mooringTimes.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockMooringRemarks.Text = mooringTimes.Remarks; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) { - this.labelAgencyBerth.Content = berthText; - this.labelAgencyETAETDValue.Content = times.EtaBerth.HasValue ? times.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockAgencyRemarks.Text = times.Remarks; - this.textBlockAgencyBerthRemarks.Text = times.BerthInfo; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelAgencyETAETDValue.Content = times.EtdBerth.HasValue ? times.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - } - - if (times.ParticipantType == (int)Extensions.ParticipantType.MOORING) - { - this.labelMooringETAETDValue.Content = times.EtaBerth.HasValue ? times.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockMooringRemarks.Text = times.Remarks; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelMooringETAETDValue.Content = times.EtdBerth.HasValue ? times.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - } - - if (times.ParticipantType == (int)Extensions.ParticipantType.PORT_ADMINISTRATION) - { - this.labelPortAuthorityETAETDValue.Content = times.EtaBerth.HasValue ? times.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockPortAuthorityRemarks.Text = times.Remarks; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelPortAuthorityETAETDValue.Content = times.EtdBerth.HasValue ? times.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - } - - if (times.ParticipantType == (int)Extensions.ParticipantType.PILOT) - { - this.labelPilotETAETDValue.Content = times.EtaBerth.HasValue ? times.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockPilotRemarks.Text = times.Remarks; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelPilotETAETDValue.Content = times.EtdBerth.HasValue ? times.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - } - - if (times.ParticipantType == (int)Extensions.ParticipantType.TUG) - { - this.labelTugETAETDValue.Content = times.EtaBerth.HasValue ? times.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockTugRemarks.Text = times.Remarks; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelTugETAETDValue.Content = times.EtdBerth.HasValue ? times.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - } - - if (times.ParticipantType == (int)Extensions.ParticipantType.TERMINAL) - { - this.labelTerminalBerth.Content = berthText; - this.labelOperationsStart.Content = times.OperationsStart.HasValue ? times.OperationsStart.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - this.textBlockTerminalRemarks.Text = times.Remarks; - if (this.ShipcallControlModel?.Shipcall?.Type != 1) - { - this.labelOperationsStart.Content = times.OperationsEnd.HasValue ? times.OperationsEnd.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; - } - this.textBlockTerminalBerthRemarks.Text = times.BerthInfo; + this.labelMooringETAETDValue.Content = mooringTimes.EtdBerth.HasValue ? mooringTimes.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; } } + else + { + this.labelMooringETAETDValue.Content = "- / "; + this.textBlockMooringRemarks.Text = ""; + } + + Times? portAuthorityTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.PORT_ADMINISTRATION); + if (portAuthorityTimes != null) + { + this.labelPortAuthorityETAETDValue.Content = portAuthorityTimes.EtaBerth.HasValue ? portAuthorityTimes.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockPortAuthorityRemarks.Text = portAuthorityTimes.Remarks; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) + { + this.labelPortAuthorityETAETDValue.Content = portAuthorityTimes.EtdBerth.HasValue ? portAuthorityTimes.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + } + } + else + { + this.labelPortAuthorityETAETDValue.Content = "- / -"; + this.textBlockPortAuthorityRemarks.Text = ""; + } + + Times? pilotTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.PILOT); + if (pilotTimes != null) + { + this.labelPilotETAETDValue.Content = pilotTimes.EtaBerth.HasValue ? pilotTimes.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockPilotRemarks.Text = pilotTimes.Remarks; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) + { + this.labelPilotETAETDValue.Content = pilotTimes.EtdBerth.HasValue ? pilotTimes.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + } + } + else + { + this.labelPilotETAETDValue.Content = "- / -"; + this.textBlockPilotRemarks.Text = ""; + } + + Times? tugTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.TUG); + if (tugTimes != null) + { + this.labelTugETAETDValue.Content = tugTimes.EtaBerth.HasValue ? tugTimes.EtaBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockTugRemarks.Text = tugTimes.Remarks; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) + { + this.labelTugETAETDValue.Content = tugTimes.EtdBerth.HasValue ? tugTimes.EtdBerth.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + } + } + else + { + this.labelTugETAETDValue.Content = "- / -"; + this.textBlockTugRemarks.Text = ""; + } + + Times? terminalTimes = this.ShipcallControlModel?.GetTimesForParticipantType(Extensions.ParticipantType.TERMINAL); + if (terminalTimes != null) + { + this.labelTerminalBerth.Content = this.ShipcallControlModel?.GetBerthText(terminalTimes); + this.labelOperationsStart.Content = terminalTimes.OperationsStart.HasValue ? terminalTimes.OperationsStart.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + this.textBlockTerminalRemarks.Text = terminalTimes.Remarks; + if (this.ShipcallControlModel?.Shipcall?.Type != 1) + { + this.labelOperationsStart.Content = terminalTimes.OperationsEnd.HasValue ? terminalTimes.OperationsEnd.Value.ToString("dd.MM.yyyy HH:mm") : "- / -"; + } + this.textBlockTerminalBerthRemarks.Text = terminalTimes.BerthInfo; + } + else + { + this.labelTerminalBerth.Content = ""; + this.labelOperationsStart.Content = ""; + this.textBlockTerminalRemarks.Text = ""; + this.textBlockAgencyBerthRemarks.Text = ""; + } + } this.DataContext = this.ShipcallControlModel; } diff --git a/src/BreCalClient/ShipcallControlModel.cs b/src/BreCalClient/ShipcallControlModel.cs index 81df824..d29a0ef 100644 --- a/src/BreCalClient/ShipcallControlModel.cs +++ b/src/BreCalClient/ShipcallControlModel.cs @@ -157,6 +157,33 @@ namespace BreCalClient return false; } + public string? GetBerthText(Times times) + { + string? berthText = null; + if ((BreCalLists.Berths != null) && times.BerthId.HasValue && (this.Shipcall?.Type != (int)Extensions.TypeEnum.Shifting)) + { + Berth? berth = BreCalLists.Berths.Find((x) => x.Id == times.BerthId); + berthText = berth?.Name; + } + + if ((berthText == null) && (times.ParticipantType != (int)Extensions.ParticipantType.TERMINAL)) + { + if (this.Shipcall?.Type == (int)Extensions.TypeEnum.Incoming) + { + Berth? berth = BreCalLists.Berths?.Find((x) => x.Id == this.Shipcall?.ArrivalBerthId); + berthText = berth?.Name; + } + else + { + Berth? berth = BreCalLists.Berths?.Find((x) => x.Id == this.Shipcall?.DepartureBerthId); + berthText = berth?.Name; + } + } + + return berthText; + } + + /// /// After closing the edit shipcall or edit agency dialogs, the times assignments may have changed. /// This function updates the assignments for existing times records accordingly and saves them.