more rank stuff, might be ready for use
This commit is contained in:
@@ -5,7 +5,10 @@ using System.Threading.Tasks;
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using TOOHUCardAPI.Data;
|
||||||
using TOOHUCardAPI.Data.Enums;
|
using TOOHUCardAPI.Data.Enums;
|
||||||
|
using TOOHUCardAPI.Data.JsonConverters;
|
||||||
using TOOHUCardAPI.Data.Services;
|
using TOOHUCardAPI.Data.Services;
|
||||||
using TOOHUCardAPI.DTO;
|
using TOOHUCardAPI.DTO;
|
||||||
using TOOHUCardAPI.DTO.RankData;
|
using TOOHUCardAPI.DTO.RankData;
|
||||||
@@ -29,6 +32,14 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
_userService = userService;
|
_userService = userService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[EndpointHandler("upload")]
|
||||||
|
private async Task<IActionResult> UploadRankData(string body)
|
||||||
|
{
|
||||||
|
RankEntryDTO uploadrequest = JsonConvert.DeserializeObject<RankEntryDTO>(body, new RankEntryDTOConverter());
|
||||||
|
await _rankService.UploadRankEntry(uploadrequest);
|
||||||
|
return Ok(new OkResponse());
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> GetRankData(string rank_type)
|
public async Task<IActionResult> GetRankData(string rank_type)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace TOOHUCardAPI.DTO.PlayerData
|
|||||||
[JsonProperty("power_max_total")] public int PowerMaxTotal { get; set; }
|
[JsonProperty("power_max_total")] public int PowerMaxTotal { get; set; }
|
||||||
[JsonProperty("pet_model")] public string PetModel { get; set; }
|
[JsonProperty("pet_model")] public string PetModel { get; set; }
|
||||||
[JsonProperty("pet_effect")] public string PetEffect { get; set; }
|
[JsonProperty("pet_effect")] public string PetEffect { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
public Dictionary<string, string> EncodedCardGroups { get; set; }
|
public Dictionary<string, string> EncodedCardGroups { get; set; }
|
||||||
|
|
||||||
public Dictionary<string, object> ToDynamicProperties()
|
public Dictionary<string, object> ToDynamicProperties()
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using TOOHUCardAPI.Data.Models;
|
using TOOHUCardAPI.Data.Models;
|
||||||
|
|
||||||
namespace TOOHUCardAPI.DTO.RankData
|
namespace TOOHUCardAPI.DTO.RankData
|
||||||
{
|
{
|
||||||
public class RankEntryDTO
|
public class RankEntryDTO
|
||||||
{
|
{
|
||||||
|
[JsonProperty("rank_type")]
|
||||||
public string RankType { get; set; }
|
public string RankType { get; set; }
|
||||||
public long SteamId { get; set; }
|
public long SteamId { get; set; }
|
||||||
public long UserId { get; set; }
|
public long UserId { get; set; }
|
||||||
@@ -13,6 +15,7 @@ namespace TOOHUCardAPI.DTO.RankData
|
|||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
public int Wave { get; set; }
|
public int Wave { get; set; }
|
||||||
public long Damage { get; set; }
|
public long Damage { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
public Dictionary<string, string> Cards { get; set; }
|
public Dictionary<string, string> Cards { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,7 +27,7 @@ namespace TOOHUCardAPI.DTO.RankData
|
|||||||
{
|
{
|
||||||
RankType = ((char) rankEntry.RankType).ToString(),
|
RankType = ((char) rankEntry.RankType).ToString(),
|
||||||
SteamId = rankEntry.User.SteamId,
|
SteamId = rankEntry.User.SteamId,
|
||||||
UserId = 0, // temporary
|
UserId = rankEntry.AccountId,
|
||||||
Username = rankEntry.Username,
|
Username = rankEntry.Username,
|
||||||
Version = rankEntry.Version,
|
Version = rankEntry.Version,
|
||||||
Wave = rankEntry.Wave,
|
Wave = rankEntry.Wave,
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ namespace TOOHUCardAPI.Data.JsonConverters
|
|||||||
JsonSerializer serializer)
|
JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
JObject jo = JObject.Load(reader);
|
JObject jo = JObject.Load(reader);
|
||||||
RankEntryDTO dto = new RankEntryDTO();
|
RankEntryDTO dto = jo.ToObject<RankEntryDTO>();
|
||||||
serializer.Populate(reader, dto);
|
|
||||||
dto.Cards = jo.Properties().Where(prop => prop.Name.Contains("card"))
|
dto.Cards = jo.Properties().Where(prop => prop.Name.Contains("card"))
|
||||||
.Select(i => KeyValuePair.Create(i.Name, i.Value))
|
.Select(i => KeyValuePair.Create(i.Name, i.Value))
|
||||||
.ToDictionary(kv => kv.Key, kv => kv.Value.ToObject<string>());
|
.ToDictionary(kv => kv.Key, kv => kv.Value.ToObject<string>());
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ namespace TOOHUCardAPI.Data.Models
|
|||||||
public RankType RankType { get; set; }
|
public RankType RankType { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public User User { get; set; }
|
public User User { get; set; }
|
||||||
|
public long AccountId { get; set; }
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
public int Wave { get; set; }
|
public int Wave { get; set; }
|
||||||
public long Damage { get; set; }
|
public long Damage { get; set; }
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace TOOHUCardAPI.Data.Repositories
|
|||||||
|
|
||||||
private IQueryable<RankEntry> AllIncluded()
|
private IQueryable<RankEntry> AllIncluded()
|
||||||
{
|
{
|
||||||
return _appDbContext.RankEntries.Include(i => i.TowersUsed);
|
return _appDbContext.RankEntries.Include(i => i.TowersUsed).Include(i => i.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<RankEntry>> GetRankEntries(RankType rankType)
|
public async Task<IEnumerable<RankEntry>> GetRankEntries(RankType rankType)
|
||||||
@@ -33,6 +33,7 @@ namespace TOOHUCardAPI.Data.Repositories
|
|||||||
public async Task InsertRankEntry(RankEntry entry)
|
public async Task InsertRankEntry(RankEntry entry)
|
||||||
{
|
{
|
||||||
await _appDbContext.RankEntries.AddAsync(entry);
|
await _appDbContext.RankEntries.AddAsync(entry);
|
||||||
|
await _appDbContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,7 @@ namespace TOOHUCardAPI.Data.Services
|
|||||||
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType)
|
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType)
|
||||||
{
|
{
|
||||||
var rankEntries = await _rankRepository.GetRankEntries(rankType);
|
var rankEntries = await _rankRepository.GetRankEntries(rankType);
|
||||||
|
_logger.LogInformation("Got rank entries for {RankType}", rankType.ToString());
|
||||||
return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList();
|
return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,12 +41,14 @@ namespace TOOHUCardAPI.Data.Services
|
|||||||
RankType = RankTypeExtensions.ParseRankType(entry.RankType),
|
RankType = RankTypeExtensions.ParseRankType(entry.RankType),
|
||||||
Username = entry.Username,
|
Username = entry.Username,
|
||||||
User = await _userRepository.GetUser(entry.SteamId),
|
User = await _userRepository.GetUser(entry.SteamId),
|
||||||
|
AccountId = entry.UserId,
|
||||||
Version = entry.Version,
|
Version = entry.Version,
|
||||||
Wave = entry.Wave,
|
Wave = entry.Wave,
|
||||||
Damage = entry.Damage,
|
Damage = entry.Damage,
|
||||||
TowersUsed = towersUsed
|
TowersUsed = towersUsed
|
||||||
};
|
};
|
||||||
await _rankRepository.InsertRankEntry(toUpload);
|
await _rankRepository.InsertRankEntry(toUpload);
|
||||||
|
_logger.LogInformation("Uploaded a rank entry for {SteamId}", entry.SteamId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
{
|
||||||
|
"info": {
|
||||||
|
"_postman_id": "ca7d06a8-ff57-4c17-bfb0-b7fd504dcf40",
|
||||||
|
"name": "2HU API",
|
||||||
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
||||||
|
},
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "PlayerData",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get Test User",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"method\": \"get\",\n \"ids\": {\n \"0\": \"123\"\n }\n}",
|
||||||
|
"options": {
|
||||||
|
"raw": {
|
||||||
|
"language": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}PlayerData",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}PlayerData"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Save Test Card Group",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"method\": \"save_card_group\",\n \"steamid\": \"123\",\n \"group_key\": \"1\",\n \"group_data\": \"test\"\n}",
|
||||||
|
"options": {
|
||||||
|
"raw": {
|
||||||
|
"language": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}PlayerData",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}PlayerData"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GameConfig",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get Gameconfig",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}GameConfig",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}GameConfig"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "PlayerBaseData",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "PlayerBaseData",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}PlayerBaseData?id=123",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}PlayerBaseData"
|
||||||
|
],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "id",
|
||||||
|
"value": "123"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "RankData",
|
||||||
|
"item": [
|
||||||
|
{
|
||||||
|
"name": "Get",
|
||||||
|
"request": {
|
||||||
|
"method": "GET",
|
||||||
|
"header": [],
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}RankData?rank_type=all",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}RankData"
|
||||||
|
],
|
||||||
|
"query": [
|
||||||
|
{
|
||||||
|
"key": "rank_type",
|
||||||
|
"value": "all"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Upload",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"method\": \"upload\",\n \"rank_type\": \"S\",\n \"steamid\": \"123\",\n \"userid\": \"12345\",\n \"username\": \"debug\",\n \"version\": \"S8\",\n \"wave\": 5,\n \"damage\": 5,\n \"card1\": \"debug\"\n}",
|
||||||
|
"options": {
|
||||||
|
"raw": {
|
||||||
|
"language": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "{{BaseURL}}RankData",
|
||||||
|
"host": [
|
||||||
|
"{{BaseURL}}RankData"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"event": [
|
||||||
|
{
|
||||||
|
"listen": "prerequest",
|
||||||
|
"script": {
|
||||||
|
"type": "text/javascript",
|
||||||
|
"exec": [
|
||||||
|
""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"listen": "test",
|
||||||
|
"script": {
|
||||||
|
"type": "text/javascript",
|
||||||
|
"exec": [
|
||||||
|
"pm.test(\"Status code is 200\", function () {",
|
||||||
|
" pm.response.to.have.status(200);",
|
||||||
|
"});",
|
||||||
|
"pm.test(\"Body response code is 0000\", function () {",
|
||||||
|
" var jsonData = pm.response.json();",
|
||||||
|
" pm.expect(jsonData.code).to.eql(\"0000\");",
|
||||||
|
"});"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variable": [
|
||||||
|
{
|
||||||
|
"key": "BaseURL",
|
||||||
|
"value": "https://192.168.1.103:5001/api/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1114
TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs
generated
Normal file
1114
TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace TOOHUCardAPI.Migrations
|
||||||
|
{
|
||||||
|
public partial class useridtorankentrydunnohowtograbitforauser : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<long>(
|
||||||
|
name: "AccountId",
|
||||||
|
table: "RankEntries",
|
||||||
|
type: "bigint",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "AccountId",
|
||||||
|
table: "RankEntries");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -947,6 +947,9 @@ namespace TOOHUCardAPI.Migrations
|
|||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
|
||||||
|
|
||||||
|
b.Property<long>("AccountId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
b.Property<long>("Damage")
|
b.Property<long>("Damage")
|
||||||
.HasColumnType("bigint");
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ namespace TOOHUCardAPI
|
|||||||
services.AddLogging(opt =>
|
services.AddLogging(opt =>
|
||||||
{
|
{
|
||||||
opt.ClearProviders();
|
opt.ClearProviders();
|
||||||
|
opt.AddConfiguration(Configuration.GetSection("Logging"));
|
||||||
opt.AddNLog();
|
opt.AddNLog();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
autoReload="true"
|
autoReload="true"
|
||||||
internalLogToConsole="true"
|
internalLogToConsole="true"
|
||||||
throwConfigExceptions="true"
|
throwConfigExceptions="true"
|
||||||
internalLogLevel="Trace" >
|
internalLogLevel="Warn" >
|
||||||
<variable name="MicrosoftLevel" value="${level:lowercase=true:truncate=4:when=level==LogLevel.Info or level==LogLevel.Warn}${when:when=level==LogLevel.Error:inner=fail}${when:when=level==LogLevel.Fatal:inner=crit}${when:when=level==LogLevel.Debug:inner=dbug}${when:when=level==LogLevel.Trace:inner=trce}" />
|
<variable name="MicrosoftLevel" value="${level:lowercase=true:truncate=4:when=level==LogLevel.Info or level==LogLevel.Warn}${when:when=level==LogLevel.Error:inner=fail}${when:when=level==LogLevel.Fatal:inner=crit}${when:when=level==LogLevel.Debug:inner=dbug}${when:when=level==LogLevel.Trace:inner=trce}" />
|
||||||
<variable name="MicrosoftLayout" value="${MicrosoftLevel}: ${logger}[${event-properties:EventId_Id:whenEmpty=0}]${newline} ${message}${onexception:inner=${newline}${exception:format=tostring}}" />
|
<variable name="MicrosoftLayout" value="${MicrosoftLevel}: ${logger}[${event-properties:EventId_Id:whenEmpty=0}]${newline} ${message}${onexception:inner=${newline}${exception:format=tostring}}" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user