Files
2026-07-23 18:21:43 -07:00

57 lines
2.0 KiB
C#

using DeluxeBackend.Models;
using DeluxeBackend.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Data;
using static DeluxeBackend.Enums;
using System.Text.Json;
namespace DeluxeBackend.Controllers.Matchmaking
{
[Route("Matchmaking/invite")]
[ApiController]
[Authorize(Roles = "gameClient")]
public class InviteController(IJwtService jwt, ILiteDbService db, IMessageService message) : ControllerBase
{
[HttpPost]
public async Task<IActionResult> Invite([FromForm(Name = "roomInstanceId")] long RoomInstanceId, [FromForm(Name = "playerId")] long PlayerId)
{
LoginWithInfoResult? login = await jwt.GetLoginWithInfo(User);
if (login == null) return Unauthorized();
Account account = login.Account;
Account? account1 = db.Accounts.FindById(PlayerId);
if (account1 == null)
{
return Ok(new { Success = false });
}
RoomInstance roomInstance = db.RoomInstances.Include(x => x.SubRoom).Include(x => x.SubRoom!.Room).Include(x => x.SubRoom!.Room!.Creator).FindById(RoomInstanceId);
if (roomInstance == null)
{
return Ok(new { Success = false });
}
PlayerInvite playerInvite = new()
{
Account = account1,
InstanceId = roomInstance.Id,
InvitedBy = account,
ExpiresAt = DateTime.UtcNow.AddMinutes(10)
};
db.PlayerInvites.Insert(playerInvite);
await message.SendMessage(account, account1, MessageType.GameInviteV2, JsonSerializer.Serialize(new Dictionary<string, object>()
{
["inviteId"] = playerInvite.Id,
["name"] = "meow",
["roomInstanceId"] = roomInstance.Id
}));
return Ok(new { Success = true });
}
}
}