@page
@using Microsoft.AspNetCore.Http
@using Microsoft.AspNetCore.Http.Extensions
@using bahnplan.web.database
@using LinqToDB
@model IndexModel
@{
ViewData["Title"] = "Home";
}
@if (HttpContext.Session.GetString("authorized") != "true") {
Welcome
Please log in to see your personal plan.
}
else {
Welcome, @Model.AuthorizedUser.Username
Here are your planned trips.
Date |
Origin |
Via |
Destination |
Actions |
Danger zone |
@{
await using var db = new Database.DbConn();
var trips = db.Trips.Where(p => p.UserId == Model.AuthorizedUser.UserId).ToList();
foreach (var trip in trips.Where(trip => !db.Legs.Any(p => p.TripId == trip.TripId))) {
await db.DeleteAsync(trip);
trips = db.Trips.Where(p => p.UserId == Model.AuthorizedUser.UserId).ToList();
}
foreach (var trip in trips.OrderBy(p => db.Legs.First(a => a.TripId == p.TripId).ArrTime)) {
var legs = db.Legs.Where(p => p.TripId == trip.TripId).OrderBy(p => p.DepTime).ToList();
var dates = DateTime.Parse(legs.First().DepTime).Date == DateTime.Parse(legs.Last().DepTime).Date ? legs.First().DepTime.Substring(0, 10) : legs.First().DepTime.Substring(0, 10) + "
" + legs.Last().DepTime.Substring(0, 10);
@Html.Raw(dates) |
@Html.Raw(legs.First().DepStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", " ")) |
@((from index in from leg in legs where leg.TrainType == "placeholder" select legs.IndexOf(leg) select legs[index - 1].ArrStation).ToList().DefaultIfEmpty("-").Aggregate((s1, s2) => $"{s1}, {s2}"))
|
@Html.Raw(legs.Last().ArrStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", " ")) |
View
|
Delete Trip
|
}
}
}