package is.idega.idegaweb.golf.tournament.presentation;
import is.idega.idegaweb.golf.access.AccessControl;
import is.idega.idegaweb.golf.entity.Field;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.MemberBMPBean;
import is.idega.idegaweb.golf.entity.MemberHome;
import is.idega.idegaweb.golf.entity.MemberInfo;
import is.idega.idegaweb.golf.entity.MemberInfoHome;
import is.idega.idegaweb.golf.entity.Scorecard;
import is.idega.idegaweb.golf.entity.StartingtimeView;
import is.idega.idegaweb.golf.entity.Tee;
import is.idega.idegaweb.golf.entity.TeeHome;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.entity.TournamentGroup;
import is.idega.idegaweb.golf.entity.TournamentGroupHome;
import is.idega.idegaweb.golf.entity.TournamentHome;
import is.idega.idegaweb.golf.entity.TournamentRound;
import is.idega.idegaweb.golf.entity.TournamentRoundHome;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.entity.UnionMemberInfo;
import is.idega.idegaweb.golf.handicap.business.Handicap;
import is.idega.idegaweb.golf.presentation.GolfBlock;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWConstants;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.Table;
import com.idega.presentation.text.Break;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Paragraph;
import com.idega.presentation.text.Strong;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.Label;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.util.IWTimestamp;
import com.idega.util.text.TextSoap;
/**
* @author gimmi
*/
public class RegistrationForMembers extends GolfBlock {
public static final String PRM_TOURNAMENT_ID = "tournament_id";
public static final String PRM_ACTION = "action";
public static final String VAL_ACTION_OPEN = "open";
private final static String PRM_TEETIME_GROUP_NUMBER = "teeGrNum";
private final static String SUFFIX_TENTH_TEE = "_";
CloseButton closeButton = new CloseButton();
public void main(IWContext modinfo) throws Exception {
IWResourceBundle iwrb = getResourceBundle();
String tournament_id = modinfo.getParameter(PRM_TOURNAMENT_ID);
if (tournament_id != null) {
setTournament(modinfo, ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt(tournament_id)));
}
Tournament tournament = getTournament(modinfo);
Member member = (is.idega.idegaweb.golf.entity.Member) AccessControl.getMember(modinfo);
if (member != null) {
if (tournament != null) {
if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament,member) ) {
String action = modinfo.getParameter(PRM_ACTION);
if (action == null) {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.endsWith(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.error_occurred","Error occurred"));
add(p);
}else{
add(getLocalizedMessage("tournament.error_occurred","Error occurred"));
add(Text.getBreak());
add(getButton(new CloseButton()));
}
}else if (action.equalsIgnoreCase("open")) {
register(modinfo, iwrb);
}else if (action.equals("directRegistrationMembersChosen")) {
finalizeDirectRegistration(modinfo,iwrb);
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
directRegistrationConfirmMessageWML(modinfo);
} else {
getDirectRegistrationTable(modinfo,iwrb);
}
}
}
else {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.endsWith(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getMessageText(member.getName() +" "+ localize("tournament.is_registered_in_the_tournament_named","is registered in the tournament named") +" \""+tournament.getName()+"\" "));
add(p);
}else{
add("<center>");
add(getMessageText(member.getName() +" "+ localize("tournament.is_registered_in_the_tournament_named","is registered in the tournament named") +" \""+tournament.getName()+"\" "));
add("</center>");
}
}
}else {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.endsWith(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.no_tournament_selected","No tournament selected"));
add(p);
}else{
add(getLocalizedMessage("tournament.no_tournament_selected","No tournament selected"));
add(Text.getBreak());
add(closeButton);
}
}
}
else {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.you_have_to_register_to_the_system_using_login_and_password","You have to register to the system using login and password"));
add(p);
}else{
add("<center>");
add(Text.getBreak());
add(getLocalizedMessage("tournament.you_have_to_register_to_the_system_using_login_and_password","You have to register to the system using login and password"));
add(Text.getBreak());
add(Text.getBreak());
add(closeButton);
add("</center>");
}
}
}
public Tournament getTournament(IWContext modinfo) {
return (Tournament) modinfo.getSessionAttribute("tournament_registrationForMembers");
}
public void setTournament(IWContext modinfo, Tournament tournament) {
modinfo.setSessionAttribute("tournament_registrationForMembers",tournament);
}
public void register(IWContext modinfo, IWResourceBundle iwrb) throws RemoteException, SQLException {
Tournament tournament = getTournament(modinfo);
Member member = (is.idega.idegaweb.golf.entity.Member) AccessControl.getMember(modinfo);
boolean isMemberValid = true;
if (!tournament.getIfOpenTournament()) {
try {
isMemberValid = false;
Union mUnion = member.getMainUnion();
Union tUnion = tournament.getUnion();
if (mUnion != null && mUnion.equals(tUnion)) {
isMemberValid = true;
}
} catch (Exception e) {
}
}
if (!isMemberValid) {
add(Text.getBreak());
add("<center>");
add(getLocalizedMessage("tournament.you_cannot_register_not_in_the_club","You can not register to this tournament, you are not a member of the club."));
add(Text.getBreak());
add(Text.getBreak());
add(closeButton);
add("</center>");
} else if (getTournament(modinfo).isDirectRegistration()) {
String subAction = modinfo.getParameter("sub_action");
if (subAction == null) {
try {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
if (modinfo.getParameter(PRM_TEETIME_GROUP_NUMBER) != null) {
getAvailableGroups(modinfo);
}else {
getDirectRegistrationTableWML(modinfo,iwrb);
}
} else {
getDirectRegistrationTable(modinfo,iwrb);
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}else if (subAction.equals("saveDirectRegistration")) {
if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament,member) ) {
saveDirectRegistration(modinfo,iwrb);
}
}
}else {
if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament,member) ) {
String subAction = modinfo.getParameter("subAction");
if (subAction == null) {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
notOnlineRegistrationWML(modinfo);
} else {
notOnlineRegistration(modinfo);
}
}else if (subAction.equals("yes")) {
String tournament_group_id = modinfo.getParameter("tournament_group");
if (tournament_group_id == null) {
getAvailableGroups(modinfo);
}else {
performRegistrationNotOnline(modinfo,tournament_group_id);
}
}
}
else {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.you_are_already_registered_to_this_tournament","You are already registered to this tournament"));
add(p);
}else{
add(Text.getBreak());
add("<center>");
add(getLocalizedMessage("tournament.you_are_already_registered_to_this_tournament","You are already registered to this tournament"));
add(Text.getBreak());
add(Text.getBreak());
add(closeButton);
add("</center>");
}
}
}
}
public void notOnlineRegistration(IWContext modinfo) {
Member member = (is.idega.idegaweb.golf.entity.Member) AccessControl.getMember(modinfo);
Table table = new Table();
table.setBorder(0);
table.setAlignment("center");
Form yesForm = new Form();
yesForm.maintainParameter(PRM_ACTION);
yesForm.add(new HiddenInput("subAction","yes"));
SubmitButton yes = new SubmitButton(localize("tournament.yes","Yes"));
yesForm.add(yes);
Form noForm = new Form();
noForm.maintainParameter(PRM_ACTION);
noForm.add(new HiddenInput("subAction","no"));
CloseButton no = new CloseButton(localize("tournament.no","no"));
noForm.add(no);
table.mergeCells(1,1,2,1);
table.setAlignment(1,1,"center");
table.setAlignment(1,3,"center");
table.setAlignment(2,3,"center");
table.add(getText(localize("tournament.register","Register")+" \""+member.getName()+"\" "+localize("tournament.to_the_tournament_named","to the tournament named")+" \""+getTournament(modinfo).getName() +"\"?"));
table.add(yesForm,1,3);
table.add(noForm,2,3);
add(Text.getBreak());
add(table);
}
public void notOnlineRegistrationWML(IWContext modinfo) throws SQLException {
Member member = AccessControl.getMember(modinfo);
Tournament tournament = getTournament(modinfo);
Text golfer = new Text(localize("tournament.golfer", "Golfer")+ ": " + member.getName());
Text tournamentName = new Text(localize("tournament.Tournament", "Tournament")+ ": " + tournament.getName());
Text tournamentClub = new Text(localize("tournament.Club", "Club")+ ": " + tournament.getUnion().getAbbrevation());
Text tournamentField = new Text(localize("tournament.Field", "Field")+ ": " + tournament.getField().getName());
Text trounamentStartDate = new Text(localize("tournament.Startdate", "Start date")+ ": " + new IWTimestamp(tournament.getStartTime()).getLocaleDate(modinfo.getCurrentLocale(),IWTimestamp.SHORT));
Text confirmation = new Text(localize("tournament.registered_in","You have been registered in tournament"));
Paragraph p = new Paragraph();
p.add(golfer);
p.add(new Break());
p.add(tournamentName);
p.add(new Break());
p.add(tournamentClub);
p.add(new Break());
p.add(tournamentField);
p.add(new Break());
p.add(trounamentStartDate);
add(p);
Paragraph p1 = new Paragraph();
Strong s1 = new Strong();
s1.add(new Text(localize("tournament.register","Register")+" \""+member.getName()+"\" "+localize("tournament.to_the_tournament_named","to the tournament named")+" \""+getTournament(modinfo).getName() +"\"?"));
p1.add(s1);
add(p1);
Link yes = new Link(localize("tournament.Forward","Forward >"));
yes.maintainParameter(PRM_ACTION,modinfo);
yes.addParameter("subAction","yes");
Paragraph p2 = new Paragraph();
Strong s = new Strong();
s.add(yes);
p2.add(s);
add(p2);
}
public void getAvailableGroups(IWContext modinfo) throws SQLException, RemoteException{
Member member = (is.idega.idegaweb.golf.entity.Member) AccessControl.getMember(modinfo);
Tournament tournament = getTournament(modinfo);
TournamentGroup[] tGroups = tournament.getTournamentGroups();
List groups = getTournamentBusiness(modinfo).getTournamentGroups(member,tournament);
if (tGroups.length != 0) {
if (groups.size() != 0) {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Text golfer = new Text(localize("tournament.golfer", "Golfer")+ ": " + AccessControl.getMember(modinfo).getName());
Text tournamentName = new Text(localize("tournament.Tournament", "Tournament")+ ": " + tournament.getName());
Text tournamentClub = new Text(localize("tournament.Club", "Club")+ ": " + tournament.getUnion().getAbbrevation());
Text tournamentField = new Text(localize("tournament.Field", "Field")+ ": " + tournament.getField().getName());
Text trounamentStartDate = new Text(localize("tournament.Startdate", "Start date")+ ": " + new IWTimestamp(tournament.getStartTime()).getLocaleDate(modinfo.getCurrentLocale(),IWTimestamp.SHORT));
Paragraph p = new Paragraph();
p.add(golfer);
p.add(new Break());
p.add(tournamentName);
p.add(new Break());
p.add(tournamentClub);
p.add(new Break());
p.add(tournamentField);
p.add(new Break());
p.add(trounamentStartDate);
Form form = new Form();
form.maintainParameter("subAction");
String gr = modinfo.getParameter(PRM_TEETIME_GROUP_NUMBER);
if(gr!=null){
form.maintainParameter(PRM_TEETIME_GROUP_NUMBER);
form.addParameter("action","directRegistrationMembersChosen");
String tournament_round = modinfo.getParameter("tournament_round");
form.addParameter("member_id", AccessControl.getMember(modinfo).getPrimaryKey().toString());
// form.addParameter("tournament_group",);
int index = gr.indexOf(SUFFIX_TENTH_TEE);
if(index!=-1){
form.addParameter("starting_time",gr.substring(0,index-1));
form.addParameter("starting_tee",10);
TournamentRound tRound = tournament.getTournamentRounds()[0];
Text tournamentTeetime = new Text(localize("tournament.Teetime", "Teetime")+ ": " + getRoundTimeFromGrupNum(Integer.parseInt(gr.substring(0,index-1)), tournament, tRound));
Text tournamentTee = new Text(localize("tournament.Tee", "Tee")+ ": " +"10");
p.add(new Break());
p.add(tournamentTeetime);
p.add(new Break());
p.add(tournamentTee);
}else{
form.addParameter("starting_time",gr);
form.addParameter("starting_tee",1);
TournamentRound tRound = tournament.getTournamentRounds()[0];
Text tournamentTeetime = new Text(localize("tournament.Teetime", "Teetime")+ ": " + getRoundTimeFromGrupNum(Integer.parseInt(gr), tournament, tRound));
Text tournamentTee = new Text(localize("tournament.Tee", "Tee")+ ": " +"1");
p.add(new Break());
p.add(tournamentTeetime);
p.add(new Break());
p.add(tournamentTee);
}
form.maintainParameter("tournament_round");
}else{
form.maintainParameter("action");
}
DropdownMenu groupsMenu = new DropdownMenu(groups);
Label l = new Label(localize("tournament.choose_group_to_play_in","Choose group to play in"),groupsMenu);
form.add(l);
form.add(groupsMenu);
SubmitButton afram = new SubmitButton(localize("trounament.register","Register"));
form.add(afram);
add(p);
add(form);
} else {
Form form = new Form();
form.maintainParameter("action");
form.maintainParameter("subAction");
Table table = new Table();
table.setBorder(0);
table.setAlignment("center");
DropdownMenu groupsMenu = new DropdownMenu(groups);
table.add(getLocalizedText("tournament.choose_group_to_play_in","Choose group to play in"));
table.mergeCells(1,1,2,1);
table.add(member.getName(),1,2);
table.add(groupsMenu,2,2);
SubmitButton afram = getTournamentBusiness(modinfo).getAheadButton(modinfo,"","");
table.setAlignment(2,3,"right");
table.add(afram,2,3);
add(Text.getBreak());
form.add(table);
add(form);
}
}else {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.you_do_not_have_permission_to_register","You do not have permission to register"));
p.add(new Break());
p.add(getLocalizedMessage("tournament.contact_the_club","Contact the club"));
add(p);
}else{
add(Text.getBreak());
add("<center>");
add(getLocalizedMessage("tournament.you_do_not_have_permission_to_register","You do not have permission to register"));
add(Text.getBreak());
add(getLocalizedMessage("tournament.contact_the_club","Contact the club"));
add(Text.getBreak());
add(Text.getBreak());
add(closeButton);
add("</center>");
}
}
}
else {
incorrectSetup(modinfo);
}
}
public void performRegistrationNotOnline(IWContext modinfo,String tournament_group_id) throws RemoteException, SQLException{
Member member = (is.idega.idegaweb.golf.entity.Member) AccessControl.getMember(modinfo);
Tournament tournament = getTournament(modinfo);
getTournamentBusiness(modinfo).registerMember(member,tournament,tournament_group_id);
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Text golfer = new Text(localize("tournament.golfer", "Golfer")+ ": " + AccessControl.getMember(modinfo).getName());
Text tournamentName = new Text(localize("tournament.Tournament", "Tournament")+ ": " + tournament.getName());
Text tournamentClub = new Text(localize("tournament.Club", "Club")+ ": " + tournament.getUnion().getAbbrevation());
Text tournamentField = new Text(localize("tournament.Field", "Field")+ ": " + tournament.getField().getName());
Text trounamentStartDate = new Text(localize("tournament.Startdate", "Start date")+ ": " + new IWTimestamp(tournament.getStartTime()).getLocaleDate(modinfo.getCurrentLocale(),IWTimestamp.SHORT));
Text confirmation = new Text(localize("tournament.registered_in","You have been registered in tournament"));
Paragraph p = new Paragraph();
p.add(golfer);
p.add(new Break());
p.add(tournamentName);
p.add(new Break());
p.add(tournamentClub);
p.add(new Break());
p.add(tournamentField);
p.add(new Break());
p.add(trounamentStartDate);
String tgroup = modinfo.getParameter("tournament_group");
if(tgroup!=null){
try {
TournamentGroup tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tgroup));
Text trounamentGroup = new Text(localize("tournament.Tournament_group", "Tournament group")+ ": " + tGroup.getName());
p.add(new Break());
p.add(trounamentGroup);
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
}
Strong s = new Strong();
s.add(confirmation);
p.add(new Break());
p.add(new Break());
p.add(s);
add(p);
} else {
add(getLocalizedText("tounament.registered_to_the_tournament","Registered to the tournament"));
add(Text.getBreak());
add(getButton(new CloseButton()));
}
}
public void getDirectRegistrationTable(IWContext modinfo, IWResourceBundle iwrb) throws RemoteException, SQLException {
Tournament tournament = getTournament(modinfo);
String tournament_round_id = modinfo.getParameter("tournament_round");
if (tournament_round_id == null) {
TournamentRound[] tRounds = (TournamentRound[]) tournament.getTournamentRounds();
if (tRounds.length > 0 ) {
tournament_round_id = Integer.toString(tRounds[0].getID());
}
}
if (tournament_round_id != null) {
add(Text.getBreak());
add("<center>");
Table table = new Table();
table.setWidth("90%");
table.setAlignment(2,1,"left");
table.setAlignment(2,2,"left");
table.setAlignment(1,1,"right");
table.setAlignment(1,2,"right");
addHeading(localize("tournament.tournament_registration","Tournament registration"));
table.add("1",1,1);
table.add(getLocalizedText("tournament.choose_teetime_and_enter_ssn_in_the_textbox.__it_is_posible_to_register_more_than_one_at_a_time","Choose teetime and enter social security number. It is posible to register more than one at a time."),2,1);
table.add("2",1,2);
table.add(getText(localize("tournament.press_the","Press the")+" \""+localize("tournament.save","Save")+"\" "+localize("tournament.button_located_at_the_bottom_of_the_page","button located at the bottom of the page.")),2,2);
TournamentStartingtimeList form = getTournamentBusiness(modinfo).getStartingtimeTable(tournament,tournament_round_id,false,true,false,true);
form.setSubmitButtonParameter("action", "open");
add(table);
add("<hr>");
add(Text.getBreak());
add(form);
add("</center>");
}
else {
incorrectSetup(modinfo);
}
}
public void getDirectRegistrationTableWML(IWContext modinfo, IWResourceBundle iwrb) throws RemoteException, SQLException {
Tournament tournament = getTournament(modinfo);
TournamentRound[] tRounds = (TournamentRound[]) tournament.getTournamentRounds();
if (tRounds.length > 0) {
// TournamentStartingtimeList form = getTournamentBusiness(modinfo).getStartingtimeTable(tournament,tournament_round_id,false,true,false,true);
// form.setSubmitButtonParameter("action", "open");
Text golfer = new Text(localize("tournament.golfer", "Golfer")+ ": " + AccessControl.getMember(modinfo).getName());
Text tournamentName = new Text(localize("tournament.Tournament", "Tournament")+ ": " + tournament.getName());
Text tournamentClub = new Text(localize("tournament.Club", "Club")+ ": " + tournament.getUnion().getAbbrevation());
Text tournamentField = new Text(localize("tournament.Field", "Field")+ ": " + tournament.getField().getName());
Text trounamentStartDate = new Text(localize("tournament.Startdate", "Start date")+ ": " + new IWTimestamp(tournament.getStartTime()).getLocaleDate(modinfo.getCurrentLocale(),IWTimestamp.SHORT));
Paragraph p = new Paragraph();
p.add(golfer);
p.add(new Break());
p.add(tournamentName);
p.add(new Break());
p.add(tournamentClub);
p.add(new Break());
p.add(tournamentField);
p.add(new Break());
p.add(trounamentStartDate);
add(p);
Form form = new Form();
form.addParameter("action", "open");
form.addParameter("tournament_round",tRounds[0].getPrimaryKey().toString());
DropdownMenu teetimes = getAvailableGrupNumsDropdownMenu(modinfo,PRM_TEETIME_GROUP_NUMBER,tournament,tRounds[0]);
Label l = new Label(localize("tournament.choose_teetime","Choose teetime"),teetimes);
SubmitButton button = new SubmitButton(localize("tournament.Forward","Forward >"));
form.add(l);
form.add(teetimes);
form.add(button);
add(form);
}
else {
incorrectSetup(modinfo);
}
}
/*
* (non-Javadoc)
*
* @see com.idega.presentation.PresentationObject#main(com.idega.presentation.IWContext)
*/
public void getStartingtimeRegistrationForm(IWContext modinfo, Tournament tournament, String tournament_round_id) throws Exception {
if (tournament != null ){
Form form = new Form();
Table topTable = new Table();
Table table = new Table();
Table borderTable = new Table();
form.add(topTable);
borderTable.add(table);
form.add(borderTable);
int row = 1;
int numberOfMember = 0;
TournamentRound[] tourRounds = tournament.getTournamentRounds();
int tournamentRoundId = -1;
if (tournament_round_id == null) {
tournament_round_id = "-1";
tournamentRoundId = tourRounds[0].getID();
}
else {
tournamentRoundId = Integer.parseInt(tournament_round_id);
}
TournamentRound tournamentRound = null;
try {
tournamentRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(tournamentRoundId);
}
catch (FinderException fe) {
throw new SQLException(fe.getMessage());
}
boolean display = false;
if (tournamentRound.getVisibleStartingtimes()) {
display = true;
}
int roundNumber = tournamentRound.getRoundNumber();
IWTimestamp tourDay = null;
DropdownMenu rounds = (DropdownMenu) getStyledInterface(new DropdownMenu("tournament_round"));
tourDay = new IWTimestamp(tournamentRound.getRoundDate());
rounds.addMenuElement(tournamentRound.getID(), getResourceBundle().getLocalizedString("tournament.round", "Round") + " " + tournamentRound.getRoundNumber() + " " + tourDay.getISLDate(".", true));
Text timeText;
Text dMemberSsn;
Text dMemberName;
Text dMemberHand;
Text dMemberUnion;
Text tim = new Text(getResourceBundle().getLocalizedString("tournament.time", "Time"));
Text sc = new Text(getResourceBundle().getLocalizedString("tournament.social_security_number", "Social security number"));
Text name = new Text(getResourceBundle().getLocalizedString("tournament.name", "Name"));
Text club = new Text(getResourceBundle().getLocalizedString("tournament.club", "Club"));
Text hc = new Text(getResourceBundle().getLocalizedString("tournament.handicap", "Handicap"));
table.add(tim, 1, row);
table.add(sc, 2, row);
table.add(name, 3, row);
table.add(club, 4, row);
table.add(hc, 5, row);
table.setRowStyleClass(row, getHeaderRowClass());
java.text.DecimalFormat extraZero = new java.text.DecimalFormat("00");
java.text.DecimalFormat handicapFormat = new java.text.DecimalFormat("###.0");
Field field = tournament.getField();
List members;
CheckBox delete;
Image removeImage = getBundle().getImage("/shared/tournament/de.gif", getResourceBundle().getLocalizedString("tournament.remove_from_tournament", "Remove from tournament"));
removeImage.setToolTip(getResourceBundle().getLocalizedString("tournament.remove_from_tournament", "Remove from tournament"));
Text tTime = new Text("");
Link remove;
Text tooMany = getSmallErrorText(getResourceBundle().getLocalizedString("tournament.no_room", "No room"));
Union union;
int union_id;
String abbrevation = "'";
boolean displayTee = false;
if (tournamentRound.getStartingtees() > 1) {
displayTee = true;
}
int groupCounterNum = 0;
for (int y = 1; y <= tournamentRound.getStartingtees(); y++) {
// HAR�K��UN DAU�ANS
int tee_number = 1;
if (y == 2) tee_number = 10;
IWTimestamp startHour = new IWTimestamp(tournamentRound.getRoundDate());
IWTimestamp endHour = new IWTimestamp(tournamentRound.getRoundEndDate());
endHour.addMinutes(1);
int minutesBetween = tournament.getInterval();
int numberInGroup = tournament.getNumberInGroup();
int groupCounter = 0;
if (displayTee) {
++row;
Text startTee = new Text(getResourceBundle().getLocalizedString("tournament.starting_tee", "Starting tee") + " : " + tee_number);
table.add(startTee, 1, row);
}
int startInGroup = 0;
is.idega.idegaweb.golf.entity.Member tempMember;
TextInput socialNumber;
CheckBox paid;
int zebraRow = 1;
StartingtimeView[] sView;
while (endHour.isLaterThan(startHour)) {
++row;
++groupCounter;
++groupCounterNum;
startInGroup = 0;
timeText = (Text) tTime.clone();
timeText.setText(Text.NON_BREAKING_SPACE + extraZero.format(startHour.getHour()) + ":" + extraZero.format(startHour.getMinute()) + Text.NON_BREAKING_SPACE);
table.add(timeText, 1, row);
sView = getTournamentBusiness(modinfo).getStartingtimeView(tournamentRound.getID(), "", "", "grup_num", groupCounter + "", tee_number, "");
startInGroup = sView.length;
String styleClass = null;
for (int i = 0; i < sView.length; i++) {
if (zebraRow % 2 != 0) {
styleClass = getLightRowClass();
}
else {
styleClass = getDarkRowClass();
}
zebraRow++;
table.setHeight(row, 10);
++numberOfMember;
if (i != 0) table.add(tooMany, 1, row);
if (display) {
dMemberSsn = null;
dMemberName = null;
dMemberHand = null;
dMemberUnion = null;
if (sView[i].getMemberId() != 1) {
dMemberSsn = new Text(sView[i].getSocialSecurityNumber());
dMemberName = new Text(sView[i].getName());
dMemberUnion = new Text(sView[i].getAbbrevation());
dMemberHand = new Text(com.idega.util.text.TextSoap.singleDecimalFormat(sView[i].getHandicap()));
}
else {
dMemberSsn = new Text("-");
dMemberName = new Text(getResourceBundle().getLocalizedString("tournament.reserved", "Reserved"));
dMemberUnion = new Text("-");
dMemberHand = new Text("-");
}
table.add(dMemberSsn, 2, row);
table.add(dMemberName, 3, row);
table.add(dMemberUnion, 4, row);
table.add(dMemberHand, 5, row);
}
else {
table.mergeCells(2, row, 7, row);
table.setStyleClass(2, row, styleClass);
}
row++;
}
for (int i = startInGroup; i < (numberInGroup); i++) {
if (tee_number == 10) {
socialNumber = (TextInput) getStyledInterface(new TextInput("social_security_number_for_group_" + groupCounter + "_"));
}
else {
socialNumber = (TextInput) getStyledInterface(new TextInput("social_security_number_for_group_" + groupCounter));
}
socialNumber.setLength(15);
socialNumber.setMaxlength(10);
table.add(socialNumber, 2, row);
}
startHour.addMinutes(minutesBetween);
--row;
}
}
++row;
Text many = getSmallHeader(getResourceBundle().getLocalizedString("tournament.number_of_participants", "Number of participants") + " : " + numberOfMember);
table.add(many, 1, row);
SubmitButton submitButton = (SubmitButton) getButton(new SubmitButton(getResourceBundle().getLocalizedString("tournament.save", "Save")));
// if (submitButtonParameter != null) {
// submitButton = (SubmitButton) getButton(new SubmitButton(getResourceBundle().getLocalizedString("tournament.save", "Save"), submitButtonParameter[0], submitButtonParameter[1]));
// }
table.add(new HiddenInput("sub_action", "saveDirectRegistration"), 4, row);
table.add(submitButton, 4, row);
table.add(new HiddenInput("number_of_groups", "" + groupCounterNum), 4, row);
add(form);
} else {
System.out.println("RegistrationForMembers: Tournament not found in session, or in parameter");
}
}
public void incorrectSetup(IWContext modinfo) {
if(modinfo.isClientHandheld() || IWConstants.MARKUP_LANGUAGE_WML.equals(modinfo.getMarkupLanguage())){
Paragraph p = new Paragraph();
p.add(getLocalizedMessage("tournament.tournament_setup_is_not_right","Tournament setup is not right"));
p.add(Text.getBreak());
p.add(getLocalizedMessage("tournament.contact_the_club","Contact the club"));
add(p);
} else {
add(Text.getBreak());
add("<center>");
add(getLocalizedMessage("tournament.tournament_setup_is_not_right","Tournament setup is not right"));
add(Text.getBreak());
add(getLocalizedMessage("tournament.contact_the_club","Contact the club"));
add(Text.getBreak());
add(Text.getBreak());
add(closeButton);
add("</center>");
}
}
public void saveDirectRegistration(IWContext modinfo, IWResourceBundle iwrb) throws SQLException {
Tournament tournament = getTournament(modinfo);
boolean noOne = true;
try {
String sNumberOfGroups = modinfo.getParameter("number_of_groups");
int iNumberOfGroups = Integer.parseInt(sNumberOfGroups);
String sTournamentRoundId = modinfo.getParameter("tournament_round");
int iTournamentRoundId = Integer.parseInt(sTournamentRoundId);
String[] numbers;
Member member = null;
Table content = new Table();
content.setWidth("85%");
content.setAlignment("center");
//TextInput correction;
Form form = new Form();
form.maintainParameter("tournament_round");
form.add(new HiddenInput("action","directRegistrationMembersChosen"));
Table table = new Table();
table.setBorder(0);
int tableRow = 1;
table.setWidth(Table.HUNDRED_PERCENT);
table.add(getLocalizedText("tournament.name","Name"),1,tableRow);
table.add(getLocalizedText("tournament.group","Group"),3,tableRow);
table.add(getLocalizedText("tournament.handicap","Handicap"),5,tableRow);
Table other = new Table();
other.setBorder(1);
int otherRow = 1;
other.setWidth(Table.HUNDRED_PERCENT);
other.add(getLocalizedText("tournament.were_not_found","were not found"));
Table done = new Table();
done.setBorder(0);
int doneRow = 1;
done.add(getLocalizedText("tournament.are_already_registered","are already registered"));
Table rejects = new Table();
rejects.setBorder(0);
int rejectsRow = 1;
rejects.add(getLocalizedText("tournament.do_not_have_permission","do not have permission"));
int[] errors = new int[4];
TournamentGroup[] allGroupsInTournament = tournament.getTournamentGroups();
DropdownMenu allGroups = new DropdownMenu(allGroupsInTournament,"extra_player_groups");
TextInput derName;
TextInput correction;
boolean star = false;
DropdownMenu memberGender = new DropdownMenu("extra_player_gender");
memberGender.addMenuElement("M",iwrb.getLocalizedString("tournament.male","Male"));
memberGender.addMenuElement("F",iwrb.getLocalizedString("tournament.female","Female"));
for (int i = 1; i <= iNumberOfGroups ; i++) {
numbers = (String[]) modinfo.getParameterValues("social_security_number_for_group_"+i);
if (numbers != null) {
for (int j = 0; j < numbers.length; j++) {
if (!numbers[j].equals("")) {
member = (Member) MemberBMPBean.getMember(numbers[j]);
if (member == null) {
++otherRow;
other.add(numbers[j],1,otherRow);
}
else {
errors = getTournamentBusiness(modinfo).isMemberAllowedToRegister(member,tournament);
if ( (errors[0] == 0) && (errors[1] == 0) && (errors[2] == 0) && (errors[3] == 0) ){
// if (canMemberRegister == 0) {
if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament, ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(iTournamentRoundId),tournament.getNumberInGroup(),member) ) {
List tGroups = getTournamentBusiness(modinfo).getTournamentGroups(member,tournament);
if (tGroups != null) {
++tableRow;
table.add(member.getName(),1,tableRow);
table.add(new HiddenInput("member_id",""+member.getID()),1,tableRow);
table.add(new HiddenInput("starting_time",""+i),1,tableRow);
table.add(new HiddenInput("starting_tee","1"),1,tableRow);
table.add(new DropdownMenu(tGroups),3,tableRow);
if (member.getGender().equalsIgnoreCase("M")) {
if (member.getHandicap() > tournament.getMaxHandicap() ) {
table.add(tournament.getMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
}
else {
table.add(member.getHandicap()+"",5,tableRow);
}
}
else {
if (member.getHandicap() > tournament.getFemaleMaxHandicap() ) {
table.add(tournament.getFemaleMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
}
else {
table.add(member.getHandicap()+"",5,tableRow);
}
}
//correction = new TextInput("handicap_correction_"+member.getID());
// correction.setSize(3);
//table.add(correction,7,tableRow);
}
}
else {
++doneRow;
done.add(member.getName(),1,doneRow);
}
}
else {
++rejectsRow;
rejects.add(member.getName(),1,rejectsRow);
}
}
}
}
}
numbers = (String[]) modinfo.getParameterValues("social_security_number_for_group_"+i+"_");
if (numbers != null) {
for (int j = 0; j < numbers.length; j++) {
if (!numbers[j].equals("")) {
member = (Member) MemberBMPBean.getMember(numbers[j]);
if (member == null) {
++otherRow;
other.add(numbers[j],1,otherRow);
}
else {
errors = getTournamentBusiness(modinfo).isMemberAllowedToRegister(member,tournament);
if ( (errors[0] == 0) && (errors[1] == 0) && (errors[2] == 0) && (errors[3] == 0) ){
if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament, ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(iTournamentRoundId),tournament.getNumberInGroup(),member) ) {
List tGroups = getTournamentBusiness(modinfo).getTournamentGroups(member,tournament);
if (tGroups != null) {
++tableRow;
table.add(member.getName(),1,tableRow);
table.add(new HiddenInput("member_id",""+member.getID()),1,tableRow);
table.add(new HiddenInput("starting_time",""+i),1,tableRow);
table.add(new HiddenInput("starting_tee","10"),1,tableRow);
table.add(new DropdownMenu(tGroups),3,tableRow);
if (member.getGender().equalsIgnoreCase("M")) {
if (member.getHandicap() > tournament.getMaxHandicap() ) {
table.add(tournament.getMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
// star = true;
}
else {
table.add(TextSoap.singleDecimalFormat(member.getHandicap())+"",5,tableRow);
}
}
else {
if (member.getHandicap() > tournament.getFemaleMaxHandicap() ) {
table.add(tournament.getFemaleMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
// star = true;
}
else {
table.add(member.getHandicap()+"",5,tableRow);
}
}
// correction = new TextInput("handicap_correction_"+member.getID());
// correction.setSize(3);
// table.add(correction,7,tableRow);
}
}
else {
++doneRow;
done.setAlignment(1,doneRow,"left");
done.add(member.getName(),1,doneRow);
}
}
else {
++rejectsRow;
rejects.setAlignment(1,rejectsRow,"left");
rejects.add(member.getName(),1,rejectsRow);
}
}
}
}
}
/*
* Group registration !!! ( ONLY TEE 1 implemented ADD TEE 10 )!!!
*/
boolean useGroups = tournament.getTournamentType().getUseGroups();
if (useGroups && tournament.getNumberInTournamentGroup() > 1) {
String[] names = (String[]) modinfo.getParameterValues("groupname_for_group_"+i);
int membersPerTournamentGroup = tournament.getNumberInTournamentGroup();
int numInGrupNum = tournament.getNumberInGroup();
int numberOfTournamentGroups = numInGrupNum / membersPerTournamentGroup;
for (int k = 0; k < numberOfTournamentGroups; k++) {
String groupName = names[k];
numbers = (String[]) modinfo.getParameterValues("social_security_number_for_group_"+i+"_"+k);
if (numbers != null) {
// Checking for valid entries
boolean validNumbers = true;
String defaultName = "";
for (int j = 0; j < numbers.length; j++) {
if (defaultName.equals("")) {
defaultName = numbers[j].trim();
}
validNumbers &= !numbers[j].trim().equalsIgnoreCase("");
}
for (int j = 0; j < numbers.length && validNumbers; j++) {
if (!numbers[j].equals("")) {
boolean isSSN = false;
try {
Integer.parseInt(numbers[j]);
isSSN = true;
} catch (Exception e) {
isSSN = false;
}
member = (Member) MemberBMPBean.getMember(numbers[j]);
if (member == null && isSSN) {
++otherRow;
other.add(numbers[j],1,otherRow);
other.add(new HiddenInput("extra_player_social_security_number",numbers[j]),1,otherRow);
other.add(new HiddenInput("extra_player_starting_tee","1"),1,otherRow);
derName = new TextInput("extra_player_name");
other.add(derName,3,otherRow);
TextInput hand = new TextInput("extra_player_handicap");
hand.setSize(3);
try {
Integer.parseInt(numbers[j].substring(0,6));
Integer.parseInt(numbers[j].substring(9,10));
}
catch (NumberFormatException n) {
derName.setContent(iwrb.getLocalizedString("tournament.ssn_is_wrong","Social security number is incorrect"));
}
if (numbers[j].length() < 10) {
derName.setContent(iwrb.getLocalizedString("tournament.ssn_is_wrong","Social security number is incorrect"));
}
other.add(allGroups,5,otherRow);
other.add(hand,7,otherRow);
other.add(memberGender, 9,otherRow);
other.add(new HiddenInput("extra_player_starting_time",""+i),1,otherRow);
CheckBox box = new CheckBox("extra_player",""+ (otherRow-2));
other.add(box,11,otherRow);
}
else {
boolean isRegistered = false;
if (member != null) {
isRegistered = getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament, ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(iTournamentRoundId),tournament.getNumberInGroup(),member);
errors = getTournamentBusiness(modinfo).isMemberAllowedToRegister(member,tournament);
} else {
errors = new int[]{0, 0, 0, 0};
}
if ((groupName == null || groupName.trim().equals("")) && j==0) {
if (member != null) {
groupName = member.getName();
} else {
groupName = numbers[j];
}
}
if ( (errors[0] == 0) && (errors[1] == 0) && (errors[2] == 0) && (errors[3] == 0)){
if (!isRegistered ) {
List tGroups = getTournamentBusiness(modinfo).getTournamentGroups(member,tournament);
if (tGroups != null) {
++tableRow;
if (member != null) {
table.add(groupName +" - "+member.getName(),1,tableRow);
} else {
table.add(groupName +" - "+numbers[j],1,tableRow);
}
table.add(new HiddenInput("group_name",groupName),1,tableRow);
if (member != null) {
table.add(new HiddenInput("member_id",""+member.getID()),1,tableRow);
table.add(new HiddenInput("member_name",""),1,tableRow);
} else {
table.add(new HiddenInput("member_id","-1"),1,tableRow);
table.add(new HiddenInput("member_name",numbers[j]),1,tableRow);
}
table.add(new HiddenInput("starting_time",""+i),1,tableRow);
table.add(new HiddenInput("starting_tee","1"),1,tableRow);
table.add(new DropdownMenu(tGroups),3,tableRow);
if (member != null) {
if (member.getGender().equalsIgnoreCase("M")) {
if (member.getHandicap() > tournament.getMaxHandicap() ) {
table.add(tournament.getMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
star = true;
}
else {
table.add(TextSoap.singleDecimalFormat(member.getHandicap())+"",5,tableRow);
}
}
else {
if (member.getHandicap() > tournament.getFemaleMaxHandicap() ) {
table.add(tournament.getFemaleMaxHandicap()+" *("+member.getHandicap()+")",5,tableRow);
star = true;
}
else {
table.add(member.getHandicap()+"",5,tableRow);
}
}
}
correction = new TextInput("handicap_correction");
correction.setSize(3);
if (member == null) {
correction.setContent("36");
}
table.add(correction,5,tableRow);
}
}
else {
++doneRow;
done.setAlignment(1,doneRow,"left");
done.add(member.getName(),1,doneRow);
}
}
else {
++rejectsRow;
rejects.setAlignment(1,rejectsRow,"left");
rejects.add(member.getName(),1,rejectsRow);
}
}
}
}
if (!validNumbers && !defaultName.equals("")) {
++rejectsRow;
rejects.setAlignment(1,rejectsRow,"left");
if (groupName.equals("")) {
rejects.add(defaultName,1,rejectsRow);
} else {
rejects.add(groupName,1,rejectsRow);
}
rejects.add(getResourceBundle().getLocalizedString("too_few_golfers_in_group", "Too few golfers in the group"),2,rejectsRow);
}
}
}
}
/*
* Group Registration DONE
*/
}
if (tableRow > 1) {
Table instructionTable = new Table();
instructionTable.setBorder(0);
instructionTable.setWidth("85%");
instructionTable.setAlignment("center");
instructionTable.mergeCells(1,1,3,1);
instructionTable.setAlignment(1,1,"left");
instructionTable.setAlignment(2,2,"left");
instructionTable.setAlignment(2,3,"left");
instructionTable.setAlignment(1,2,"right");
instructionTable.setAlignment(1,3,"right");
instructionTable.add(getSmallHeader(localize("tournament.tournament_registration","Tournament registration")));
instructionTable.add("3",1,2);
instructionTable.add(getLocalizedText("tournaemnt.if_you_fit_in_more_than_one_group_then_choose_group","If you fit in more than one group, then choose group."),3,2);
instructionTable.add("4",1,3);
instructionTable.add(getText(localize("tournament.press_the","Press the")+" \""+localize("trounament.continue","continue")+"\" "+localize("tournament.button_and_the_registration_is_finished","button and the registration is finished.")),3,3);
instructionTable.add("5",1,4);
instructionTable.setVerticalAlignment(1,4,"top");
instructionTable.add(getText(localize("tournament.if_player_has_higher_handicap_than_the_max_handicap_for_the_tournament_then_his_handicap_is_visible_within_parenthesis_after_his_gamehandicap","if_player_has_higher_handicap_than_the_max_handicap_for_the_tournament_then_his_handicap_is_visible_within_parenthesis_after_his_gamehandicap")),3,4);
instructionTable.add("6",1,5);
instructionTable.add(getMessageText(localize("tournament.check_registration_in_teetime_table","Check registration in teetime table.")),3,5);
add(Text.getBreak());
add(instructionTable);
add("<hr>");
}
if (tableRow > 1) {
noOne = false;
form.add(table);
content.add(form);
content.addBreak();
}
if (otherRow > 1) {
if (noOne) {
content.add(form);
}
noOne = false;
form.add(other);
content.addBreak();
}
Table buttonTable = new Table(1,1);
buttonTable.setAlignment(1,1,"right");
buttonTable.setWidth(Table.HUNDRED_PERCENT);
buttonTable.add(getTournamentBusiness(modinfo).getAheadButton(modinfo,"",""));
form.add(buttonTable);
if (doneRow > 1) {
noOne = false;
content.add(done);
content.addBreak();
}
if (rejectsRow > 1) {
noOne = false;
content.add(rejects);
}
if (!noOne) {
add(content);
}
++tableRow;
table.setAlignment(3,tableRow,"right");
// add(TournamentController.getBackLink());
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (noOne) {
this.getDirectRegistrationTable(modinfo,iwrb);
}
}
catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
public void finalizeDirectRegistration(IWContext modinfo, IWResourceBundle iwrb) throws RemoteException, SQLException {
String tournament_round = modinfo.getParameter("tournament_round");
String[] member_ids = modinfo.getParameterValues("member_id");
String[] tournament_groups = modinfo.getParameterValues("tournament_group");
String[] starting_time = modinfo.getParameterValues("starting_time");
String[] starting_tee = modinfo.getParameterValues("starting_tee");
String[] groupNames = modinfo.getParameterValues("group_name");
String sTournamentRoundId = modinfo.getParameter("tournament_round");
String handicapCorrection;
Member member;
TournamentGroup tGroup;
Tournament tournament = getTournament(modinfo);
javax.transaction.TransactionManager tm = com.idega.transaction.IdegaTransactionManager.getInstance();
int fieldID = tournament.getFieldId();
int fieldPar = tournament.getField().getFieldPar();
Handicap handicap = new Handicap(-1);
if (member_ids != null) {
if (tournament.getTournamentType().getUseGroups() && tournament.getNumberInTournamentGroup() > 1) {
int numInGroup = tournament.getNumberInTournamentGroup();
String[] corrections = modinfo.getParameterValues("handicap_correction");
String[] memberNames = modinfo.getParameterValues("member_name");
MemberHome mHome = (MemberHome) IDOLookup.getHome(Member.class);
HashMap groups = new HashMap();
HashMap groupMembers = new HashMap();
int groupCounter = 0;
for (int i = 0; i < member_ids.length; i++) {
tm = com.idega.transaction.IdegaTransactionManager.getInstance();
try {
tm.begin();
String groupName = groupNames[i];
Member group = (Member) groups.get(groupName);
if (group == null) {
// Create the group
group = mHome.create();
group.setFirstName(groupName);
group.setSocialSecurityNumber("0000000000");
group.setGender("m");
group.store();
UnionMemberInfo uMInfo = (UnionMemberInfo) IDOLookup.createLegacy(UnionMemberInfo.class);
uMInfo.setUnionID(1);
uMInfo.setMemberID(group.getID() );
uMInfo.setMembershipType("main");
uMInfo.setMemberStatus("A");
uMInfo.insert();
groups.put(groupName, group);
}
Member[] mems = (Member[]) groupMembers.get(group);
if (mems == null) {
mems = new Member[numInGroup];
groupCounter = 0;
groupMembers.put(group, mems);
}
if (member_ids[i].equals("-1")) {
// Create the member ...
member = mHome.create();
member.setFirstName(memberNames[i]);
member.setSocialSecurityNumber("0000000001");
member.store();
} else {
member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(member_ids[i]));
}
mems[groupCounter++] = member;
handicapCorrection = corrections[i];
if (handicapCorrection != null) {
if (!handicapCorrection.equalsIgnoreCase("")) {
correctHandicap(modinfo,member,handicapCorrection);
}
}
if (groupCounter == numInGroup) {
String ids = "";
float totalHand = 0;
tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournament_groups[i]));
int teeColorId = getTournamentBusiness(modinfo).getTeeColorIdForTournamentGroup(tournament, tGroup);
if (teeColorId < 0) {
teeColorId = tGroup.getTeeColorID();
}
Tee tee = ((TeeHome) IDOLookup.getHomeLegacy(Tee.class)).findByFieldAndTeeColorAndHoleNumber(fieldID, teeColorId, 1);
for (int kk=0; kk<numInGroup; kk++) {
if (kk != 0) {
ids+= ",";
}
float hc = mems[kk].getHandicap();
if (hc > tournament.getMaxHandicap()) {
hc = tournament.getMaxHandicap();
}
int leikhandi = handicap.getLeikHandicap((double)tee.getSlope(), (double) tee.getCourseRating(), (double) fieldPar, hc);
if (leikhandi > tournament.getMaxHandicap()) {
leikhandi = (int) tournament.getMaxHandicap();
}
totalHand += leikhandi;
ids += Integer.toString(mems[kk].getID());
}
switch (numInGroup) {
case 2:
totalHand = totalHand / (float) 5;
break;
case 3:
totalHand = totalHand / (float) 7.5;
break;
case 4:
totalHand = totalHand / (float) 10;
break;
}
BigDecimal bd = new BigDecimal(totalHand);
int leikhandi = bd.setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
correctHandicap(modinfo, group, Integer.toString(leikhandi));
group.addMetaData("group_members", ids);
group.store();
// Group is full, time to finalize
getTournamentBusiness(modinfo).registerMember(group,tournament,tournament_groups[i]);
getTournamentBusiness(modinfo).setupStartingtime(modinfo, group,tournament,Integer.parseInt(sTournamentRoundId),Integer.parseInt(starting_time[i]));
}
tm.commit();
}
catch (Exception ex) {
ex.printStackTrace(System.err);
try {
tm.rollback();
}catch (javax.transaction.SystemException se) {se.printStackTrace(System.err);}
}
}
} else {
for (int i = 0; i < member_ids.length; i++) {
try {
tm.begin();
member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(member_ids[i]));
tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournament_groups[i]));
getTournamentBusiness(modinfo).registerMember(member,tournament,tournament_groups[i]);
if (starting_tee[i].equals("10")) {
getTournamentBusiness(modinfo).setupStartingtime(modinfo, member,tournament,Integer.parseInt(sTournamentRoundId),Integer.parseInt(starting_time[i]),10);
}else {
getTournamentBusiness(modinfo).setupStartingtime(modinfo, member,tournament,Integer.parseInt(sTournamentRoundId),Integer.parseInt(starting_time[i]));
}
tm.commit();
}
catch (Exception ex) {
ex.printStackTrace(System.err);
try {
tm.rollback();
}catch (javax.transaction.SystemException se) {
se.printStackTrace(System.err);
}
}
}
}
}
}
public void correctHandicap(IWContext modinfo,Member member ,String handicapString) {
try {
float handicap = 100;
if ( handicapString != null && handicapString.length() > 0 ) {
if ( handicapString.indexOf(",") != -1 ) {
handicapString = handicapString.replace(',','.');
}
handicap = Float.parseFloat(handicapString);
}
MemberInfo[] infos = (MemberInfo[]) ((MemberInfo) IDOLookup.instanciateEntity(MemberInfo.class)).findAllByColumnEquals("member_id",member.getID()+"");
MemberInfo memberInfo;
if (infos.length > 0) {
try {
memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).findByPrimaryKey(member.getID());
}
catch (FinderException fe) {
throw new SQLException(fe.getMessage());
}
memberInfo.setHandicap(handicap);
memberInfo.update();
}
else {
memberInfo = (MemberInfo) IDOLookup.createLegacy(MemberInfo.class);
memberInfo.setMemberId(member.getID());
memberInfo.setHandicap(handicap);
memberInfo.setFirstHandicap(handicap);
memberInfo.insert();
}
Tournament tournament = getTournament(modinfo);
IWTimestamp stampur = new IWTimestamp(tournament.getStartTime());
stampur.addDays(-1);
Scorecard scoreCard = (Scorecard) IDOLookup.createLegacy(Scorecard.class);
scoreCard.setMemberId(member.getID());
scoreCard.setTournamentRoundId(1);
scoreCard.setScorecardDate(stampur.getTimestamp());
scoreCard.setTotalPoints(0);
scoreCard.setHandicapBefore(memberInfo.getHandicap());
scoreCard.setHandicapAfter(handicap);
scoreCard.setSlope(0);
scoreCard.setCourseRating(0);
scoreCard.setTeeColorID(0);
scoreCard.setFieldID(0);
scoreCard.setHandicapCorrection(true);
scoreCard.insert();
}
catch (SQLException sq ) {
sq.printStackTrace(System.err);
}
}
private String getRoundTimeFromGrupNum(int num, Tournament tournament, TournamentRound tRound) {
int interval = tournament.getInterval();
IWTimestamp start = new IWTimestamp(tRound.getRoundDate());
start.addMinutes((num-1)*interval);
java.text.DecimalFormat extraZero = new java.text.DecimalFormat("00");
return extraZero.format(start.getHour()) + ":" + extraZero.format(start.getMinute());
}
public DropdownMenu getAvailableGrupNumsDropdownMenu(IWContext iwc, String dropdownName, Tournament tournament, TournamentRound tRound) throws SQLException, RemoteException {
DropdownMenu menu = new DropdownMenu(dropdownName);
int interval = tournament.getInterval();
int grupNum = 0;
IWTimestamp start = new IWTimestamp(tRound.getRoundDate());
start.addMinutes(-interval);
IWTimestamp end = new IWTimestamp(tRound.getRoundEndDate());
java.text.DecimalFormat extraZero = new java.text.DecimalFormat("00");
// menu.addMenuElement(0, "");
boolean displayTee = false;
if (tRound.getStartingtees() > 1) {
displayTee = true;
}
int totalMinutes = IWTimestamp.getMinutesBetween(start,end);
int numberOfGroups = totalMinutes/interval+1;
boolean[] isFull_1 = getTournamentBusiness(iwc).getIfTeetimeGroupsAreFull(tournament,tRound,numberOfGroups,1);
boolean[] isFull_10 = null;
if(displayTee){
isFull_10=getTournamentBusiness(iwc).getIfTeetimeGroupsAreFull(tournament,tRound,numberOfGroups,10);
}
while (end.isLaterThan(start)) {
++grupNum;
start.addMinutes(interval);
if (displayTee) {
if(!isFull_1[grupNum-1]){
menu.addMenuElement(grupNum, extraZero.format(start.getHour()) + ":" + extraZero.format(start.getMinute()) + " ("+localize("tournament.tee","Tee")+" 1)");
}
if(!isFull_10[grupNum-1]){
menu.addMenuElement(grupNum + SUFFIX_TENTH_TEE, extraZero.format(start.getHour()) + ":" + extraZero.format(start.getMinute()) + " ("+localize("tournament.tee","Tee")+" 10)");
}
}
else {
if(!isFull_1[grupNum-1]){
menu.addMenuElement(grupNum, extraZero.format(start.getHour()) + ":" + extraZero.format(start.getMinute()));
}
}
}
return menu;
}
public void directRegistrationConfirmMessageWML(IWContext iwc) throws SQLException{
Tournament tournament = getTournament(iwc);
Text golfer = new Text(localize("tournament.golfer", "Golfer")+ ": " + AccessControl.getMember(iwc).getName());
Text tournamentName = new Text(localize("tournament.Tournament", "Tournament")+ ": " + tournament.getName());
Text tournamentClub = new Text(localize("tournament.Club", "Club")+ ": " + tournament.getUnion().getAbbrevation());
Text tournamentField = new Text(localize("tournament.Field", "Field")+ ": " + tournament.getField().getName());
Text trounamentStartDate = new Text(localize("tournament.Startdate", "Start date")+ ": " + new IWTimestamp(tournament.getStartTime()).getLocaleDate(iwc.getCurrentLocale(),IWTimestamp.SHORT));
Text confirmation = new Text(localize("tournament.registered_in","You have been registered in tournament"));
Paragraph p = new Paragraph();
p.add(golfer);
p.add(new Break());
p.add(tournamentName);
p.add(new Break());
p.add(tournamentClub);
p.add(new Break());
p.add(tournamentField);
p.add(new Break());
p.add(trounamentStartDate);
String tgroup = iwc.getParameter("tournament_group");
if(tgroup!=null){
try {
TournamentGroup tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tgroup));
Text trounamentGroup = new Text(localize("tournament.Tournament_group", "Tournament group")+ ": " + tGroup.getName());
p.add(new Break());
p.add(trounamentGroup);
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
}
String teetime = iwc.getParameter("starting_time");
if(teetime!=null){
TournamentRound tRound = tournament.getTournamentRounds()[0];
Text tournamentTeetime = new Text(localize("tournament.Teetime", "Teetime")+ ": " + getRoundTimeFromGrupNum(Integer.parseInt(teetime), tournament, tRound));
Text tournamentTee = new Text(localize("tournament.Tee", "Tee")+ ": " +iwc.getParameter("starting_tee"));
p.add(new Break());
p.add(tournamentTeetime);
p.add(new Break());
p.add(tournamentTee);
}
Strong s = new Strong();
s.add(confirmation);
p.add(new Break());
p.add(new Break());
p.add(s);
add(p);
}
}