AfRApay/AfRApay.Web/Controllers/CardLink.cs
2023-02-06 02:37:36 +01:00

41 lines
1 KiB
C#

using AfRApay.Web.Backend;
using AfRApay.Web.Backend.Tables;
using LinqToDB;
using Microsoft.AspNetCore.Mvc;
namespace AfRApay.Web.Controllers;
[ApiController, Route("/api/card/link")]
public class CardLink : Controller {
[HttpGet]
public string Get([FromQuery] string card) {
var db = new Database.DbConn();
if (db.Cards.Any(p => p.CardId == card)) {
return "E:Already registered.";
}
var linkFlag = db.Config.FirstOrDefault(p => p.Name == "link");
if (string.IsNullOrWhiteSpace(linkFlag?.Value)) {
return "E:No link flag set.";
}
var lTimeFlag = db.Config.FirstOrDefault(p => p.Name == "lTime");
if (string.IsNullOrWhiteSpace(lTimeFlag?.Value)) {
return "E:No link flag set.";
}
if (DateTime.UtcNow - DateTime.Parse(lTimeFlag.Value) > TimeSpan.FromMinutes(5)) {
return "E:Link expired, try again.";
}
var user = db.Users.First(p => p.Id == int.Parse(linkFlag.Value));
linkFlag.Value = "";
db.Insert(new Card { CardId = card, UserId = user.Id });
db.Update(linkFlag);
return $"S:Reg. -> {user.Nickname}";
}
}