From e5a7e8ec6c16742bc6f7f66172419689fd012c9f Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Fri, 12 Jun 2020 05:29:41 +0200 Subject: [PATCH] BREAKING: DATABASE UPDATE; add comments; cleanup --- bahnplan.web/Pages/Index.cshtml | 10 ++++++--- bahnplan.web/Pages/Trip.cshtml | 22 ++++++++++++++++++-- bahnplan.web/Pages/Trip.cshtml.cs | 17 +++++++++++++++ bahnplan.web/database.db.example | Bin 65536 -> 73728 bytes bahnplan.web/database.example.sql | 31 ++++++++++++++-------------- bahnplan.web/database/Tables/Leg.cs | 2 ++ bahnplan.web/wwwroot/css/site.css | 4 ++++ 7 files changed, 66 insertions(+), 20 deletions(-) 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 7f7c2b753259f07fc6ec13e0e802053e4841f5ca..24bac5ded6194b5d5b70b7949b9cb953eac1e36a 100644 GIT binary patch delta 457 zcmZo@U}-qOGC^7}l!1Xk2#T2)7?|`Y>KN;XGUypt@p1(-@Uy&R;CJRf%lDD@1K%;e z**tQ*yE%4nsc?Q}o5Rt|@{;>2_X_S68z)vUMR5f)L(l|qLqo>4_>#n=oYdmNoTT`Y z)Z79HH{Q@3Q-sSo$kj2#RUyRD$;VYe2~)x5TCQA1HLhUB^I(&mF->kZP+}Js6=iI5 z-WOLOxaw(ZO;{682MZ4T!OWMp$zW)lxLoP3a1 z!W7fSctcDvZvGz(hQNSgPzUO?76s|tEX?yonV*sWEB`D0Tl|Olcko~2U$|LNpqt;4 z|007p2c{vMY|P?}&WS}S#a!I1%+ib@naSCyCB>2q>;lZ996qV(#hY*08zwMv0Zn<& iKQVxHQGvoH1r~wDECLFfSp@z7h1gjcfsPP_DF6UBbcXi; delta 188 zcmZoTz|zpbGC^7}gn@xU0EnT0NnoOmv33Z9o`DrF{|^R!wmA&^&irTjKJtFxJH|Jg zM~-(lS1|WijvZVooL|}IaP)2#6cA$DJcn&NGfT5PC;R4bu0Y1gc5L1pT$<`!Y~t3U zlMnJrY!>GEqRh*{|CRq0|1JIt{D=8>0QD{5SK?%27H4!$EJ`Wn;$~%*W(>(p&Q2{U kmgHbz7G?BFO)n1Je9PW2VKaBaSN%;2ECQQZ1pdea0N7+PlmGw# 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