Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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();
            }
        }
Exemplo n.º 3
0
        /// <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;
            }
        }