diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java index 9ec996c3f..e5d9c608c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java @@ -14,11 +14,7 @@ import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.Player; import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.hall.HallServer; -import com.gempukku.lotro.league.LeagueData; -import com.gempukku.lotro.league.LeagueSerieData; -import com.gempukku.lotro.league.LeagueService; -import com.gempukku.lotro.league.NewConstructedLeagueData; -import com.gempukku.lotro.league.NewSealedLeagueData; +import com.gempukku.lotro.league.*; import com.gempukku.lotro.service.AdminService; import com.gempukku.lotro.tournament.TournamentService; import org.jboss.netty.channel.MessageEvent; @@ -82,6 +78,10 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur previewConstructedLeague(request, responseWriter); } else if (uri.equals("/addConstructedLeague") && request.getMethod() == HttpMethod.POST) { addConstructedLeague(request, responseWriter); + } else if (uri.equals("/previewSoloDraftLeague") && request.getMethod() == HttpMethod.POST) { + previewSoloDraftLeague(request, responseWriter); + } else if (uri.equals("/addSoloDraftLeague") && request.getMethod() == HttpMethod.POST) { + addSoloDraftLeague(request, responseWriter); } else if (uri.equals("/addItems") && request.getMethod() == HttpMethod.POST) { addItems(request, responseWriter); } else if (uri.equals("/addItemsToCollection") && request.getMethod() == HttpMethod.POST) { @@ -360,6 +360,88 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur responseWriter.writeXmlResponse(doc); } + private void addSoloDraftLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception { + validateLeagueAdmin(request); + + HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + + String code = String.valueOf(System.currentTimeMillis()); + + StringBuilder sb = new StringBuilder(); + sb.append(format+","+start+","+serieDuration+","+maxMatches+","+code+","+name); + + String parameters = sb.toString(); + LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); + List series = leagueData.getSeries(); + int leagueStart = series.get(0).getStart(); + int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); + + _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); + + _leagueService.clearCache(); + + responseWriter.writeHtmlResponse("OK"); + } + + private void previewSoloDraftLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception { + validateLeagueAdmin(request); + + HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + + String code = String.valueOf(System.currentTimeMillis()); + + StringBuilder sb = new StringBuilder(); + sb.append(format+","+start+","+serieDuration+","+maxMatches+","+code+","+name); + + String parameters = sb.toString(); + LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); + + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + + Document doc = documentBuilder.newDocument(); + + final List series = leagueData.getSeries(); + + int end = series.get(series.size() - 1).getEnd(); + + Element leagueElem = doc.createElement("league"); + + leagueElem.setAttribute("name", name); + leagueElem.setAttribute("cost", String.valueOf(cost)); + leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); + leagueElem.setAttribute("end", String.valueOf(end)); + + for (LeagueSerieData serie : series) { + Element serieElem = doc.createElement("serie"); + serieElem.setAttribute("type", serie.getName()); + serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); + serieElem.setAttribute("start", String.valueOf(serie.getStart())); + serieElem.setAttribute("end", String.valueOf(serie.getEnd())); + serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); + serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); + serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); + + leagueElem.appendChild(serieElem); + } + + doc.appendChild(leagueElem); + + responseWriter.writeXmlResponse(doc); + } + private void addSealedLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception { validateLeagueAdmin(request); diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-019/leagueResultsUi.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-019/leagueResultsUi.js index 1d4399b3a..c93d08b0b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-019/leagueResultsUi.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-019/leagueResultsUi.js @@ -53,15 +53,28 @@ var LeagueResultsUI = Class.extend({ var end = league.getAttribute("end"); var member = league.getAttribute("member"); var joinable = league.getAttribute("joinable"); + var draftable = league.getAttribute("draftable"); $("#leagueExtraInfo").append("
" + leagueName + "
"); var costStr = formatPrice(cost); $("#leagueExtraInfo").append("
Cost: " + costStr + "
"); - if (member == "true") - $("#leagueExtraInfo").append("
You are already a member of this league.
"); - else if (joinable == "true") { + if (member == "true") { + var memberDiv = $("
You are already a member of this league.
"); + if (draftable == "true") { + var draftBut = $("").button(); + var draftFunc = (function (leagueCode) { + return function() { + var participantId = getUrlParam("participantId"); + location.href = "/gemp-lotr/soloDraft.html?leagueType="+leagueCode+"&participantId="+participantId; + }; + })(leagueType); + draftBut.click(draftFunc); + memberDiv.append(draftBut); + } + $("#leagueExtraInfo").append(memberDiv); + } else if (joinable == "true") { var joinBut = $("").button(); var joinFunc = (function (leagueCode, costString) { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/leagueAdmin.html b/gemp-lotr/gemp-lotr-async/src/main/web/leagueAdmin.html index de58b21eb..d429ba9ec 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/leagueAdmin.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/leagueAdmin.html @@ -150,6 +150,13 @@ previewDialog.dialog("open"); }); + $("#previewSoloDraft").click( + function () { + submitFormToAddress("/gemp-lotr-server/admin/previewSoloDraftLeague", $("#addSoloDraftForm").eq(0), displayPreview, previewError); + previewDialog.html(""); + previewDialog.dialog("open"); + }); + $("#previewConstructed").click( function () { submitFormToAddress("/gemp-lotr-server/admin/previewConstructedLeague", $("#addConstructedForm").eq(0), displayPreview, previewError); @@ -188,6 +195,22 @@ +

Add solo-draft league

+ +
+ Name:
+ Cost (in silver):
+ Start (YYYYMMDD):
+ Format: +
+ Series duration in days:
+ Maximum matches in series:
+ + +
+

Add constructed league

diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java index 0d1b3d66d..0b5dbcf88 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java @@ -105,14 +105,14 @@ public class SoloDraftLeagueData implements LeagueData { if (status == 1) { if (currentTime > DateUtils.offsetDate(_serie.getEnd(), 1)) { - for (PlayerStanding leagueStanding : leagueStandings) { - CardCollection leaguePrize = _leaguePrizes.getPrizeForLeague(leagueStanding.getStanding(), leagueStandings.size(), leagueStanding.getGamesPlayed(), maxGamesTotal, _collectionType); - if (leaguePrize != null) - collectionsManager.addItemsToPlayerCollection(true, "End of league prizes", leagueStanding.getPlayerName(), _prizeCollectionType, leaguePrize.getAll().values()); - final CardCollection leagueTrophies = _leaguePrizes.getTrophiesForLeague(leagueStanding.getStanding(), leagueStandings.size(), leagueStanding.getGamesPlayed(), maxGamesTotal, _collectionType); - if (leagueTrophies != null) - collectionsManager.addItemsToPlayerCollection(true, "End of league trophies", leagueStanding.getPlayerName(), CollectionType.TROPHY, leagueTrophies.getAll().values()); - } +// for (PlayerStanding leagueStanding : leagueStandings) { +// CardCollection leaguePrize = _leaguePrizes.getPrizeForLeague(leagueStanding.getStanding(), leagueStandings.size(), leagueStanding.getGamesPlayed(), maxGamesTotal, _collectionType); +// if (leaguePrize != null) +// collectionsManager.addItemsToPlayerCollection(true, "End of league prizes", leagueStanding.getPlayerName(), _prizeCollectionType, leaguePrize.getAll().values()); +// final CardCollection leagueTrophies = _leaguePrizes.getTrophiesForLeague(leagueStanding.getStanding(), leagueStandings.size(), leagueStanding.getGamesPlayed(), maxGamesTotal, _collectionType); +// if (leagueTrophies != null) +// collectionsManager.addItemsToPlayerCollection(true, "End of league trophies", leagueStanding.getPlayerName(), CollectionType.TROPHY, leagueTrophies.getAll().values()); +// } status++; } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json index d90f0c1e1..e7d28f043 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json +++ b/gemp-lotr/gemp-lotr-server/src/main/resources/lotrDrafts.json @@ -1,6 +1,6 @@ [ { - "type": "Hobbit Draft", + "type": "hobbit_draft", "location": "/draft/hobbit.json" } ] \ No newline at end of file