Files
API/TOOHUCardAPI/Data/Services/RankService.cs

51 lines
1.8 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using TOOHUCardAPI.Data.Enums;
using TOOHUCardAPI.Data.Models;
using TOOHUCardAPI.Data.Repositories;
using TOOHUCardAPI.DTO.RankData;
namespace TOOHUCardAPI.Data.Services
{
public class RankService
{
private readonly ILogger<RankService> _logger;
private readonly RankRepository _rankRepository;
private readonly UserRepository _userRepository;
public RankService(ILogger<RankService> logger, RankRepository rankRepository, UserRepository userRepository)
{
_logger = logger;
_rankRepository = rankRepository;
_userRepository = userRepository;
}
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType)
{
var rankEntries = await _rankRepository.GetRankEntries(rankType);
return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList();
}
public async Task UploadRankEntry(RankEntryDTO entry)
{
List<RankTowerEntry> towersUsed = entry.Cards.Select(kv => new RankTowerEntry
{
TowerKey = kv.Key,
EncodedData = kv.Value
}).ToList();
RankEntry toUpload = new RankEntry
{
RankType = RankTypeExtensions.ParseRankType(entry.RankType),
Username = entry.Username,
User = await _userRepository.GetUser(entry.SteamId),
Version = entry.Version,
Wave = entry.Wave,
Damage = entry.Damage,
TowersUsed = towersUsed
};
await _rankRepository.InsertRankEntry(toUpload);
}
}
}