Update README; add delete confirmation page; code cleanup

This commit is contained in:
Laura Hausmann 2020-06-11 22:25:37 +02:00
parent 4ef567d257
commit 5f4a510cee
Signed by: zotan
GPG key ID: 5EC1D38FFC321311
4 changed files with 55 additions and 17 deletions

View file

@ -8,3 +8,10 @@
- Stuff WILL break
- I am not responsible if some DB guy comes knocking on your doorstep if you use this or this software creates any kind of other damages
- Most importantly: have fun.
## Development / testing requirements
- .NET Core SDK (version 3.1.3 or higher; arch package `dotnet-sdk`)
- ASP.NET Core Runtime (version 3.1.3 or higher; arch package `aspnet-runtime`)
- `cd bahnplan.web`
- `dotnet run`

View file

@ -5,13 +5,51 @@
@model DeleteModel
@{
ViewData["Title"] = "Home";
if (HttpContext.Session.GetString("authorized") != "true") {
Response.Redirect("/");
return;
}
Layout = null;
Response.Redirect(Request.Headers["Referer"]);
if (Request.Query.ContainsKey("confirm") && Request.Query["confirm"] == "true") {
Layout = null;
Response.Redirect(Request.Headers["Referer"]);
}
else {
<h3>Are you sure?</h3>
<p>
You are attempting to delete
@{
await using var db = new Database.DbConn();
}
@switch (Request.Query["item"]) {
case "trip": {
var legs = db.Legs.Where(p => p.TripId == int.Parse(Request.Query["id"])).OrderBy(p => p.DepTime).ToList();;
<span>
the trip from <b>@legs.First().DepStation</b> to <b>@legs.Last().ArrStation</b>, starting <i>@legs.First().DepTime</i>
</span>
break;
}
case "leg": {
Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true");
break;
}
case "ticket": {
Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true");
break;
}
case "card": {
var card = db.Cards.First(p => p.CardId == int.Parse(Request.Query["id"]));
<span>
the card <b>@card.CardInfo.TrimEnd('#')</b> with the number <i>@card.CardNumber</i>, owned by <b>@card.Traveller</b>
</span>
break;
}
}
</p>
<a href="@Request.Headers["Referer"]" class="btn btn-sm btn-secondary">Cancel</a>
<a href="/Delete?item=@Request.Query["item"]&id=@Request.Query["id"]&confirm=true" class="btn btn-sm btn-danger">Confirm</a>
}
}

View file

@ -18,6 +18,9 @@ namespace bahnplan.web.Pages {
if (HttpContext.Session.GetString("authorized") != "true")
return;
if (!Request.Query.ContainsKey("confirm") || Request.Query["confirm"] != "true")
return;
var uid = int.Parse(HttpContext.Session.GetString("uid"));
using var db = new Database.DbConn();
AuthorizedUser = db.Users.FirstOrDefault(p => p.UserId == uid);

View file

@ -9,14 +9,12 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
namespace bahnplan.web.Pages {
public class TripModel : PageModel {
public List<Leg> Legs;
public Ticket Ticket;
public void OnGet() {
if (HttpContext.Session.GetString("authorized") != "true") {
return;
}
using var db = new Database.DbConn();
if (Request.Query.ContainsKey("separator")) {
var leg = db.Legs.First(p => p.LegId == int.Parse(Request.Query["legid"]));
@ -35,15 +33,7 @@ namespace bahnplan.web.Pages {
return;
}
var legs = db.Legs.Where(p => p.TripId == int.Parse(Request.Query["id"])).ToList();
Legs = new List<Leg>();
foreach (var j in legs) {
Legs.Add(j);
if (j.TicketId != 0)
Ticket = db.Tickets.First(p => p.TicketId == j.TicketId);
}
Legs = Legs.OrderBy(p => p.DepTime).ToList();
Legs = db.Legs.Where(p => p.TripId == int.Parse(Request.Query["id"])).OrderBy(p => p.DepTime).ToList();
}
}
}