mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-26 07:29:00 -07:00
95 lines
2.3 KiB
C#
95 lines
2.3 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using RadicadeServer.DB;
|
|
using RadicadeServer.Extensions;
|
|
using RadicadeServer.RecNet.Board;
|
|
|
|
namespace RadicadeServer.API.Board.V2
|
|
{
|
|
[Route("api/communityboard/v2")]
|
|
public class CommunityBoardV2 : Controller
|
|
{
|
|
private readonly RecDBContext db;
|
|
|
|
public CommunityBoardV2(RecDBContext context)
|
|
{
|
|
db = context;
|
|
}
|
|
|
|
[HttpGet("current")]
|
|
public async Task<ActionResult<CommunityBoard>> GetCurrentCommunityBoard()
|
|
{
|
|
var config = await db.ServerConfig.FirstOrDefaultAsync(x => x.Key == "CommunityBoard");
|
|
var board = config?.Value?.FromJson<CommunityBoard>() ?? CreateDefaultBoard();
|
|
NormalizeBoard(board);
|
|
return Ok(board);
|
|
}
|
|
|
|
private static CommunityBoard CreateDefaultBoard()
|
|
{
|
|
return new CommunityBoard
|
|
{
|
|
FeaturedPlayer = new FeaturedPlayer
|
|
{
|
|
Id = 0,
|
|
TitleOverride = string.Empty,
|
|
UrlOverride = string.Empty
|
|
},
|
|
FeaturedRoomGroup = new FeaturedRoomGroup
|
|
{
|
|
FeaturedRoomGroupId = 0,
|
|
Name = string.Empty,
|
|
Rooms = new List<FeaturedRoom>()
|
|
},
|
|
CurrentAnnouncement = new BoardAnnouncement
|
|
{
|
|
Message = string.Empty,
|
|
MoreInfoUrl = string.Empty
|
|
},
|
|
InstagramImages = new List<InstagramImage>(),
|
|
Videos = new List<BoardVideo>()
|
|
};
|
|
}
|
|
|
|
private static void NormalizeBoard(CommunityBoard board)
|
|
{
|
|
board.FeaturedPlayer ??= new FeaturedPlayer
|
|
{
|
|
Id = 0,
|
|
TitleOverride = string.Empty,
|
|
UrlOverride = string.Empty
|
|
};
|
|
board.FeaturedRoomGroup ??= new FeaturedRoomGroup
|
|
{
|
|
FeaturedRoomGroupId = 0,
|
|
Name = string.Empty,
|
|
Rooms = new List<FeaturedRoom>()
|
|
};
|
|
board.FeaturedRoomGroup.Rooms ??= new List<FeaturedRoom>();
|
|
board.CurrentAnnouncement ??= new BoardAnnouncement
|
|
{
|
|
Message = string.Empty,
|
|
MoreInfoUrl = string.Empty
|
|
};
|
|
board.InstagramImages ??= new List<InstagramImage>();
|
|
board.Videos ??= new List<BoardVideo>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var video in board.Videos)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(video.SourceUrl) && !string.IsNullOrWhiteSpace(video.BlobName))
|
|
video.SourceUrl = $"{DBConfig.ServerUrl}/cdn/video/{video.BlobName.TrimStart('/')}";
|
|
}
|
|
|
|
var playable = board.Videos
|
|
.Where(video => !string.IsNullOrWhiteSpace(video.SourceUrl) || !string.IsNullOrWhiteSpace(video.BlobName))
|
|
.ToList();
|
|
board.Videos = playable;
|
|
}
|
|
}
|
|
}
|