57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using System;
|
|
using Mocha2023.Auth;
|
|
using Mocha2023.Classes.DBs;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Mocha2023.Controllers
|
|
{
|
|
|
|
[ApiController]
|
|
[Mocha2023.Classes.ApiProtection]
|
|
public class PlatformNotificationController : ControllerBase
|
|
{
|
|
[HttpGet("/accounts/{accountId:long}/receives/{category}")]
|
|
public IActionResult AccountReceivesCategory(
|
|
long accountId,
|
|
string category)
|
|
{
|
|
long? requesterPlayerId = AuthStuff.GetPlayerId(Request);
|
|
if (!requesterPlayerId.HasValue)
|
|
return Unauthorized();
|
|
|
|
if (accountId <= 0 ||
|
|
PlayerDB.Players.FindById(accountId)?.Player == null)
|
|
{
|
|
return NotFound(false);
|
|
}
|
|
|
|
bool supportedCategory = category.Equals(
|
|
"GameplayInvites",
|
|
StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Friends", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Chat", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Events", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("RoomNotifications", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("FavoriteFriendOnline", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Feed", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Creator", StringComparison.OrdinalIgnoreCase) ||
|
|
category.Equals("Store", StringComparison.OrdinalIgnoreCase);
|
|
|
|
if (supportedCategory &&
|
|
category.Equals(
|
|
"GameplayInvites",
|
|
StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
var relationship = RelationshipDB.GetClientRelationship(
|
|
accountId,
|
|
requesterPlayerId.Value);
|
|
bool recipientBlockedRequester = relationship?.Ignored is 1 or 3;
|
|
if (recipientBlockedRequester)
|
|
return Ok(false);
|
|
}
|
|
|
|
return Ok(supportedCategory);
|
|
}
|
|
}
|
|
}
|