diff --git a/bahnplan.web/Pages/Delete.cshtml b/bahnplan.web/Pages/Delete.cshtml index be5c3ce..6b04897 100644 --- a/bahnplan.web/Pages/Delete.cshtml +++ b/bahnplan.web/Pages/Delete.cshtml @@ -44,11 +44,11 @@ break; } case "leg": { - Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true&redir={Request.Query["redir"]}"); + Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true&redir={Request.Query["redir"].ToString().UrlEncode()}"); break; } case "ticket": { - Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true&redir={Request.Query["redir"]}"); + Response.Redirect($"/Delete?item={Request.Query["item"]}&id={Request.Query["id"]}&confirm=true&redir={Request.Query["redir"].ToString().UrlEncode()}"); break; } case "card": { @@ -65,5 +65,5 @@ }

Cancel - Confirm + Confirm } \ No newline at end of file diff --git a/bahnplan.web/Pages/Delete.cshtml.cs b/bahnplan.web/Pages/Delete.cshtml.cs index b1f9d9f..3bb8a5c 100644 --- a/bahnplan.web/Pages/Delete.cshtml.cs +++ b/bahnplan.web/Pages/Delete.cshtml.cs @@ -37,9 +37,15 @@ namespace bahnplan.web.Pages { return; var tripid = db.Legs.First(p => p.LegId == id).TripId; + db.Legs.Delete(p => p.LegId == id); + if (!db.Legs.Any(p => p.TripId == tripid)) db.Trips.Delete(p => p.TripId == tripid); + else if (db.Legs.Where(p => p.TripId == tripid).OrderBy(p => p.DepTime).First().DepTime.EndsWith("placeholder")) + db.Delete(db.Legs.Where(p => p.TripId == tripid).OrderBy(p => p.DepTime).First()); + else if (db.Legs.Where(p => p.TripId == tripid).OrderByDescending(p => p.DepTime).First().DepTime.EndsWith("placeholder")) + db.Delete(db.Legs.Where(p => p.TripId == tripid).OrderByDescending(p => p.DepTime).First()); break; } case "ticket": { diff --git a/bahnplan.web/Pages/Trip.cshtml b/bahnplan.web/Pages/Trip.cshtml index 046f27a..eee4e3f 100644 --- a/bahnplan.web/Pages/Trip.cshtml +++ b/bahnplan.web/Pages/Trip.cshtml @@ -16,11 +16,20 @@ return; } + if (Model.RedirToIndex) { + Response.Redirect("/"); + } + if (Request.HasFormContentType) { Response.Redirect(Request.GetEncodedUrl()); return; } + if (!Model.Legs.Any()) { + Response.Redirect("/"); + return; + } + if (Model.Legs.First().UserId != int.Parse(HttpContext.Session.GetString("uid"))) { return; } diff --git a/bahnplan.web/Pages/Trip.cshtml.cs b/bahnplan.web/Pages/Trip.cshtml.cs index fa0b1ea..fd44eeb 100644 --- a/bahnplan.web/Pages/Trip.cshtml.cs +++ b/bahnplan.web/Pages/Trip.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; namespace bahnplan.web.Pages { public class TripModel : PageModel { public List Legs; + public bool RedirToIndex; public void OnGet() { if (HttpContext.Session.GetString("authorized") != "true") @@ -35,6 +36,9 @@ namespace bahnplan.web.Pages { return; } + if (!db.Legs.Any(p => p.TripId == int.Parse(Request.Query["id"]))) + RedirToIndex = true; + Legs = db.Legs.Where(p => p.TripId == int.Parse(Request.Query["id"])).OrderBy(p => p.DepTime).ToList(); }