// Copyright (c) 2017 schick Informatik
// Description: LADG Bearbeitungsdialog
//
using System;
using System.Linq;
using System.Windows;
using System.Collections.Generic;
using bsmd.database;
using ENI2.Controls;
namespace ENI2.EditControls
{
///
/// Interaction logic for EditLADGDialog.xaml
///
public partial class EditLADGDialog : EditWindowBase
{
private static readonly string[] handlingTypeList =
{
Properties.Resources.textLoading,
Properties.Resources.textDischarge,
Properties.Resources.textTransit
};
private static readonly string[] handlinTypeListDE =
{
Properties.Resources.textLoading,
Properties.Resources.textDischarge
};
private static List> _nstList = null;
public EditLADGDialog()
{
InitializeComponent();
Loaded += EditLADGDialog_Loaded;
if (_nstList == null)
_nstList = LocalizedLookup.GetNST2007List();
}
public LADG LADG { get; set; }
public MessageCore Core { get; set; }
#region event handler
private void EditLADGDialog_Loaded(object sender, RoutedEventArgs e)
{
this.OKClicked += EditLADGDialog_OKClicked;
if (this.Core.IsDK)
this.comboBoxHandlingType.ItemsSource = handlingTypeList;
else
this.comboBoxHandlingType.ItemsSource = handlinTypeListDE;
//this.comboBoxHandlingType.KeyUp += ComboBox_KeyUp;
if (this.LADG.CargoHandlingType.HasValue)
this.comboBoxHandlingType.SelectedIndex = this.LADG.CargoHandlingType.Value;
this.comboBoxLACodes.ItemsSource = LADG.LACodes;
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
this.integerUpDownNumberOfItems.Value = this.LADG.CargoNumberOfItems;
this.doubleUpDownGrossQuantity.Value = this.LADG.CargoGrossQuantity_TNE;
this.locodeControl_PortOfLoading.LocodeValue = this.LADG.PortOfLoading;
this.locodeControl_PortOfDischarge.LocodeValue = this.LADG.PortOfDischarge;
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
this.comboBoxNSTCode.SelectedValue = this.LADG.CargoCodeNST;
this.comboBoxNSTCode.SelectionChanged += ComboBoxNSTCode_SelectionChanged;
this.comboBoxNST3Code.ItemsSource = LADG.CargoCodesNST3;
this.ComboBoxNSTCode_SelectionChanged(null, null);
this.comboBoxNST3Code.SelectedValue = this.LADG.CargoCodeNST_3;
this.AddVisible = true;
}
public void CopyValuesToEntity()
{
this.LADG.CargoHandlingType = (this.comboBoxHandlingType.SelectedIndex < 0) ? null : (byte?)this.comboBoxHandlingType.SelectedIndex;
this.LADG.CargoNumberOfItems = this.integerUpDownNumberOfItems.Value;
this.LADG.CargoGrossQuantity_TNE = this.doubleUpDownGrossQuantity.Value;
this.LADG.PortOfLoading = this.locodeControl_PortOfLoading.LocodeValue;
this.LADG.PortOfDischarge = this.locodeControl_PortOfDischarge.LocodeValue;
this.LADG.CargoLACode = (this.comboBoxLACodes.SelectedValue == null) ? null : ((int?)this.comboBoxLACodes.SelectedValue);
this.LADG.CargoCodeNST = (string)this.comboBoxNSTCode.SelectedValue;
this.LADG.CargoCodeNST_3 = (string)this.comboBoxNST3Code.SelectedValue;
}
private void ComboBoxNSTCode_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (this.comboBoxNSTCode.SelectedItem == null) return;
// filter ItemsSource von NST3
KeyValuePair selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
string key = selectedItem.Key;
if (key.Length == 1) key = "0" + key;
List> filteredItemsSource = new List>();
foreach(KeyValuePair aPair in LADG.CargoCodesNST3)
{
if (aPair.Value.StartsWith(key))
filteredItemsSource.Add(aPair);
}
this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
}
private void EditLADGDialog_OKClicked()
{
this.CopyValuesToEntity();
}
#endregion
#region NST2007 list search/select event handler
private void textBoxSearchNSTList_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
if (textBoxSearchNSTList.Text.IsNullOrEmpty() || (textBoxSearchNSTList.Text.Length == 1))
{
this.comboBoxSelectNST2007ListItem.ItemsSource = null;
}
else
{
var result = _nstList.Where(kvp => kvp.Key.Contains(textBoxSearchNSTList.Text, StringComparison.OrdinalIgnoreCase));
this.comboBoxSelectNST2007ListItem.ItemsSource = result;
}
}
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
{
if(this.comboBoxSelectNST2007ListItem.SelectedItem != null)
{
KeyValuePair selectedTemplate = (KeyValuePair) this.comboBoxSelectNST2007ListItem.SelectedItem;
if(selectedTemplate.Value.Length == 3)
{
this.comboBoxNSTCode.SelectedValue = selectedTemplate.Value.Substring(0, 2);
this.comboBoxNST3Code.SelectedValue = selectedTemplate.Value.Substring(2, 1);
}
}
}
#endregion
}
}