using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows; using System.Windows.Controls; namespace DTS.Common.Controls { //Remove this control after deleting the TTS module and migrating to new test setup wizard /// /// /// Interaction logic for TestIdControl.xaml /// public partial class TestIdControl : UserControl, INotifyPropertyChanged { #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; protected bool SetProperty(ref T storage, T value, string propertyName = null) { if (Equals(storage, value)) return false; storage = value; OnPropertyChanged(propertyName); return true; } protected void OnPropertyChanged(string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion private static readonly TestIdPreFixSuffixHelper TEST_ID_SUFFIX_VALUE_NONE_ITEM = new TestIdPreFixSuffixHelper(TestIdFixedPrefixSuffixValues.None); private static readonly TestIdPreFixSuffixHelper TEST_ID_SUFFIX_VALUE_TIME_STAMP_ITEM = new TestIdPreFixSuffixHelper(TestIdFixedPrefixSuffixValues.TimeStamp); private static readonly TestIdPreFixSuffixHelper TEST_ID_SUFFIX_VALUE_TEST_SETUP_ITEM = new TestIdPreFixSuffixHelper(TestIdFixedPrefixSuffixValues.TestSetupName); public TestIdControl() { InitializeComponent(); } private string _testSetupLabel = string.Empty; public string TestSetupLabel { get => _testSetupLabel; set { _testSetupLabel = value; OnPropertyChanged("TestSetupLabel"); OnPropertyChanged("TestSetupLabelVisibility"); } } public Visibility TestSetupLabelVisibility => string.IsNullOrEmpty(TestSetupLabel) ? Visibility.Collapsed : Visibility.Visible; public string TestIdEditableText { get; set; } = string.Empty; public void PopulateAllTestIdPrefixSuffixValues(string[] serializedValues) { _allTestIdPrefixSuffixValues = new List { TEST_ID_SUFFIX_VALUE_NONE_ITEM, TEST_ID_SUFFIX_VALUE_TIME_STAMP_ITEM, TEST_ID_SUFFIX_VALUE_TEST_SETUP_ITEM }; // Second, populate all values from the db var dbList = new List(); dbList.AddRange(serializedValues); foreach (var s in dbList) { _allTestIdPrefixSuffixValues.Add(new TestIdPreFixSuffixHelper(s)); } OnPropertyChanged("AllTestIDPrefixSuffixValues"); } private List _allTestIdPrefixSuffixValues; public TestIdPreFixSuffixHelper[] AllTestIdPrefixSuffixValues => _allTestIdPrefixSuffixValues?.ToArray() ?? new TestIdPreFixSuffixHelper[0]; public TestIdPreFixSuffixHelper SelectedTestIdPrefixValueItem { get; set; } = TEST_ID_SUFFIX_VALUE_NONE_ITEM; public TestIdPreFixSuffixHelper SelectedTestIdSuffixValueItem { get; set; } = TEST_ID_SUFFIX_VALUE_TIME_STAMP_ITEM; public string TestName { get; set; } public string GetTestId() { var testIdList = new List(); var prefix = GetRunTimeTestIdPrefixOrSuffix(SelectedTestIdPrefixValueItem); if (prefix != string.Empty) { testIdList.Add(prefix); } if (!string.IsNullOrEmpty(TestSetupLabel)) { testIdList.Add(TestSetupLabel); } if (TestIdEditableText != string.Empty) { testIdList.Add(TestIdEditableText); } var suffix = GetRunTimeTestIdPrefixOrSuffix(SelectedTestIdSuffixValueItem); if (suffix != string.Empty) { testIdList.Add(suffix); } return string.Join("_", testIdList); /* CurrentTest.TestId = TestId; CurrentTest.TestIdNode = CurrentTest.TestId; _page.HeaderRibbon.tbCurrentTestIdString = TestId;*/ } private string GetRunTimeTestIdPrefixOrSuffix(TestIdPreFixSuffixHelper prefixOrSuffix) { var rv = string.Empty; if (prefixOrSuffix == null) { return rv; } switch (prefixOrSuffix.TestIdPreFixSuffix.FixedValue) { case TestIdFixedPrefixSuffixValues.TestSetupName: rv = TestName; break; case TestIdFixedPrefixSuffixValues.TimeStamp: rv = GetTestIdTimestamp(); break; case TestIdFixedPrefixSuffixValues.NotFixed: rv = prefixOrSuffix.TestIdPreFixSuffix.ToString(); break; case TestIdFixedPrefixSuffixValues.None: default: // do nothing break; } return rv; } public string GetTestIdTimestamp() { return $"{DateTime.Now.Year:0000}_{DateTime.Now.Month:00}_{DateTime.Now.Day:00} {DateTime.Now.Hour:00}_{DateTime.Now.Minute:00}"; } } }