2020-06-12 00:37:55 +02:00
|
|
|
|
using System.Linq;
|
2020-06-11 20:29:16 +02:00
|
|
|
|
using bahnplan.web.database;
|
|
|
|
|
using bahnplan.web.database.Tables;
|
|
|
|
|
using LinqToDB;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
|
|
|
|
|
|
|
|
namespace bahnplan.web.Pages {
|
|
|
|
|
public class DeleteModel : PageModel {
|
|
|
|
|
public User AuthorizedUser;
|
|
|
|
|
|
|
|
|
|
public void OnGet() {
|
|
|
|
|
if (HttpContext.Session.GetString("authorized") != "true")
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 22:25:37 +02:00
|
|
|
|
if (!Request.Query.ContainsKey("confirm") || Request.Query["confirm"] != "true")
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
var uid = int.Parse(HttpContext.Session.GetString("uid"));
|
|
|
|
|
using var db = new Database.DbConn();
|
|
|
|
|
AuthorizedUser = db.Users.FirstOrDefault(p => p.UserId == uid);
|
|
|
|
|
var id = int.Parse(Request.Query["id"]);
|
|
|
|
|
|
|
|
|
|
switch (Request.Query["item"]) {
|
|
|
|
|
case "trip": {
|
2020-06-12 02:21:59 +02:00
|
|
|
|
var trip = db.Trips.First(p => p.TripId == id);
|
|
|
|
|
if (trip.UserId != int.Parse(HttpContext.Session.GetString("uid")))
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
db.Trips.Delete(p => p.TripId == id);
|
|
|
|
|
db.Legs.Delete(p => p.TripId == id);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "leg": {
|
2020-06-12 02:21:59 +02:00
|
|
|
|
var leg = db.Legs.First(p => p.LegId == id);
|
|
|
|
|
if (leg.UserId != int.Parse(HttpContext.Session.GetString("uid")))
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
var tripid = db.Legs.First(p => p.LegId == id).TripId;
|
2020-06-13 07:30:56 +02:00
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
db.Legs.Delete(p => p.LegId == id);
|
2020-06-13 07:30:56 +02:00
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
if (!db.Legs.Any(p => p.TripId == tripid))
|
|
|
|
|
db.Trips.Delete(p => p.TripId == tripid);
|
2020-06-13 07:30:56 +02:00
|
|
|
|
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());
|
2020-06-11 20:29:16 +02:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "ticket": {
|
2020-06-12 02:21:59 +02:00
|
|
|
|
var leg = db.Legs.First(p => p.LegId == id);
|
|
|
|
|
if (leg.UserId != int.Parse(HttpContext.Session.GetString("uid")))
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
db.Legs.Where(p => p.LegId == id).Set(p => p.TicketId, 0).Update();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "card": {
|
2020-06-12 02:21:59 +02:00
|
|
|
|
var card = db.Cards.First(p => p.CardId == id);
|
|
|
|
|
if (card.UserId != int.Parse(HttpContext.Session.GetString("uid")))
|
|
|
|
|
return;
|
|
|
|
|
|
2020-06-11 20:29:16 +02:00
|
|
|
|
db.Cards.Delete(p => p.CardId == id);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|