54 lines
2.0 KiB
C#
54 lines
2.0 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);
|
|
_logger.LogInformation("Got rank entries for {RankType}", rankType.ToString());
|
|
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),
|
|
AccountId = entry.UserId,
|
|
Version = entry.Version,
|
|
Wave = entry.Wave,
|
|
Damage = entry.Damage,
|
|
TowersUsed = towersUsed
|
|
};
|
|
await _rankRepository.InsertRankEntry(toUpload);
|
|
_logger.LogInformation("Uploaded a rank entry for {SteamId}", entry.SteamId);
|
|
}
|
|
}
|
|
} |