83 lines
2.3 KiB
C#
83 lines
2.3 KiB
C#
using System.Net;
|
|
using AfRApay.Web.Backend.Database;
|
|
using AfRApay.Web.Backend.Database.Tables;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
|
|
namespace AfRApay.Web.Pages;
|
|
|
|
public class EditUserModel : PageModel {
|
|
public void OnGet() { }
|
|
|
|
public async void OnPost() {
|
|
await using var db = new DatabaseContext();
|
|
var userId = long.Parse(RouteData.Values["id"]!.ToString()!);
|
|
var user = db.Users.First(p => p.Id == userId);
|
|
|
|
if (Request.Form["action"] == "delete") {
|
|
db.Remove(user);
|
|
await db.SaveChangesAsync();
|
|
Response.Redirect("/");
|
|
return;
|
|
}
|
|
|
|
if (Request.Form["action"] == "deleteCard" && Request.Form.ContainsKey("cardId")) {
|
|
var card = db.Cards.First(p => p.Id == Request.Form["cardId"].ToString());
|
|
db.Remove(card);
|
|
await db.SaveChangesAsync();
|
|
Response.Redirect($"/EditUser/{userId}");
|
|
return;
|
|
}
|
|
|
|
if (Request.Form["action"] == "linkCard") {
|
|
var linkFlag = db.Config.FirstOrDefault(p => p.Name == "link");
|
|
var lTimeFlag = db.Config.FirstOrDefault(p => p.Name == "lTime");
|
|
|
|
Response.Redirect($"/EditUser/{userId}");
|
|
|
|
if (lTimeFlag == null) {
|
|
lTimeFlag = new Config { Name = "lTime", Value = DateTime.UtcNow.ToString("s") };
|
|
db.Add(lTimeFlag);
|
|
await db.SaveChangesAsync();
|
|
}
|
|
else {
|
|
lTimeFlag.Value = DateTime.UtcNow.ToString("s");
|
|
await db.SaveChangesAsync();
|
|
}
|
|
|
|
if (linkFlag == null) {
|
|
linkFlag = new Config { Name = "link", Value = user.Id.ToString() };
|
|
db.Add(linkFlag);
|
|
await db.SaveChangesAsync();
|
|
return;
|
|
}
|
|
|
|
if (linkFlag.Value.Equals(user.Id.ToString())) {
|
|
return;
|
|
}
|
|
|
|
linkFlag.Value = user.Id.ToString();
|
|
await db.SaveChangesAsync();
|
|
return;
|
|
}
|
|
|
|
if (Request.Form["action"] == "save" && Request.Form.ContainsKey("nickname") && !string.IsNullOrWhiteSpace(Request.Form["nickname"])) {
|
|
var nick = Request.Form["nickname"].ToString();
|
|
if (db.Users.Any(p => p.Nickname == nick && p.Id != userId)) {
|
|
Response.Redirect($"/ErrorRedirect?redir=/EditUser/{userId}&message=" + WebUtility.UrlEncode("User with nick already exists."));
|
|
return;
|
|
}
|
|
|
|
user.Nickname = nick;
|
|
await db.SaveChangesAsync();
|
|
}
|
|
|
|
Response.Redirect($"/#{user.Nickname}");
|
|
}
|
|
|
|
public enum CardType {
|
|
Normal = 1,
|
|
LinkPlaceholder = 2,
|
|
DeletionConfirmation = 3
|
|
}
|
|
}
|