diff --git a/bahnplan.web/Pages/Index.cshtml b/bahnplan.web/Pages/Index.cshtml index e58e26e..2dddc88 100644 --- a/bahnplan.web/Pages/Index.cshtml +++ b/bahnplan.web/Pages/Index.cshtml @@ -1,8 +1,8 @@ @page @using Microsoft.AspNetCore.Http @using Microsoft.AspNetCore.Http.Extensions -@using bahnplan.web.database @using LinqToDB +@using bahnplan.web.database @model IndexModel @{ ViewData["Title"] = "Home"; @@ -27,6 +27,7 @@ Origin Via Destination + Comments Actions Danger zone @@ -46,11 +47,14 @@ 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(" ", " ")) + @Html.Raw(legs.First().DepStation.PadRight(30, ' ').Substring(0, 30).TrimEnd()) @((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(" ", " ")) + @Html.Raw(legs.Last().ArrStation.PadRight(30, ' ').Substring(0, 30).TrimEnd()) + + @Html.Raw(legs.Where(leg => !string.IsNullOrWhiteSpace(leg.Comment)).Select(p => p.Comment).DefaultIfEmpty("").Aggregate((s1, s2) => $"{s1}
{s2}")) + View diff --git a/bahnplan.web/Pages/Trip.cshtml b/bahnplan.web/Pages/Trip.cshtml index 5b4d720..46cbf10 100644 --- a/bahnplan.web/Pages/Trip.cshtml +++ b/bahnplan.web/Pages/Trip.cshtml @@ -16,6 +16,11 @@ return; } + if (Request.HasFormContentType) { + Response.Redirect(Request.GetEncodedUrl()); + return; + } + if (Model.Legs.First().UserId != int.Parse(HttpContext.Session.GetString("uid"))) { return; } @@ -64,6 +69,7 @@ Departure Arrival Train + Comment @if (!Request.Query.ContainsKey("edit")) { Actions } @@ -79,6 +85,7 @@ + @if (!Request.Query.ContainsKey("edit")) { } @@ -99,13 +106,18 @@ @date - @dept @Html.Raw(leg.DepStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", " ")) + @dept @Html.Raw(leg.DepStation.PadRight(30, ' ').Substring(0, 30).TrimEnd()) - @arrt @Html.Raw(leg.ArrStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", " ")) + @arrt @Html.Raw(leg.ArrStation.PadRight(30, ' ').Substring(0, 30).TrimEnd()) @leg.TrainType @leg.TrainNr @if (!Request.Query.ContainsKey("edit")) { + + @if (!string.IsNullOrWhiteSpace(leg.Comment)) { + @Html.Raw(leg.Comment) + } + @if (leg.TicketId != 0) { Ticket @@ -118,6 +130,12 @@ } else { + +
+ + +
+ @{ await using var db = new Database.DbConn(); diff --git a/bahnplan.web/Pages/Trip.cshtml.cs b/bahnplan.web/Pages/Trip.cshtml.cs index d031a59..fa0b1ea 100644 --- a/bahnplan.web/Pages/Trip.cshtml.cs +++ b/bahnplan.web/Pages/Trip.cshtml.cs @@ -37,5 +37,22 @@ namespace bahnplan.web.Pages { Legs = db.Legs.Where(p => p.TripId == int.Parse(Request.Query["id"])).OrderBy(p => p.DepTime).ToList(); } + + public void OnPost() { + if (HttpContext.Session.GetString("authorized") != "true") + return; + + using var db = new Database.DbConn(); + if (!Request.Form.ContainsKey("comment")) + return; + + var leg = db.Legs.First(p => p.LegId == int.Parse(Request.Form["id"])); + if (leg.UserId != int.Parse(HttpContext.Session.GetString("uid"))) + return; + + leg.Comment = Request.Form["comment"]; + + db.Update(leg); + } } } \ No newline at end of file diff --git a/bahnplan.web/database.db.example b/bahnplan.web/database.db.example index 7f7c2b7..24bac5d 100644 Binary files a/bahnplan.web/database.db.example and b/bahnplan.web/database.db.example differ diff --git a/bahnplan.web/database.example.sql b/bahnplan.web/database.example.sql index f5da74d..265c27c 100644 --- a/bahnplan.web/database.example.sql +++ b/bahnplan.web/database.example.sql @@ -22,20 +22,6 @@ CREATE TABLE IF NOT EXISTS "TicketLegs" ( "ArrStation" TEXT NOT NULL, "ArrTime" TEXT NOT NULL ); -CREATE TABLE IF NOT EXISTS "Legs" ( - "LegID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, - "TripID" INTEGER NOT NULL, - "UserID" INTEGER NOT NULL, - "TrainType" TEXT NOT NULL, - "TrainNr" INTEGER NOT NULL, - "DepStationID" INTEGER NOT NULL, - "DepStation" TEXT NOT NULL, - "DepTime" TEXT NOT NULL, - "ArrStationID" INTEGER NOT NULL, - "ArrStation" TEXT NOT NULL, - "ArrTime" TEXT NOT NULL, - "TicketID" INTEGER -); CREATE TABLE IF NOT EXISTS "Tickets" ( "TicketID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, "UserID" INTEGER NOT NULL, @@ -63,11 +49,26 @@ CREATE TABLE IF NOT EXISTS "Cards" ( "QRValidTo" TEXT NOT NULL, "QRValidFrom" TEXT NOT NULL ); +CREATE TABLE IF NOT EXISTS "Legs" ( + "LegID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + "TripID" INTEGER NOT NULL, + "UserID" INTEGER NOT NULL, + "TrainType" TEXT NOT NULL, + "TrainNr" INTEGER NOT NULL, + "DepStationID" INTEGER NOT NULL, + "DepStation" TEXT NOT NULL, + "DepTime" TEXT NOT NULL, + "ArrStationID" INTEGER NOT NULL, + "ArrStation" TEXT NOT NULL, + "ArrTime" TEXT NOT NULL, + "TicketID" INTEGER, + "Comment" TEXT +); DELETE FROM sqlite_sequence; INSERT INTO sqlite_sequence VALUES('Trips',68); INSERT INTO sqlite_sequence VALUES('Users',55); INSERT INTO sqlite_sequence VALUES('TicketLegs',10); -INSERT INTO sqlite_sequence VALUES('Legs',85); INSERT INTO sqlite_sequence VALUES('Tickets',25); INSERT INTO sqlite_sequence VALUES('Cards',10); +INSERT INTO sqlite_sequence VALUES('Legs',0); COMMIT; diff --git a/bahnplan.web/database/Tables/Leg.cs b/bahnplan.web/database/Tables/Leg.cs index de12218..a9488e0 100644 --- a/bahnplan.web/database/Tables/Leg.cs +++ b/bahnplan.web/database/Tables/Leg.cs @@ -29,5 +29,7 @@ namespace bahnplan.web.database.Tables { [Column(Name = "ArrTime"), NotNull] public string ArrTime { get; set; } [Column(Name = "TicketID")] public int TicketId { get; set; } + + [Column(Name = "Comment")] public string Comment { get; set; } } } \ No newline at end of file diff --git a/bahnplan.web/wwwroot/css/site.css b/bahnplan.web/wwwroot/css/site.css index e679a8e..356d15b 100644 --- a/bahnplan.web/wwwroot/css/site.css +++ b/bahnplan.web/wwwroot/css/site.css @@ -69,3 +69,7 @@ body { white-space: nowrap; line-height: 60px; /* Vertically center the text there */ } + +td { + vertical-align: middle !important; +} \ No newline at end of file