League admins can add solo-draft leagues
This commit is contained in:
@@ -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<LeagueSerieData> 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<LeagueSerieData> 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);
|
||||
|
||||
|
||||
@@ -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("<div class='leagueName'>" + leagueName + "</div>");
|
||||
|
||||
var costStr = formatPrice(cost);
|
||||
$("#leagueExtraInfo").append("<div class='leagueCost'><b>Cost:</b> " + costStr + "</div>");
|
||||
|
||||
if (member == "true")
|
||||
$("#leagueExtraInfo").append("<div class='leagueMembership'>You are already a member of this league.</div>");
|
||||
else if (joinable == "true") {
|
||||
if (member == "true") {
|
||||
var memberDiv = $("<div class='leagueMembership'>You are already a member of this league. </div>");
|
||||
if (draftable == "true") {
|
||||
var draftBut = $("<button>Go to draft</button>").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>Join league</button>").button();
|
||||
|
||||
var joinFunc = (function (leagueCode, costString) {
|
||||
|
||||
@@ -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 @@
|
||||
<input type="submit" value="Add sealed league">
|
||||
</form>
|
||||
|
||||
<h2>Add solo-draft league</h2>
|
||||
|
||||
<form id="addSoloDraftForm" method="POST" action="/gemp-lotr-server/admin/addSoloDraftLeague">
|
||||
Name: <input type="text" name="name"><br/>
|
||||
Cost (in silver): <input type="text" name="cost"><br/>
|
||||
Start (YYYYMMDD): <input type="text" name="start"><br/>
|
||||
Format:
|
||||
<select name="format">
|
||||
<option value="hobbit_draft">Hobbit Draft</option>
|
||||
</select><br/>
|
||||
Series duration in days: <input type="text" name="serieDuration"><br/>
|
||||
Maximum matches in series: <input type="text" name="maxMatches"><br/>
|
||||
<input id="previewSoloDraft" type="button" value="Preview sealed league">
|
||||
<input type="submit" value="Add sealed league">
|
||||
</form>
|
||||
|
||||
<h2>Add constructed league</h2>
|
||||
|
||||
<form id="addConstructedForm" method="POST" action="/gemp-lotr-server/admin/addConstructedLeague">
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[
|
||||
{
|
||||
"type": "Hobbit Draft",
|
||||
"type": "hobbit_draft",
|
||||
"location": "/draft/hobbit.json"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user