예제 #1
0
        public void BoatBuilderBuildsProperBoatTest()
        {
            var boat = new BoatBuilder();

            var result = boat.SetProductionYear(1997)
                         .SetBrand("Audi")
                         .SetKerbWeight(1000)
                         .SetColor(Color.Pink)
                         .SetMaxVelosity(300)
                         .Build();

            Assert.AreEqual(1997, result.ProductionYear);
            Assert.AreEqual("Audi", result.Brand);
            Assert.AreEqual(1000, result.KerbWeight);
            Assert.AreEqual(Color.Pink, result.Color);
            Assert.AreEqual(300, result.MaxVelocity);
        }
예제 #2
0
        /// <summary>
        /// Refreshes this instance.
        /// </summary>
        private void Refresh()
        {
            try
            {
                RefreshCurrentTime(); // lokal gespeicherte Zeit aktualisieren, kann Fehler werfen!
            }
            catch (Exception ex)
            {
                Tools.ShowError(ex.Message);
                return;
            }

            var boatBuilder = new BoatBuilder(_currentTime);

            var rowersData = GlobalData.Instance.RowersData;
            var racesData  = GlobalData.Instance.RacesData;

            #region Infos zum Ruderer

            var dbRower = rowersData.SingleOrDefault(x => x.Id == _id);

            _vm.Name        = $"{dbRower.LastName}, {dbRower.FirstName}";
            _vm.Gender      = dbRower.Gender;
            _vm.YearOfBirth = dbRower.DateOfBirth.Year.ToString();
            _vm.Club        = dbRower.ClubTitleLong;

            #endregion

            #region bisherige Gewichtsmessungen

            // Deutsche Bezeichnung für die Wochentage
            var culture = new System.Globalization.CultureInfo("de-DE");

            // Alle bisherigen Gewichtsmessungen
            _vm.Weightings = GlobalData.Instance.Weightings.Where(x => x.Id == _id).OrderByDescending(x => x.Zeitstempel).Select(x => new RowerPageViewModel.Weighting()
            {
                Mass = x.Gewicht.ToString(),
                Date = culture.DateTimeFormat.GetDayName(x.Zeitstempel.DayOfWeek),
                Time = $"{x.Zeitstempel:HH:mm:ss}"
            }).ToObservableCollection();
예제 #3
0
 private Boat(BoatBuilder builder) : base(builder)
 {
     this.hullType = builder.getHullType();
     this.propType = builder.getPropType();
 }
        /// <summary>
        /// Refreshes this instance.
        /// </summary>
        private void Refresh()
        {
            try
            {
                RefreshCurrentTime(); // lokal gespeicherte Zeit aktualisieren, kann Fehler werfen!
            }
            catch (Exception ex)
            {
                Tools.ShowError(ex.Message);
                return;
            }

            var boatBuilder = new BoatBuilder(_currentTime);

            var rowersData = GlobalData.Instance.RowersData;
            var racesData  = GlobalData.Instance.RacesData;
            // var racesConfiguration = GlobalData.Instance.RacesConfiguration; // TODO: Was ist hiermit?

            // aktueller Zeitstempel
            var day = Properties.Settings.Default.Today;
            var now = new DateTime(day.Year, day.Month, day.Day, _currentTime.Hours, _currentTime.Minutes, _currentTime.Seconds);

            // Alle Rennen der DB durchgehen
            var vmRaces = new System.Collections.ObjectModel.ObservableCollection <UserControls.Race>();

            foreach (var raceData in racesData)
            {
                // Neues Rennen
                var newRace = new UserControls.Race(raceData, _delayTime, GlobalData.Instance.MainViewModel.SetDelayTime);

                newRace.UpdateRemainingMinutes(now);

                // bei reduzierter Ansicht: Rennen ggf. nicht anzeigen (weil an einem anderen Tag oder schon lange vorbei oder erst in Stunden)
                // das wird erst hier gemacht, weil hier das Rennen samt Verspätung als Objekt vorhanden ist
                if (GlobalData.Instance.MainViewModel.RacesReducedView)
                {
                    // Zeit in Stunden bis zum Rennen
                    var remainingHours = (newRace.RaceDT - now).TotalHours;

                    if (remainingHours < 0)
                    {
                        // Rennen ist in der Vergangenheit
                        continue;
                    }

                    if (remainingHours > 4)
                    {
                        // Es sind noch mehr als 4 Stunden bis zum Rennen
                        continue;
                    }
                }

                // Alle Boote des Rennens
                foreach (var boatData in raceData.BoatsData)
                {
                    // Neues Boot
                    var newBoat = new UserControls.Boat(boatData);

                    // Die Ruderer des Bootes
                    var rowers = new List <UserControls.Rower>();

                    // Ruderer hinzufügen
                    foreach (var rowerData in boatData.Rowers)
                    {
                        boatBuilder.AddRower(ref rowers, raceData, rowerData, false, _delayTime);
                    }

                    // Steuermann hinzufügen
                    if (boatData.Cox != null)
                    {
                        boatBuilder.AddRower(ref rowers, raceData, boatData.Cox, true, _delayTime);
                    }

                    // Ruderer zum Boot hinzufügen
                    newBoat.Rowers = rowers;

                    // Status-Symbol des Boots entsprechend des Status der Ruderer im Boot setzen
                    boatBuilder.SetBoatStatus(raceData, boatData, newRace, newBoat);

                    // Boote zum Rennen hinzufügen
                    newRace.Boats.Add(newBoat);
                }

                // Status-Symbol des Rennens entsprechend des Status der Boote im Rennen setzen
                boatBuilder.SetRaceStatus(newRace);

                // Rennen hinzufügen
                vmRaces.Add(newRace);
            }

            _vm.Races = vmRaces;
        }