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); }
public RunHeaderViewModel(RunManuals manual) { if (manual == null) { throw new ArgumentNullException(nameof(manual), "Manual Input data is null."); } setManualInput(manual); }
private void setManualInput(RunManuals manual) { YoutubeLink = manual.YoutubeLink; SpeedrunLink = manual.SpeedrunLink; if (manual.RuntimeInMs.HasValue) { Runtime = TimeSpan.FromMilliseconds(manual.RuntimeInMs.Value); RuntimeOverride = true; } }
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 })); }
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)); }
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"); } }
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); } }
public void Upsert(RunManuals manuals) { _component.Upsert(manuals); _adjuster.Adjust(manuals); }