Example #1
0
        TimeSpan?getAccumulatedTime(RaceRun rr, RunResultWithPosition resWp)
        {
            Race race = rr.GetRace();

            TimeSpan?ts = new TimeSpan();

            for (int i = 0; i < race.GetMaxRun(); i++)
            {
                RaceRun r = race.GetRun(i);
                if (r.Run <= rr.Run)
                {
                    TimeSpan?t = r.GetRunResult(resWp.Participant)?.Runtime;
                    if (t != null && ts != null)
                    {
                        ts = ts + (TimeSpan)t;
                    }
                    else
                    {
                        ts = null;
                    }
                }
            }

            return(ts);
        }
        string getRemainingStartersList(RaceRun raceRun, string grouping, int limit)
        {
            string output = "";

            Application.Current.Dispatcher.Invoke(() =>
            {
                ViewConfigurator viewConfigurator = new ViewConfigurator(raceRun.GetRace());
                var vp = viewConfigurator.GetRemainingStartersViewProvider(raceRun);
                if (grouping != null)
                {
                    vp.ChangeGrouping(grouping);
                }

                List <object> remaingStarters = new List <object>();
                int c = 0;
                foreach (var item in vp.GetView())
                {
                    if (limit >= 0 && c >= limit)
                    {
                        break;
                    }

                    remaingStarters.Add(item);
                    c++;
                }

                output = JsonConversion.ConvertOnStartList(remaingStarters);
            });

            return(output);
        }
Example #3
0
        public void UpdateInFinish(RaceRun raceRun, RaceParticipant rp)
        {
            SetActiveRaceRun(raceRun);

            var results         = ViewUtilities.ViewToList <RaceResultItem>(raceRun.GetRace().GetTotalResultView());
            var rri4Participant = results.FirstOrDefault(rri => rri.Participant == rp);

            scheduleTransfer(new LTTransfer(getXmlEventResult(raceRun, rri4Participant)));
        }
        public StartListViewProvider GetStartlistViewProvider(RaceRun rr, string context = null)
        {
            ViewFactory factory = Singleton <ViewFactory> .Instance;

            StartListViewProvider slVP;

            // First Run
            if (1 == rr.Run)
            {
                FirstRunStartListViewProvider frslVP = factory.Create <FirstRunStartListViewProvider>(_config.Run1_StartistView);

                // Backup if nothing has been created
                if (frslVP == null)
                {
                    frslVP = new FirstRunStartListViewProvider();
                }

                frslVP.SetDefaultGrouping(_config.Run1_StartistViewGrouping);

                frslVP.Init(rr.GetRace().GetParticipants());
                slVP = frslVP;
            }
            else
            // Second or later run
            {
                // Figure out previous run
                RaceRun rrPrevious = rr.GetRace().GetRuns().Where(r => r.Run == (rr.Run - 1U)).First();

                SecondRunStartListViewProvider srslVP = factory.Create <SecondRunStartListViewProvider>(_config.Run2_StartistView);

                if (srslVP == null)
                {
                    srslVP = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending);
                }

                srslVP.SetDefaultGrouping(_config.Run2_StartistViewGrouping);

                srslVP.Init(rrPrevious);
                slVP = srslVP;
            }

            return(slVP);
        }
        string getResultList(RaceRun raceRun, string grouping)
        {
            string output = "";

            Application.Current.Dispatcher.Invoke(() =>
            {
                ViewConfigurator viewConfigurator = new ViewConfigurator(raceRun.GetRace());
                RaceRunResultViewProvider vp      = viewConfigurator.GetRaceRunResultViewProvider(raceRun);
                if (grouping != null)
                {
                    vp.ChangeGrouping(grouping);
                }

                output = JsonConversion.ConvertRunResults(vp.GetView());
            });

            return(output);
        }
        private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
        {
            var onTrack = _raceRun.GetOnTrackList().ToArray();

            foreach (var lr in onTrack)
            {
                if (lr.GetStartTime() != null)
                {
                    TimeSpan startTime      = (TimeSpan)lr.GetStartTime();
                    TimeSpan curTime        = _raceRun.GetRace().GetDataModel().GetCurrentDayTime();
                    TimeSpan timeSinceStart = curTime - startTime;

                    if (timeSinceStart.TotalSeconds > _secondsTillAutoNiZ)
                    {
                        setToNiZ(lr.Participant);
                    }
                }
            }
        }
Example #7
0
        private void CmbRaceRun_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CBItem  selected        = (sender as ComboBox).SelectedValue as CBItem;
            RaceRun selectedRaceRun = selected?.Value as RaceRun;


            if (_currentRaceRun != selectedRaceRun)
            {
                // Stop any helper
                if (_liveTimingAutoNiZ != null)
                {
                    _liveTimingAutoNiZ.Dispose();
                }
                _liveTimingAutoNiZ = null;

                if (_liveTimingAutoNaS != null)
                {
                    _liveTimingAutoNaS.Dispose();
                }
                _liveTimingAutoNaS = null;

                // Remember new race run
                _currentRaceRun = selectedRaceRun;

                if (_currentRaceRun != null)
                {
                    if (_dataModel.GetCurrentRace() == _currentRaceRun.GetRace())
                    {
                        _dataModel.SetCurrentRaceRun(_currentRaceRun);
                    }
                }

                ConnectUiToRaceRun(_currentRaceRun);

                ConfigureTimingHelper();
            }
        }
Example #8
0
        public DiqualifyVM(RaceRun raceRun)
        {
            _raceRun = raceRun;

            _disqualifyList = new CopyObservableCollection <RunResultProxy, RaceParticipant>(_raceRun.GetRace().GetParticipants(), (p) => { return(new RunResultProxy(p, _raceRun)); }, false);
        }
Example #9
0
        void writeRunData(RaceRun raceRun, AdditionalRaceProperties.RaceRunProperties raceRunProperties)
        {
            _writer.WriteStartElement("rundata");
            _writer.WriteAttributeString("runnumber", raceRun.Run.ToString());

            {
                _writer.WriteStartElement("coursedata");

                if (string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseName))
                {
                    throw new DSVExportException("missing coarsename");
                }
                _writer.WriteStartElement("coursename");
                _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.CoarseName);
                _writer.WriteEndElement();

                if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseHomologNo))
                {
                    _writer.WriteStartElement("homologationnumber");
                    _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseHomologNo);
                    _writer.WriteEndElement();
                }

                if (raceRunProperties.Gates <= 0)
                {
                    throw new DSVExportException("missing number_of_gates");
                }
                _writer.WriteStartElement("number_of_gates");
                _writer.WriteValue(raceRunProperties.Gates.ToString());
                _writer.WriteEndElement();

                if (raceRunProperties.Turns <= 0)
                {
                    throw new DSVExportException("missing number_of_turninggates");
                }
                _writer.WriteStartElement("number_of_turninggates");
                _writer.WriteValue(raceRunProperties.Turns.ToString());
                _writer.WriteEndElement();

                if (raceRun.GetRace().AdditionalProperties?.StartHeight <= 0)
                {
                    throw new DSVExportException("missing startaltitude");
                }
                _writer.WriteStartElement("startaltitude");
                _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.StartHeight.ToString());
                _writer.WriteEndElement();

                if (raceRun.GetRace().AdditionalProperties?.FinishHeight <= 0)
                {
                    throw new DSVExportException("missing finishaltitude");
                }
                _writer.WriteStartElement("finishaltitude");
                _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString());
                _writer.WriteEndElement();

                if (raceRun.GetRace().AdditionalProperties?.CoarseLength <= 0)
                {
                    throw new DSVExportException("missing courselength");
                }
                _writer.WriteStartElement("courselength");
                _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseLength.ToString());
                _writer.WriteEndElement();

                writeCourseSetterPerson(_writer, raceRunProperties.CoarseSetter);

                if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner1.Name))
                {
                    writeForeRunnerPerson(_writer, 1, raceRunProperties.Forerunner1);
                }
                else
                {
                    throw new DSVExportException("missing forerunner");
                }
                if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner2.Name))
                {
                    writeForeRunnerPerson(_writer, 2, raceRunProperties.Forerunner2);
                }
                if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner3.Name))
                {
                    writeForeRunnerPerson(_writer, 3, raceRunProperties.Forerunner3);
                }

                _writer.WriteEndElement();
            }


            if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather) ||
                !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow) ||
                !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart) ||
                !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish))
            {
                _writer.WriteStartElement("meteodata");

                if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather))
                {
                    _writer.WriteStartElement("weather");
                    _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Weather);
                    _writer.WriteEndElement();
                }
                if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow))
                {
                    _writer.WriteStartElement("snowtexture");
                    _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Snow);
                    _writer.WriteEndElement();
                }
                if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart))
                {
                    _writer.WriteStartElement("temperature_startaltitude");
                    _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempStart);
                    _writer.WriteEndElement();
                }
                if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish))
                {
                    _writer.WriteStartElement("temperature_finishaltitude");
                    _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempFinish);
                    _writer.WriteEndElement();
                }

                _writer.WriteEndElement();
            }

            {
                _writer.WriteStartElement("starttime");
                _writer.WriteValue(raceRunProperties.StartTime); // TODO: Ensure "HH:MM" 24h
                _writer.WriteEndElement();
            }

            _writer.WriteEndElement();
        }
Example #10
0
        internal string getXmlRaceInfo(RaceRun raceRun)
        {
            using (var sw = new Utf8StringWriter())
            {
                using (var xw = XmlWriter.Create(sw, _xmlSettings))
                {
                    xw.WriteStartDocument();
                    xmlWriteStartElementLivetiming(xw);
                    xw.WriteStartElement("raceinfo");

                    xw.WriteElementString("event", raceRun.GetRace().Description);
                    xw.WriteElementString("slope", raceRun.GetRace().AdditionalProperties.CoarseName);
                    xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace()));
                    xw.WriteElementString("gender", getGender(raceRun.GetRace()));
                    xw.WriteElementString("category", _fisCategory);
                    xw.WriteElementString("place", raceRun.GetRace().AdditionalProperties.Location);
                    xw.WriteElementString("tempunit", "c");
                    xw.WriteElementString("longunit", "m");
                    xw.WriteElementString("speedunit", "Kmh");

                    xw.WriteStartElement("run");
                    xw.WriteAttributeString("no", raceRun.Run.ToString());

                    xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace()));

                    if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0)
                    {
                        xw.WriteElementString("start", raceRun.GetRace().AdditionalProperties?.StartHeight.ToString());
                    }
                    if (raceRun.GetRace().AdditionalProperties?.FinishHeight > 0)
                    {
                        xw.WriteElementString("finish", raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString());
                    }
                    if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0 && raceRun.GetRace().AdditionalProperties?.FinishHeight > 0)
                    {
                        xw.WriteElementString("height", (raceRun.GetRace().AdditionalProperties?.StartHeight - raceRun.GetRace().AdditionalProperties?.FinishHeight).ToString());
                    }

                    AdditionalRaceProperties.RaceRunProperties raceRunProperties = null;
                    if (raceRun.Run == 1)
                    {
                        raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun1;
                    }
                    else if (raceRun.Run >= 2)
                    {
                        raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun2;
                    }

                    if (raceRunProperties != null)
                    {
                        if (raceRunProperties.Gates > 0)
                        {
                            xw.WriteElementString("gates", raceRunProperties.Gates.ToString());
                        }

                        if (raceRunProperties.Turns > 0)
                        {
                            xw.WriteElementString("turninggates", raceRunProperties.Turns.ToString());
                        }

                        if (raceRunProperties.StartTime != null && raceRunProperties.StartTime.Contains(":") && raceRunProperties.StartTime.Length == 5)
                        {
                            xw.WriteElementString("hour", raceRunProperties.StartTime.Substring(0, 2));
                            xw.WriteElementString("minute", raceRunProperties.StartTime.Substring(3, 2));
                        }
                    }

                    if (raceRun.GetRace().AdditionalProperties?.DateResultList != null)
                    {
                        xw.WriteElementString("day", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Day.ToString());
                        xw.WriteElementString("month", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Month.ToString());
                        xw.WriteElementString("year", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Year.ToString());
                    }

                    xw.WriteStartElement("racedef");
                    xw.WriteEndElement();

                    xw.WriteEndElement(); // run

                    xw.WriteEndElement(); // raceinfo
                    xw.WriteEndElement(); // Livetiming
                    xw.WriteEndDocument();
                }
                return(sw.ToString());
            }
        }