41 lines
1 KiB
C#
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}";
|
|
}
|
|
}
|