public static ObservableCollection <SubClassViewModel> CreateSubClasses( FirstExampleManager firstExamples, ObservableCollection <SubClassDataTypeViewModel> modelSubClasses, ClassFunctionalViewModel parent) { Random r = new Random(); ObservableCollection <SubClassViewModel> subClasses = new ObservableCollection <SubClassViewModel>(); foreach (SubClassDataTypeViewModel modelSubClass in modelSubClasses) { ObservableCollection <IUnitViewModel> units = new ObservableCollection <IUnitViewModel>(); for (int index = 0; index < modelSubClass.VehicleNumbersList.Count; ++index) { // Read raw data from the file and used to create a new unit. IndividualUnitFileContents unitRaw = IndividualUnitIOController.ReadIndividualUnitFile( parent.ClassId, modelSubClass.VehicleNumbersList[index].VehicleNumber.ToString()); if (unitRaw == null) { Logger.Instance.WriteLog($"Failed to read unit from file, data missing: {modelSubClass.VehicleNumbersList[index].VehicleNumber}"); } else { int imageIndex = r.Next(0, modelSubClass.SubClassImageList.Count); IUnitViewModel newUnit = new UnitViewModel( IndividualUnitIOController.WriteIndividualUnitFile, firstExamples, parent.ClassId, unitRaw, index == 0, index == modelSubClass.VehicleNumbersList.Count - 1, modelSubClass.GetImagePath(imageIndex), parent.ClassData.AlphaIdentifier); units.Add(newUnit); } } SubClassViewModel newSubClass = new SubClassViewModel( parent.ClassData.AlphaIdentifier, units); subClasses.Add(newSubClass); } return(subClasses); }
/// <summary> /// Add series of new numbers to a subclass. /// </summary> private void AddNewNumberSeries() { NewNumberViewModel dialogViewModel = new NewNumberViewModel( this.SubClassNumbers, true); DialogService service = new DialogService(); service.ShowDialog( new NewNumberSeriesDialog() { DataContext = dialogViewModel }); if (dialogViewModel.Result == MessageBoxResult.OK) { for (int number = dialogViewModel.Number; number <= dialogViewModel.UpperNumber; ++number) { if (this.classFileConfiguration.Subclasses[dialogViewModel.SubClassIndex].Numbers.Find(n => n.CurrentNumber == number) != null) { return; } Number newNumber = new Number() { CurrentNumber = number, Historical = new List <OldNumber>() }; this.classFileConfiguration.Subclasses[dialogViewModel.SubClassIndex].Numbers.Add(newNumber); VehicleDetailsViewModel newVehicle = new VehicleDetailsViewModel( number.ToString()); if (!IndividualUnitIOController.WriteIndividualUnitFile(newVehicle, classId)) { Logger l = Logger.Instance; l.WriteLog("TRACE: Class Config Form - Save Failed - Failed to write " + newVehicle.UnitNumber.ToString() + ".txt"); } } this.SaveModel(); this.SelectNewSubClass(); } }
/// <summary> /// Newid trên rhifau. /// </summary> /// <param name="originalSubclass">the original sub class</param> /// <param name="destinationSubclass">the destination sub class</param> /// <param name="originalNumbers">original numbers</param> /// <param name="classId">the class id</param> /// <param name="initialDestinationNumber">the first of the new numbers</param> private static void RenumberUnits( Subclass originalSubclass, Subclass destinationSubclass, List <int> originalNumbers, string classId, int initialDestinationNumber) { int loop = 0; foreach (int originalNumber in originalNumbers) { int destinationNumber = initialDestinationNumber + loop; Number updatedNumber = originalSubclass.Numbers.Find( n => n.CurrentNumber == originalNumber); originalSubclass.Numbers.Remove(updatedNumber); OldNumber oldNumber = new OldNumber() { Number = originalNumber }; updatedNumber.Historical.Add(oldNumber); updatedNumber.CurrentNumber = destinationNumber; destinationSubclass.Numbers.Add(updatedNumber); destinationSubclass.Numbers.Sort((x, y) => x.CurrentNumber.CompareTo(y.CurrentNumber)); IndividualUnitIOController.RenameIndividualUnitFile( destinationNumber, classId, originalNumber); ++loop; } }