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 { private readonly ILogger _logger; private readonly RankService _rankService; private readonly StoreService _storeService; private readonly UserService _userService; public RankDataController(ILogger logger, RankService rankService, StoreService storeService, UserService userService) { _logger = logger; _rankService = rankService; _storeService = storeService; _userService = userService; } [EndpointHandler("update")] private async Task UploadRankData(string body) { RankEntryDTO uploadrequest = JsonConvert.DeserializeObject(body, new RankEntryDTOConverter()); await _rankService.UploadRankEntry(uploadrequest); return Ok(new OkResponse()); } [HttpGet] public async Task 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); } } }