@{
// ReSharper disable ConditionIsAlwaysTrueOrFalse
var title = (string) ViewData["title"];
var station = (string) ViewData["station"];
var stationId = (string) ViewData["stationId"];
var via = (string) ViewData["via"];
var andShowDestination = (string) ViewData["andShowDestination"];
var fernverkehrOnly = (bool) ViewData["fernverkehrOnly"];
var onlyDepartures = (bool) ViewData["onlyDepartures"];
var excludingVia = (string) ViewData["excludingVia"];
var offset = (int) ViewData["offset"];
IgnoreBody();
}
@using System.Globalization
@using System.Linq
@using ZTravel.API.DBF
@using ZTravel.Web
Departures - ZTravel
@{
var deps = DbfApi.GetDepartures("dbf.finalrewind.org", station, via) ?? new List();
}
@foreach (var dep in deps) {
if (fernverkehrOnly && !dep.TrainClasses.Contains("F") && dep.Destination != andShowDestination) {
continue;
}
if (onlyDepartures && string.IsNullOrWhiteSpace(dep.ScheduledDeparture)) {
continue;
}
if (dep.Route.Select(r => r.Name).Contains(excludingVia)) {
continue;
}
var typeclass = "bahn";
if (dep.TrainClasses.Any()) {
typeclass = dep.TrainClasses.First() switch {
"S" => "sbahn",
"F" => "fern",
_ => "bahn"};
}
var trainclass = dep.Train.Split(" ")[0];
DateTime rawtime;
var delayed = false;
var undelayed = false;
var cancelled = dep.IsCancelled == 1;
var stringtime = "";
var stringdelay = "";
if (!string.IsNullOrWhiteSpace(dep.ScheduledDeparture)) {
rawtime = DateTime.ParseExact(dep.ScheduledDeparture, "HH:mm", CultureInfo.InvariantCulture);
if (dep.DelayDeparture != null) {
rawtime += new TimeSpan(0, (int) dep.DelayDeparture, 0);
if (dep.DelayDeparture > 0) {
delayed = true;
stringdelay = $"(+{dep.DelayDeparture})";
}
else if (dep.DelayDeparture < 0) {
undelayed = true;
stringdelay = $"({dep.DelayDeparture})";
}
}
stringtime = $"{rawtime:HH:mm}";
}
else {
rawtime = DateTime.ParseExact(dep.ScheduledArrival, "HH:mm", CultureInfo.InvariantCulture);
if (dep.DelayArrival != null) {
rawtime += new TimeSpan(0, (int) dep.DelayArrival, 0);
if (dep.DelayArrival > 0) {
delayed = true;
stringdelay = $"(+{dep.DelayArrival})";
}
else if (dep.DelayArrival < 0) {
undelayed = true;
stringdelay = $"({dep.DelayArrival})";
}
}
stringtime = $"(arr) {rawtime:HH:mm}";
dep.Destination += $" (from {dep.Route.First().Name})";
}
if ((rawtime - DateTime.Now).TotalMinutes < 0) {
rawtime += new TimeSpan(1, 0, 0, 0);
}
if ((rawtime - DateTime.Now).TotalMinutes < offset) {
continue;
}