mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-25 23:18:56 -07:00
74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using RadicadeServer.API.Rooms;
|
|
using RadicadeServer.API.Rooms.V1;
|
|
using RadicadeServer.DB;
|
|
using RadicadeServer.Extensions;
|
|
|
|
namespace RadicadeServer.API.Rooms.Currency.V1
|
|
{
|
|
[Route("api/roomcurrencies/v1")]
|
|
[Route("econ/api/roomcurrencies/v1")]
|
|
public class RoomCurrencyAPI(RecDBContext db) : Controller
|
|
{
|
|
[HttpGet("betaEnabled")]
|
|
public bool IsBetaEnabled()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
[HttpGet("currencies")]
|
|
public async Task<IActionResult> GetRoomCurrencies([FromQuery] long roomId)
|
|
{
|
|
return Ok(await RoomAssetStore.GetDtosAsync(db, roomId, "currency"));
|
|
}
|
|
|
|
[HttpGet("getAllBalances")]
|
|
public List<object> GetAllBalances([FromQuery] long roomId)
|
|
{
|
|
return [];
|
|
}
|
|
|
|
[HttpGet("getBalance")]
|
|
public IActionResult GetBalance(
|
|
[FromQuery] string? currencyId,
|
|
[FromQuery] long? accountId,
|
|
[FromQuery] long? roomId)
|
|
{
|
|
return Ok(new
|
|
{
|
|
CurrencyId = currencyId ?? string.Empty,
|
|
AccountId = accountId ?? User.GetUserId() ?? 0,
|
|
RoomId = roomId ?? 0,
|
|
Balance = 0
|
|
});
|
|
}
|
|
|
|
[HttpPost("createCurrency")]
|
|
public async Task<IActionResult> CreateCurrency()
|
|
{
|
|
var body = await RoomEconomyPayload.ReadBodyAsync(Request);
|
|
var roomId = await RoomEconomyPayload.RoomIdAsync(db, Request, body, "roomId", "RoomId");
|
|
if (roomId is not > 0) return BadRequest(new { Message = "roomId is required." });
|
|
var currencyId = RoomEconomyPayload.String(body, "currencyId", "CurrencyId") ?? RoomEconomyPayload.NewId();
|
|
|
|
var currency = RoomEconomyPayload.Fields(body);
|
|
currency["CurrencyId"] = currencyId;
|
|
currency["RoomId"] = roomId.Value;
|
|
currency["CurrencyType"] = currency.TryGetValue("CurrencyType", out var type) && type != null ? type : "RoomCurrency";
|
|
currency["Name"] = RoomEconomyPayload.String(body, "name", "Name") ?? "Currency";
|
|
currency["Description"] = RoomEconomyPayload.String(body, "description", "Description") ?? string.Empty;
|
|
currency["InitialBalance"] = RoomEconomyPayload.Long(body, "initialBalance", "InitialBalance") ?? 0;
|
|
|
|
await RoomAssetStore.SaveAsync(db, new RoomAssetRecord
|
|
{
|
|
Id = currencyId,
|
|
RoomId = roomId.Value,
|
|
Kind = "currency",
|
|
Fields = currency
|
|
});
|
|
|
|
return Ok(currency);
|
|
}
|
|
}
|
|
}
|