AfRApay/AfRApay.Web/Pages/Index.cshtml.cs
2023-02-16 16:36:26 +01:00

53 lines
1.7 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 IndexModel : PageModel {
public void OnGet() { }
public async void OnPost() {
await using var db = new DatabaseContext();
if (Request.Form["action"] == "transaction" && Request.Form.ContainsKey("userId") && Request.Form.ContainsKey("amount")) {
var userId = int.Parse(Request.Form["userId"].ToString());
var amount = int.Parse(Request.Form["amount"].ToString());
var user = db.Users.First(p => p.Id == userId);
switch (user.Balance + amount) {
case < -9999:
Response.Redirect("/ErrorRedirect?message=" + WebUtility.UrlEncode("Balance too low!"));
return;
case > 99999:
Response.Redirect("/ErrorRedirect?message=" + WebUtility.UrlEncode("Balance too high!"));
return;
}
user.Balance += amount;
await db.SaveChangesAsync();
Response.Redirect($"/#{user.Nickname}");
}
else if (Request.Form["action"] == "add_user") {
if (Request.Form.ContainsKey("nickname") && !string.IsNullOrWhiteSpace(Request.Form["nickname"])) {
var nick = Request.Form["nickname"];
if (db.Users.Any(p => p.Nickname == nick.ToString())) {
Response.Redirect("/ErrorRedirect?redir=%23add_user&message=" + WebUtility.UrlEncode("User with nick already exists."));
return;
}
var user = new User { Nickname = nick.ToString(), Balance = 0 };
db.Add(user);
await db.SaveChangesAsync();
Response.Redirect($"/#{user.Nickname}");
return;
}
Response.Redirect("/ErrorRedirect?redir=%23add_user&message=" + WebUtility.UrlEncode("Nickname must not be empty."));
}
else {
Response.Redirect("/");
}
}
}