Get the sets

This commit is contained in:
2022-03-20 13:52:05 +01:00
parent 87c9883245
commit 92b6d3e568
11 changed files with 232 additions and 17 deletions

View File

@@ -80,11 +80,14 @@ namespace LaDOSE.Business.Provider.SmashProvider
{
Name = e.name,
SmashId = e.id,
Finish = e.state == "COMPLETED",
Game = games.FirstOrDefault(g => g.SmashId == e.videogame.id)
}).ToList();
return new Event
{
SmashSlug = slug,
Name = querySmash.Result.Tournament.Name,
SmashId = querySmash.Result.Tournament.id,
Date = querySmash.Result.Tournament.startAt,
@@ -97,7 +100,7 @@ namespace LaDOSE.Business.Provider.SmashProvider
public Task<List<Tournament>> GetResults(ref List<Tournament> tournaments)
{
foreach (var tournament in tournaments)
foreach (var tournament in tournaments.Where(t=>t.Finish).ToList())
{
var query = new GraphQLRequest
{
@@ -149,8 +152,8 @@ namespace LaDOSE.Business.Provider.SmashProvider
{
query.Variables = new
{
page = querySmash.Result.Event.standings.pageInfo.page,
eventsId = tournament.SmashId,
page = querySmash.Result.Event.standings.pageInfo.page+1,
@event = tournament.SmashId,
};
querySmash = QuerySmash<EventResponse>(query);
standings.AddRange(querySmash.Result.Event.standings.nodes);
@@ -183,6 +186,115 @@ namespace LaDOSE.Business.Provider.SmashProvider
return Task.FromResult(tournaments);
}
public Task<List<Tournament>> GetSets(ref List<Tournament> tournaments)
{
foreach (var tournament in tournaments.Where(t => t.Finish).ToList())
{
var query = new GraphQLRequest
{
Query = @"query SetsQuery($event: ID,$page:Int) {
event(id: $event){
sets(page:$page,perPage:20){
pageInfo {
total
totalPages
page
perPage
sortBy
filter
},
nodes {
id,
lPlacement,
wPlacement,
round,
slots {
id,
slotIndex,
standing{
id,
player{
id,
user{
id,
}
}
stats{
score {
label
value
displayValue
}
}
}
entrant {
id,
name,
participants{
id,
gamerTag
user {
id
},
}
},
},
phaseGroup {
id
},
identifier
},
}
}
}",
OperationName = "SetsQuery",
Variables = new
{
page = 1,
@event = tournament.SmashId,
}
};
var querySmash = QuerySmash<SetsResponse>(query);
if (querySmash.Result.Event.sets.nodes != null)
{
var sets = querySmash.Result.Event.sets.nodes;
if (querySmash.Result.Event.sets.pageInfo.totalPages > 1)
{
while (querySmash.Result.Event.sets.pageInfo.page <
querySmash.Result.Event.sets.pageInfo.totalPages)
{
query.Variables = new
{
page = querySmash.Result.Event.sets.pageInfo.page+1,
@event = tournament.SmashId,
};
querySmash = QuerySmash<SetsResponse>(query);
sets.AddRange(querySmash.Result.Event.sets.nodes);
}
}
var tset = sets.Select(x => new Set()
{
Tournament = tournament,
TournamentId = tournament.Id,
Player1Id = PlayerService.GetBySmash(x.slots[0].entrant.participants[0]),
Player2Id = PlayerService.GetBySmash(x.slots[1].entrant.participants[0]),
Player1Score = x.slots[0].standing.stats.score.value,
Player2Score = x.slots[1].standing.stats.score.value,
Round = x.round ?? 0,
}).ToList();
tournament.Sets = tset;
}
}
return Task.FromResult(tournaments);
}
public async Task<Event> ParseEvent(string slug)
{
Event e = await this.GetEvent(slug);

View File

@@ -31,16 +31,31 @@ namespace LaDOSE.Business.Provider.SmashProvider
public int id { get; set; }
public string Name { get; set; }
}
public class ScoreType
{
public string label { get; set; }
public int value { get; set; }
public string displayValue { get; set; }
}
public class StatType
{
public ScoreType score { get; set; }
}
public class StandingType
{
public int id { get; set; }
public string id { get; set; }
public int placement { get; set; }
public PlayerType player { get; set; }
public ParticipantType player { get; set; }
public StatType stats { get; set; }
}
public class PlayerType
public class ParticipantType
{
public int id { get; set; }
public string gamerTag { get; set; }
@@ -61,8 +76,37 @@ namespace LaDOSE.Business.Provider.SmashProvider
public VideoGameType videogame { get; set; }
public Node<StandingType> standings { get; set; }
public Node<SetType> sets { get; set; }
}
public class EntrantType
{
public int id { get; set; }
public string name { get; set; }
public List<ParticipantType> participants { get; set; }
}
public class SlotType
{
public string id { get; set; }
public int slotIndex { get; set; }
public StandingType standing { get; set; }
public EntrantType entrant { get; set; }
}
public class SetType
{
public string id { get; set; }
public int? lPlacement { get; set; }
public int? wPlacement { get; set; }
public int? round { get; set; }
public List<SlotType> slots { get; set; }
public string identifier { get; set; }
}
public class Node<T>
{
public PageInfoType pageInfo { get; set; }
@@ -84,7 +128,11 @@ namespace LaDOSE.Business.Provider.SmashProvider
public EventType Event { get; set; }
}
public class SetsResponse
{
public EventType Event { get; set; }
}
}