git_bsmd/ENI2/EditControls/EditPortOfItineraryDialog.xaml.cs

65 lines
2.4 KiB
C#

// Copyright (c) 2017 schick Informatik
// Description: Bearbeitungsdialog für Call of itinerary
//
using System;
using System.Windows;
using ENI2.Controls;
using bsmd.database;
using ENI2.Locode;
namespace ENI2.EditControls
{
/// <summary>
/// Interaction logic for EditPortOfItineraryDialog.xaml
/// </summary>
public partial class EditPortOfItineraryDialog : EditWindowBase
{
public EditPortOfItineraryDialog()
{
InitializeComponent();
Loaded += EditPortOfItineraryDialog_Loaded; ;
AddClicked += () => { this.textBoxPortName.Focus(); };
}
public PortOfItinerary PortOfItinerary { get; set; }
private void EditPortOfItineraryDialog_Loaded(object sender, RoutedEventArgs e)
{
this.OKClicked += EditPortOfItineraryDialog_OKClicked;
// copy into fields
this.textBoxPortName.Text = this.PortOfItinerary.PortOfItineraryName;
this.dateTimePickerETA.Value = this.PortOfItinerary.PortOfItineraryETA.HasValue ? ((DateTime?) DateTime.SpecifyKind(this.PortOfItinerary.PortOfItineraryETA.Value, DateTimeKind.Utc).ToLocalTime()) : null;
this.AddVisible = true;
}
public void CopyValuesToEntity()
{
// copy back
string portNameFromLocode = null;
if(!this.textBoxPortName.Text.IsNullOrEmpty() && (this.textBoxPortName.Text.Length == 5))
portNameFromLocode = LocodeDB.PortNameFromLocode(this.textBoxPortName.Text.ToUpper());
if(!portNameFromLocode.IsNullOrEmpty()) // der Anwender hat einen Locode eingetragen
{
this.PortOfItinerary.PortOfItineraryLocode = this.textBoxPortName.Text;
this.PortOfItinerary.PortOfItineraryName = portNameFromLocode;
}
else // einfach Hafen als Text direkt übernehmen
{
this.PortOfItinerary.PortOfItineraryName = this.textBoxPortName.Text;
}
this.PortOfItinerary.PortOfItineraryETA = this.dateTimePickerETA.Value.HasValue ? ((DateTime?)DateTime.SpecifyKind(this.dateTimePickerETA.Value.Value, DateTimeKind.Local).ToUniversalTime()) : null;
}
private void EditPortOfItineraryDialog_OKClicked()
{
this.CopyValuesToEntity();
}
}
}