BREAKING: DATABASE UPDATE; add comments; cleanup

This commit is contained in:
Laura Hausmann 2020-06-12 05:29:41 +02:00
parent 14c0e506a4
commit e5a7e8ec6c
Signed by: zotan
GPG key ID: 5EC1D38FFC321311
7 changed files with 66 additions and 20 deletions

View file

@ -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 @@
<th scope="col">Origin</th>
<th scope="col">Via</th>
<th scope="col">Destination</th>
<th scope="col">Comments</th>
<th scope="col">Actions</th>
<th scope="col">Danger zone</th>
</tr>
@ -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) + "<br/>" + legs.Last().DepTime.Substring(0, 10);
<tr>
<td>@Html.Raw(dates)</td>
<td>@Html.Raw(legs.First().DepStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", "&nbsp;"))</td>
<td>@Html.Raw(legs.First().DepStation.PadRight(30, ' ').Substring(0, 30).TrimEnd())</td>
<td>
@((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}"))
</td>
<td>@Html.Raw(legs.Last().ArrStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", "&nbsp;"))</td>
<td>@Html.Raw(legs.Last().ArrStation.PadRight(30, ' ').Substring(0, 30).TrimEnd())</td>
<td>
@Html.Raw(legs.Where(leg => !string.IsNullOrWhiteSpace(leg.Comment)).Select(p => p.Comment).DefaultIfEmpty("").Aggregate((s1, s2) => $"{s1}<br/>{s2}"))
</td>
<td>
<a class="btn btn-sm btn-primary" href="/Trip?id=@trip.TripId">View</a>
</td>

View file

@ -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 @@
<th scope="col">Departure</th>
<th scope="col">Arrival</th>
<th scope="col">Train</th>
<th scope="col">Comment</th>
@if (!Request.Query.ContainsKey("edit")) {
<th scope="col">Actions</th>
}
@ -79,6 +85,7 @@
<td></td>
<td></td>
<td></td>
<td></td>
@if (!Request.Query.ContainsKey("edit")) {
<td></td>
}
@ -99,13 +106,18 @@
@date
</td>
<td>
<b>@dept</b> @Html.Raw(leg.DepStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", "&nbsp;"))
<b>@dept</b> @Html.Raw(leg.DepStation.PadRight(30, ' ').Substring(0, 30).TrimEnd())
</td>
<td>
<b>@arrt</b> @Html.Raw(leg.ArrStation.PadRight(30, ' ').Substring(0, 30).Replace(" ", "&nbsp;"))
<b>@arrt</b> @Html.Raw(leg.ArrStation.PadRight(30, ' ').Substring(0, 30).TrimEnd())
</td>
<td>@leg.TrainType @leg.TrainNr</td>
@if (!Request.Query.ContainsKey("edit")) {
<td class="text-center">
@if (!string.IsNullOrWhiteSpace(leg.Comment)) {
@Html.Raw(leg.Comment)
}
</td>
<td>
@if (leg.TicketId != 0) {
<a class="btn btn-sm btn-danger" href="/Inspection?id=@leg.TicketId&leg=@leg.LegId" target="_blank">Ticket</a>
@ -118,6 +130,12 @@
</td>
}
else {
<td>
<form method="POST">
<input type="hidden" name="id" value="@leg.LegId">
<input type="text" class="form-control" name="comment" value="@leg.Comment"/>
</form>
</td>
<td>
@{
await using var db = new Database.DbConn();

View file

@ -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);
}
}
}

Binary file not shown.

View file

@ -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;

View file

@ -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; }
}
}

View file

@ -69,3 +69,7 @@ body {
white-space: nowrap;
line-height: 60px; /* Vertically center the text there */
}
td {
vertical-align: middle !important;
}