Commit df02733b by Antti Tonkyra

tournaments tweaks

1 parent 9f958648
......@@ -20,6 +20,7 @@ import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.PollPermission;
import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.enums.apps.TournamentPermission;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.MenuNavigationFacade;
import fi.codecrew.moya.facade.MenuitemFacade;
......@@ -118,6 +119,10 @@ public class MenuBean implements MenuBeanLocal {
userprofile.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF);
userprofile.addPage(menuitemfacade.findOrCreate("/user/changePassword"), UserPermission.VIEW_SELF);
userprofile.addPage(menuitemfacade.findOrCreate("/auth/logout"), UserPermission.LOGOUT);
MenuNavigation tournaments = usermenu.addPage(null, null);
tournaments.setKey("tournaments.menutitle");
tournaments.addPage(menuitemfacade.findOrCreate("/tournaments/index"), TournamentPermission.VIEW);
/*
* MenuNavigation createuser = usermenu.addPage(null, null);
......@@ -234,6 +239,10 @@ public class MenuBean implements MenuBeanLocal {
// shopnavi.addPage(menuitemfacade.findOrCreate("/index3"),
// UserPermission.ANYUSER);
navifacade.create(shopmenu);
MenuNavigation tournamentsadm = adminmenu.addPage(null, null);
tournamentsadm.setKey("tournaments.menutitle");
tournamentsadm.addPage(menuitemfacade.findOrCreate("/tournaments/admin/index"), TournamentPermission.MANAGE_ALL);
/*
* MenuNavigation profileTopmenu = new MenuNavigation(ev,
......
......@@ -84,20 +84,24 @@ public class TournamentBean implements TournamentBeanLocal {
@Override
@RolesAllowed(TournamentPermission.S_MANAGE_ALL)
public void createTournament(Tournament tournament) {
tournamentFacade.create(tournament);
public void createTournament(Tournament tournament) throws Exception {
// Assert correct event
if(eventBean.getCurrentEvent().equals(tournament.getLanEvent()))
tournamentFacade.create(tournament);
else
throw new Exception("tournament.invalid_event");
}
@Override
@RolesAllowed(TournamentPermission.S_VIEW)
public List<Tournament> getTournamentsInStatus(TournamentStatus status, boolean useTimeConstraints) {
return tournamentFacade.getTournamentsInStatusWithParticipationTimeIn(status);
return tournamentFacade.getTournamentsInStatusWithParticipationTimeIn(status, eventBean.getCurrentEvent());
}
@Override
@RolesAllowed(TournamentPermission.S_VIEW)
public List<Tournament> getActiveTournaments() {
return tournamentFacade.getTournamentsNotInStatus(TournamentStatus.COMPLETED);
return tournamentFacade.getTournamentsNotInStatus(TournamentStatus.COMPLETED, eventBean.getCurrentEvent());
}
@Override
......@@ -126,6 +130,7 @@ public class TournamentBean implements TournamentBeanLocal {
Date currentTime = new Date();
// Assert registration time is correct
if(t.getRegistrationOpensAt() != null && t.getRegistrationClosesAt() != null && currentTime.after(t.getRegistrationOpensAt()) && currentTime.before(t.getRegistrationClosesAt())) {
// Assert participant size is smaller than max
if(t.getParticipants().size() < t.getMaxParticipants()) {
......
......@@ -12,6 +12,7 @@ import javax.persistence.criteria.Root;
import fi.codecrew.moya.enums.TournamentStatus;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Tournament;
import fi.codecrew.moya.model.TournamentParticipant;
import fi.codecrew.moya.model.Tournament_;
......@@ -25,31 +26,42 @@ public class TournamentFacade extends IntegerPkGenericFacade<Tournament> {
super(Tournament.class);
}
public List<Tournament> getTournamentsNotInStatus(TournamentStatus status) {
public List<Tournament> getTournamentsNotInStatus(TournamentStatus status, LanEvent event) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Tournament> cq = cb.createQuery(Tournament.class);
Root<Tournament> root = cq.from(Tournament.class);
cq.where(cb.notEqual(root.get(Tournament_.tournamentStatus), status));
cq.where(
cb.and(
cb.notEqual(root.get(Tournament_.tournamentStatus), status),
cb.equal(root.get(Tournament_.lanEvent), event)
)
);
return getEm().createQuery(cq).getResultList();
}
public List<Tournament> getTournamentsInStatus(TournamentStatus status) {
public List<Tournament> getTournamentsInStatus(TournamentStatus status, LanEvent event) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Tournament> cq = cb.createQuery(Tournament.class);
Root<Tournament> root = cq.from(Tournament.class);
cq.where(cb.equal(root.get(Tournament_.tournamentStatus), status));
cq.where(
cb.and(
cb.equal(root.get(Tournament_.tournamentStatus), status),
cb.equal(root.get(Tournament_.lanEvent), event)
)
);
return getEm().createQuery(cq).getResultList();
}
public List<Tournament> getTournamentsInStatusWithParticipationTimeIn(TournamentStatus status) {
public List<Tournament> getTournamentsInStatusWithParticipationTimeIn(TournamentStatus status, LanEvent event) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Tournament> cq = cb.createQuery(Tournament.class);
Root<Tournament> root = cq.from(Tournament.class);
cq.where(
cb.and(
cb.equal(root.get(Tournament_.tournamentStatus), status),
cb.equal(root.get(Tournament_.lanEvent), event),
cb.between(cb.currentDate(), root.get(Tournament_.registrationOpensAt), root.get(Tournament_.registrationClosesAt))
)
);
......
......@@ -20,7 +20,7 @@ public interface TournamentBeanLocal {
TournamentRule createRule(TournamentRule tr);
TournamentGame findGame(Integer id);
TournamentRule findRule(Integer id);
void createTournament(Tournament tournament);
void createTournament(Tournament tournament) throws Exception;
List<Tournament> getActiveTournaments();
Tournament getTournamentById(Integer tournamentId);
void editTournament(Tournament tournament);
......
......@@ -106,13 +106,13 @@
<h:outputText value="#{i18n['tournaments.registration_opens']}" />
<h:outputText value="#{i18n['tournaments.registration_closes']}" />
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentCreateView.tournament.registrationOpensAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentCreateView.tournament.registrationClosesAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentCreateView.tournament.registrationOpensAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentCreateView.tournament.registrationClosesAt}"/>
</h:panelGrid>
<h2>#{i18n['tournaments.admin.begin_time_constraints']}</h2>
<h:panelGrid>
<h:outputText value="Start time" />
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentCreateView.tournament.beginsAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentCreateView.tournament.beginsAt}"/>
</h:panelGrid>
<br />
</p:panel>
......
......@@ -8,7 +8,7 @@
</f:metadata>
<ui:define name="content">
<h1>#{i18n['tournaments.admin.create_tournament']}</h1>
<h1>#{i18n['tournaments.admin.edit_tournament']}</h1>
<h:form>
<h2>#{i18n['tournaments.tournament_details']}</h2>
<h:panelGrid columns="2">
......@@ -29,13 +29,13 @@
<h:outputText value="#{i18n['tournaments.registration_opens']}" />
<h:outputText value="#{i18n['tournaments.registration_closes']}" />
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentEditView.tournament.registrationOpensAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentEditView.tournament.registrationClosesAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentEditView.tournament.registrationOpensAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentEditView.tournament.registrationClosesAt}"/>
</h:panelGrid>
<h2>#{i18n['tournaments.admin.begin_time_constraints']}</h2>
<h:panelGrid columns="2">
<h:outputText value="#{i18n['tournaments.start_time']}" />
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy hh:mm" value="#{tournamentEditView.tournament.beginsAt}"/>
<p:calendar stepHour="1" stepMinute="10" pattern="dd.MM.yyyy HH:mm" value="#{tournamentEditView.tournament.beginsAt}"/>
</h:panelGrid>
<p:commandButton value="#{i18n['tournaments.admin.cancel_edits']}" action="#{tournamentEditView.cancel}"/>
......
......@@ -223,7 +223,7 @@ resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent
submenu.NotImplementedYet = Not implemented
submenu.NotImplementedYet = Not implemented
subnavi.cards = \u0009\u0009
......
......@@ -929,6 +929,8 @@ submenu.shop.createBill = Purchase
submenu.shop.listReaders = List readers
submenu.shop.shopToUser = Shop to user
submenu.shop.showReaderEvents = Reader events
submenu.tournaments.admin.index = View and manage
submenu.tournaments.index = View and participate
submenu.user.accountEvents = Account events
submenu.user.changePassword = Change password
submenu.user.create = Create new user
......@@ -1071,6 +1073,7 @@ tournaments.backup_players = Max backup players
tournaments.cancel_participation = Cancel participation
tournaments.description = You can view & participate into tournaments from this page.
tournaments.max_participants = Max participants
tournaments.menutitle = Tournaments
tournaments.open_tournaments = Open tournaments
tournaments.participate_actual_team_members = Actual team members
tournaments.participate_backup_player_count = Backup Player Count
......
......@@ -910,6 +910,8 @@ submenu.shop.createBill = Osta tuotteita
submenu.shop.listReaders = N\u00E4yt\u00E4 lukijat
submenu.shop.shopToUser = Osta k\u00E4ytt\u00E4j\u00E4lle
submenu.shop.showReaderEvents = Lukijan tapahtumat
submenu.tournaments.admin.index = Katsele ja hallinnoi
submenu.tournaments.index = Katsele ja osallistu
submenu.user.accountEvents = Tilitapahtumat
submenu.user.changePassword = Vaihda salasana
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
......@@ -1055,6 +1057,7 @@ tournaments.backup_players = Maksimim\u00E4\u00E4r\u00E4 va
tournaments.cancel_participation = Peruuta osallistuminen
tournaments.description = Voit osallistua sek\u00E4 katselmoida turnauksia t\u00E4ll\u00E4 sivulla.
tournaments.max_participants = Maksimiosallistujam\u00E4\u00E4r\u00E4
tournaments.menutitle = Turnaukset
tournaments.open_tournaments = Avoimet turnaukset
tournaments.participate_actual_team_members = Varsinaiset joukkueen j\u00E4senet
tournaments.participate_backup_player_count = Varapelaajat
......
......@@ -11,6 +11,7 @@ import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.Tournament;
import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.TournamentRule;
import fi.codecrew.moya.utilities.jsf.MessageHelper;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import javax.ejb.EJB;
......@@ -64,10 +65,14 @@ public class TournamentCreateView extends GenericCDIView {
tournament.setTournamentGame(game);
tournament.setRules(rules);
tournamentBean.createTournament(tournament);
this.endConversation();
return "success";
try {
tournamentBean.createTournament(tournament);
this.endConversation();
return "success";
} catch(Exception e) {
MessageHelper.err(e.getMessage());
return "";
}
}
public List<TournamentGame> getTournamentGames() {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!