diff --git a/LaDOSE.Src/LaDOSE.Service/Interface/IChallongeProvider.cs b/LaDOSE.Src/LaDOSE.Service/Interface/IChallongeProvider.cs index 7ec461e..a864fb0 100644 --- a/LaDOSE.Src/LaDOSE.Service/Interface/IChallongeProvider.cs +++ b/LaDOSE.Src/LaDOSE.Service/Interface/IChallongeProvider.cs @@ -10,11 +10,12 @@ namespace LaDOSE.Business.Interface { Task GetLastTournament(); string GetLastTournamentMessage(); - Task CreateTournament(string name, string url); + Task CreateTournament(string name, string url, DateTime? startAt); Task AddPlayer(int tournamentId, string userName); Task> GetTournaments(DateTime? start, DateTime? end); Task> GetParticipents(int idTournament); Task GetTournament(int idTournament); + Task GetTournament(string urlTournament); } } \ No newline at end of file diff --git a/LaDOSE.Src/LaDOSE.Service/Provider/ChallongeProvider.cs b/LaDOSE.Src/LaDOSE.Service/Provider/ChallongeProvider.cs index 0648fe6..dd570cd 100644 --- a/LaDOSE.Src/LaDOSE.Service/Provider/ChallongeProvider.cs +++ b/LaDOSE.Src/LaDOSE.Service/Provider/ChallongeProvider.cs @@ -30,9 +30,9 @@ namespace LaDOSE.Business.Provider DernierTournois = "Aucun tournois."; } - public async Task CreateTournament(string name, string url) + public async Task CreateTournament(string name, string url,DateTime? startAt = null) { - var result = await new CreateTournamentQuery(name, TournamentType.Double_Elimination, url).call(ApiCaller); + var result = await new CreateTournamentQuery(name, startAt , TournamentType.Double_Elimination, url).call(ApiCaller); return result; @@ -105,7 +105,21 @@ namespace LaDOSE.Business.Provider }; } + public async Task GetTournament(string urlTournament) + { + var tournamentResult = await new TournamentQuery(urlTournament).call(ApiCaller); + + return new Tournament() + { + Id = tournamentResult.id, + Name = tournamentResult.name, + Url = tournamentResult.url, + Participents = new List() + + }; + + } public async Task GetLastTournament() { string dernierTournois = null; diff --git a/LaDOSE.Src/LaDOSE.Service/Service/WordPressService.cs b/LaDOSE.Src/LaDOSE.Service/Service/WordPressService.cs index b68f424..ceb6d57 100644 --- a/LaDOSE.Src/LaDOSE.Service/Service/WordPressService.cs +++ b/LaDOSE.Src/LaDOSE.Service/Service/WordPressService.cs @@ -23,6 +23,7 @@ namespace LaDOSE.Business.Service private LaDOSEDbContext _context; private IChallongeProvider _challongeProvider; + private const int MAX_CREATE_TRY = 5; public WordPressService(LaDOSEDbContext context, IChallongeProvider challongeProvider) { this._context = context; @@ -109,8 +110,7 @@ namespace LaDOSE.Business.Service var remove = currentEvent.Date?.ToString("Mdyy"); var url = $"{remove}{selectedGame.Id}"; var selectedEvent = FormatCurrentEventName(currentEvent.Name); - var name = $"[{eventDate}] LaDOSE.net - {selectedEvent} - {selectedGame.Name}"; - var tournament = _challongeProvider.CreateTournament(name, url).Result; + var tournament = AddTournament(eventDate, selectedEvent, selectedGame, url, currentEvent); foreach (var booking in currentEvent.WPBookings) @@ -159,6 +159,8 @@ namespace LaDOSE.Business.Service return "error while creating challonge"; } + + public async Task GetLastChallonge() { var lastTournament = await _challongeProvider.GetLastTournament(); @@ -166,7 +168,43 @@ namespace LaDOSE.Business.Service } + private TournamentResult AddTournament(string eventDate, string selectedEvent, Game selectedGame, string url, WPEvent currentEvent) + { + int createTry = 0; + var name = $"[{eventDate}] LaDOSE.net - {selectedEvent} - {selectedGame.Name}"; + TournamentResult tournament = null; + do + { + try + { + if (createTry > 0) + { + url += createTry.ToString(); + } + tournament = _challongeProvider.CreateTournament(name, url, currentEvent.Date).Result; + } + catch (Exception ex) + { + Console.WriteLine("Error Creating Challonge : " + ex.Message); + try + { + //Deja crée + var result = _challongeProvider.GetTournament(url).Result; + if (result.Name == name) + throw; + } + catch (Exception getex) + { + Console.WriteLine("Error Getting Challonge: "+ url +" : " + getex.Message); + } + createTry++; + } + } while (tournament == null || createTry > MAX_CREATE_TRY); + + + return tournament; + } private string FormatCurrentEventName(string currentEventName) { diff --git a/LaDOSE.Src/Libraries/ChallongeCSharpDriver.dll b/LaDOSE.Src/Libraries/ChallongeCSharpDriver.dll index 58e175f..53ddce6 100644 Binary files a/LaDOSE.Src/Libraries/ChallongeCSharpDriver.dll and b/LaDOSE.Src/Libraries/ChallongeCSharpDriver.dll differ