private TimeSpan generateNewEndTime(TimingAnalytics analytics, RunManuals manuals)
        {
            var timeWithoutEnd = analytics.Events.Where(x => x.IsSubSplit == false).Where(x => x.Section != Sections.TheEnd).Sum(x => x.Time.TotalMilliseconds);
            var timeInEnd      = manuals.RuntimeInMs.Value - timeWithoutEnd;

            return(TimeSpan.FromMilliseconds(timeInEnd));
        }
        private TimingAnalytics applyManualInput(TimingAnalytics analytics, RunManuals manuals)
        {
            if (!manuals.RuntimeInMs.HasValue)
            {
                return(analytics);
            }

            if (!analytics.FinishedOn.HasValue)
            {
                return(analytics);
            }

            if (!analytics.Events.Any(x => x.Section == Sections.TheEnd))
            {
                return(analytics);
            }

            var newTimeInEnd = generateNewEndTime(analytics, manuals);

            if (newTimeInEnd.TotalSeconds <= 30)
            {
                return(analytics);
            }

            analytics.RunTime = TimeSpan.FromMilliseconds(manuals.RuntimeInMs.Value);
            analytics.Events.First(x => x.Section == Sections.TheEnd).Time = newTimeInEnd;
            analytics.Events.First(x => x.Section == Sections.TheEnd).End  = analytics.Events.First(x => x.Section == Sections.TheEnd).Start + newTimeInEnd;
            analytics.ManualOverride = true;

            return(analytics);
        }
        public void Adjust(RunManuals manuals)
        {
            var analytics = _analyticsReader.Get(manuals.Worldname);

            analytics.Timings = applyManualInput(analytics.Timings, manuals);
            _analyticsWriter.Upsert(analytics);
        }
Beispiel #4
0
        public RunHeaderViewModel(RunManuals manual)
        {
            if (manual == null)
            {
                throw new ArgumentNullException(nameof(manual), "Manual Input data is null.");
            }

            setManualInput(manual);
        }
Beispiel #5
0
 private void setManualInput(RunManuals manual)
 {
     YoutubeLink  = manual.YoutubeLink;
     SpeedrunLink = manual.SpeedrunLink;
     if (manual.RuntimeInMs.HasValue)
     {
         Runtime         = TimeSpan.FromMilliseconds(manual.RuntimeInMs.Value);
         RuntimeOverride = true;
     }
 }
Beispiel #6
0
        public IActionResult Edited(RunEditViewModel model)
        {
            var manuals = new RunManuals(model.Worldname);

            manuals.YoutubeLink  = model.YoutubeLink;
            manuals.SpeedrunLink = model.SpeedrunLink;
            manuals.RuntimeInMs  = parseRuntime(model.Runtime);

            _manualsWriter.Upsert(manuals);

            return(RedirectToAction("Edit", new { worldname = model.Worldname }));
        }
Beispiel #7
0
        public IActionResult Edit(string worldname)
        {
            RunManuals manuals = _manualsReader.Get(worldname);

            if (manuals == null)
            {
                manuals = new RunManuals(worldname);
            }

            var viewmodel = new RunEditViewModel(manuals);

            return(View(viewmodel));
        }
Beispiel #8
0
        public RunEditViewModel(RunManuals manuals)
        {
            Worldname    = manuals.Worldname;
            YoutubeLink  = manuals.YoutubeLink;
            SpeedrunLink = manuals.SpeedrunLink;

            if (manuals.RuntimeInMs.HasValue)
            {
                Runtime = TimeSpan
                          .FromMilliseconds(manuals.RuntimeInMs.Value)
                          .ToString(@"hh\:mm\:ss\:fff");
            }
        }
Beispiel #9
0
        public RunHeaderViewModel(RunAnalytics analytics, RunManuals manual)
        {
            if (analytics == null)
            {
                throw new ArgumentNullException(nameof(analytics), "Analytics data is null.");
            }
            else
            {
                setAnalytics(analytics);
            }

            if (manual != null)
            {
                setManualInput(manual);
            }
        }
Beispiel #10
0
 public void Upsert(RunManuals manuals)
 {
     _component.Upsert(manuals);
     _adjuster.Adjust(manuals);
 }