Files
API/TOOHUCardAPI/Controllers/RankDataController.cs

63 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using TOOHUCardAPI.Data;
using TOOHUCardAPI.Data.Enums;
using TOOHUCardAPI.Data.JsonConverters;
using TOOHUCardAPI.Data.Services;
using TOOHUCardAPI.DTO;
using TOOHUCardAPI.DTO.RankData;
namespace TOOHUCardAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class RankDataController : MethodBasedController<RankDataController>
{
private readonly ILogger<RankDataController> _logger;
private readonly RankService _rankService;
private readonly StoreService _storeService;
private readonly UserService _userService;
public RankDataController(ILogger<RankDataController> logger, RankService rankService, StoreService storeService, UserService userService)
{
_logger = logger;
_rankService = rankService;
_storeService = storeService;
_userService = userService;
}
[EndpointHandler("update")]
private async Task<IActionResult> UploadRankData(string body)
{
RankEntryDTO uploadrequest = JsonConvert.DeserializeObject<RankEntryDTO>(body, new RankEntryDTOConverter());
await _rankService.UploadRankEntry(uploadrequest);
return Ok(new OkResponse());
}
[HttpGet]
public async Task<IActionResult> GetRankData(string rank_type)
{
RankType parsedRankType = RankTypeExtensions.ParseRankType(rank_type);
RankDataGetResponse response = new RankDataGetResponse()
{
Body = new RankDataGetResponseBody()
};
if (parsedRankType == RankType.All || parsedRankType == RankType.Single)
{
response.Body.FFAEntries = await _rankService.GetRankEntries(RankType.Single);
}
if (parsedRankType == RankType.Team || parsedRankType == RankType.All)
{
response.Body.TeamEntries = await _rankService.GetRankEntries(RankType.Team);
}
return Ok(response);
}
}
}