/* * Created on 3.3.2004 */ package is.idega.idegaweb.golf.handicap.presentation; import is.idega.idegaweb.golf.UpdateHandicap; import is.idega.idegaweb.golf.entity.Field; 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.ScorecardHome; import is.idega.idegaweb.golf.entity.Tee; import is.idega.idegaweb.golf.entity.TeeColor; import is.idega.idegaweb.golf.entity.Tournament; import is.idega.idegaweb.golf.entity.TournamentHome; import is.idega.idegaweb.golf.entity.TournamentRound; import is.idega.idegaweb.golf.entity.Union; import is.idega.idegaweb.golf.entity.UnionHome; import is.idega.idegaweb.golf.presentation.GolfBlock; import is.idega.idegaweb.golf.templates.page.GolfWindow; import com.idega.data.IDOLookup; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Text; 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.SubmitButton; import com.idega.presentation.ui.TextInput; import com.idega.util.IWCalendar; import com.idega.util.IWTimestamp; /** * @author laddi */ public class HandicapUtility extends GolfWindow { public static final String PARAMETER_METHOD = "hcp_util_method"; public static final String PARAMETER_ACTION = "hcp_util_action"; public static final String PARAMETER_SCORECARD_ID = "hcp_scorecard_id"; public static final String PARAMETER_FIELD_ID = "hcp_field_id"; public static final String PARAMETER_TEE_COLOR_ID = "hcp_tee_color_id"; public static final String PARAMETER_MEMBER_ID = "hcp_member_id"; public static final String PARAMETER_TOURNAMENT_ID = "hcp_tournament_id"; private static final String PARAMETER_DAY = "hcp_day"; private static final String PARAMETER_MONTH = "hcp_month"; private static final String PARAMETER_YEAR = "hcp_year"; private static final String PARAMETER_HANDICAP = "hcp_handicap"; public static final int ACTION_CHANGE_TEES = 1; public static final int ACTION_DELETE_SCORECARD = 2; public static final int ACTION_RECALCULATE_HANDICAP = 3; public static final int ACTION_UPDATE_HANDICAP = 4; public static final int ACTION_FIND_FIELD = 6; public HandicapUtility() { setWidth(400); setHeight(260); setTitle("Handicap Utility"); add(new Utility()); } public class Utility extends GolfBlock { private int _method = -1; private int _action = -1; private IWResourceBundle _iwrb; private int _scorecardID = -1; private int _fieldID = -1; private int _teeColorID = -1; private int _memberID = -1; private int _tournamentID = -1; public void main(IWContext modinfo) throws Exception { _iwrb = getResourceBundle(); switch (parseAction(modinfo)) { case ACTION_CHANGE_TEES: changeTees(modinfo); break; case ACTION_DELETE_SCORECARD: deleteScorecard(modinfo); break; case ACTION_RECALCULATE_HANDICAP: recalculate(modinfo); break; case ACTION_UPDATE_HANDICAP: updateHandicap(modinfo); break; case ACTION_FIND_FIELD: findField(modinfo); break; default: getForm(modinfo); break; } } private void getForm(IWContext modinfo) throws Exception { switch (_method) { case ACTION_CHANGE_TEES: getChangeTeesForm(modinfo); break; case ACTION_DELETE_SCORECARD: getDeleteScorecardForm(modinfo); break; case ACTION_RECALCULATE_HANDICAP: getRecalculateForm(modinfo); break; case ACTION_UPDATE_HANDICAP: getUpdateHandicapForm(modinfo); break; case ACTION_FIND_FIELD: getFindFieldForm(modinfo); break; default: getParentPage().close(); break; } } private void getChangeTeesForm(IWContext modinfo) throws Exception { getParentPage().setTitle(_iwrb.getLocalizedString("handicap.change_tees", "Change tees")); addHeading(_iwrb.getLocalizedString("handicap.change_tees", "Change tees")); Scorecard scoreCard = ((ScorecardHome) IDOLookup.getHomeLegacy(Scorecard.class)).findByPrimaryKey(_scorecardID); Table myTable = new Table(2, 3); myTable.mergeCells(1, 1, 2, 1); myTable.mergeCells(1, 2, 2, 2); myTable.setAlignment("center"); myTable.setAlignment(1, 2, "center"); Form myForm = new Form(); myForm.add(new HiddenInput(PARAMETER_SCORECARD_ID, String.valueOf(_scorecardID))); myForm.add(new HiddenInput(PARAMETER_ACTION, String.valueOf(ACTION_CHANGE_TEES))); myForm.add(new HiddenInput(PARAMETER_FIELD_ID, String.valueOf(scoreCard.getFieldID()))); TeeColor[] tee = (TeeColor[]) ((TeeColor) IDOLookup.instanciateEntity(TeeColor.class)).findAll("select distinct tc.* from tee_color tc, tee t, scorecard s, member m where tc.tee_color_id = t.tee_color_id and t.field_id = s.field_id and s.member_id = m.member_id and tc.gender = m.gender and s.scorecard_id = " + _scorecardID + " order by tc.tee_color_id"); DropdownMenu menu = (DropdownMenu) getStyledInterface(new DropdownMenu(PARAMETER_TEE_COLOR_ID)); for (int a = 0; a < tee.length; a++) { menu.addMenuElement(tee[a].getID(), tee[a].getName()); } menu.setSelectedElement(scoreCard.getTeeColorID() + ""); myTable.add(getHeader(_iwrb.getLocalizedString("handicap.choose_tees", "Choose tees") + ":"), 1, 1); myTable.add(menu, 1, 2); myTable.add(getButton(new SubmitButton(_iwrb.getLocalizedString("handicap.confirm", "Confirm"))), 2, 3); myTable.add(getButton(new CloseButton(_iwrb.getLocalizedString("handicap.close", "Close"))), 1, 3); myForm.add(myTable); add(new Text().getBreak()); add(myForm); } private void getDeleteScorecardForm(IWContext modinfo) throws Exception { getParentPage().setTitle(_iwrb.getLocalizedString("handicap.scorecard_delete", "Delete scorecard")); addHeading(_iwrb.getLocalizedString("handicap.scorecard_delete", "Delete scorecard")); Table myTable = new Table(2, 2); myTable.mergeCells(1, 1, 2, 1); myTable.setAlignment("center"); Form myForm = new Form(); myForm.add(new HiddenInput(PARAMETER_SCORECARD_ID, String.valueOf(_scorecardID))); myForm.add(new HiddenInput(PARAMETER_ACTION, String.valueOf(ACTION_DELETE_SCORECARD))); myTable.add(getHeader(_iwrb.getLocalizedString("handicap.scorecard_delete", "Delete scorecard") + "?"), 1, 1); myTable.add(getButton(new SubmitButton(_iwrb.getLocalizedString("handicap.confirm", "Confirm"))), 2, 2); myTable.add(getButton(new CloseButton(_iwrb.getLocalizedString("handicap.close", "Close"))), 1, 2); myForm.add(myTable); Text breakText = new Text("<br>"); add(breakText); add(myForm); } private void getRecalculateForm(IWContext modinfo) throws Exception { getParentPage().setTitle(_iwrb.getLocalizedString("handicap.recalculate_handicap", "Recalculate handicap")); addHeading(_iwrb.getLocalizedString("handicap.recalculate_handicap", "Recalculate handicap")); Form myForm = new Form(); myForm.add(new HiddenInput(PARAMETER_MEMBER_ID, String.valueOf(_memberID))); myForm.add(new HiddenInput(PARAMETER_ACTION, String.valueOf(ACTION_RECALCULATE_HANDICAP))); Table myTable = new Table(2, 3); myTable.mergeCells(1, 1, 2, 1); myTable.mergeCells(1, 2, 2, 2); myTable.setAlignment("center"); myTable.setAlignment(1, 2, "center"); myTable.setAlignment(2, 3, "right"); myTable.setCellpadding(4); IWCalendar dagatal = new IWCalendar(); String month = String.valueOf(dagatal.getMonth()); String year = String.valueOf(dagatal.getYear()); String day = String.valueOf(dagatal.getDay()); DropdownMenu select_month = (DropdownMenu) getStyledInterface(new DropdownMenu(PARAMETER_MONTH)); for (int m = 1; m <= 12; m++) { select_month.addMenuElement(String.valueOf(m), dagatal.getMonthName(m).toLowerCase()); } select_month.setSelectedElement(month); DropdownMenu select_year = (DropdownMenu) getStyledInterface(new DropdownMenu(PARAMETER_YEAR)); for (int y = 2000; y <= dagatal.getYear(); y++) { select_year.addMenuElement(String.valueOf(y), String.valueOf(y)); } select_year.setSelectedElement(year); DropdownMenu select_day = (DropdownMenu) getStyledInterface(new DropdownMenu(PARAMETER_DAY)); for (int d = 1; d <= 31; d++) { select_day.addMenuElement(String.valueOf(d), String.valueOf(d) + "."); } select_day.setSelectedElement(day); myTable.add(select_day, 1, 2); myTable.add(select_month, 1, 2); myTable.add(select_year, 1, 2); Text confirmText = getHeader(_iwrb.getLocalizedString("handicap.how_far_back", "How far back do you want to calculate")); myTable.add(confirmText, 1, 1); myTable.add(getButton(new SubmitButton(_iwrb.getLocalizedString("handicap.confirm", "Confirm"))), 2, 3); myTable.add(getButton(new CloseButton(_iwrb.getLocalizedString("handicap.close", "Close"))), 1, 3); myForm.add(myTable); add("<br>"); add(myForm); } private void getUpdateHandicapForm(IWContext modinfo) throws Exception { getParentPage().setTitle(_iwrb.getLocalizedString("handicap.update_handicap", "Update handicap")); addHeading(_iwrb.getLocalizedString("handicap.update_handicap", "Update handicap")); Table myTable = new Table(2, 3); myTable.mergeCells(1, 1, 2, 1); myTable.mergeCells(1, 2, 2, 2); myTable.setCellpadding(5); myTable.setAlignment("center"); myTable.setAlignment(1, 2, "center"); Form myForm = new Form(); myForm.add(new HiddenInput(PARAMETER_MEMBER_ID, String.valueOf(_memberID))); myForm.add(new HiddenInput(PARAMETER_TOURNAMENT_ID, String.valueOf(_tournamentID))); myForm.add(new HiddenInput(PARAMETER_ACTION, String.valueOf(ACTION_UPDATE_HANDICAP))); myTable.add(getHeader(_iwrb.getLocalizedString("handicap.enter_handicap", "Enter handicap") + ":"), 1, 1); myTable.add(new TextInput(PARAMETER_HANDICAP), 1, 2); myTable.add(getButton(new SubmitButton(_iwrb.getLocalizedString("handicap.confirm", "Confirm"))), 2, 3); myTable.add(getButton(new CloseButton(_iwrb.getLocalizedString("handicap.close", "Close"))), 1, 3); myForm.add(myTable); add(Text.getBreak()); add(myForm); } public void getFindFieldForm(IWContext modinfo) throws Exception { getParentPage().setTitle(_iwrb.getLocalizedString("handicap.field_selection", "Field selection")); addHeading(_iwrb.getLocalizedString("handicap.field_selection", "Field selection")); Form myForm = new Form(); myForm.add(new HiddenInput(PARAMETER_ACTION, String.valueOf(ACTION_FIND_FIELD))); Table myTable = new Table(1, 3); myTable.setCellpadding(3); myTable.setCellspacing(3); myTable.setAlignment(1, 3, "right"); myTable.setAlignment("center"); myTable.setVerticalAlignment("middle"); Field[] field = (Field[]) ((Field) IDOLookup.instanciateEntity(Field.class)).findAllOrdered("name"); DropdownMenu select_field = (DropdownMenu) getStyledInterface(new DropdownMenu(PARAMETER_FIELD_ID)); for (int a = 0; a < field.length; a++) { Union union = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(field[a].getUnionID()); select_field.addMenuElement(field[a].getID(), field[a].getName() + " - " + union.getAbbrevation()); } myTable.add(getHeader(_iwrb.getLocalizedString("handicap.select_field", "Select field") + ":"), 1, 1); myTable.add(select_field, 1, 2); myTable.add(getButton(new SubmitButton(_iwrb.getLocalizedString("handicap.confirm", "Confirm"))), 1, 3); myForm.add(myTable); add(new Text().getBreak()); add(myForm); } private void changeTees(IWContext modinfo) throws Exception { Scorecard scoreCard = ((ScorecardHome) IDOLookup.getHomeLegacy(Scorecard.class)).findByPrimaryKey(_scorecardID); Tee[] tee = (Tee[]) ((Tee) IDOLookup.instanciateEntity(Tee.class)).findAll("select distinct slope,course_rating from tee where field_id = " + _fieldID + " and tee_color_id = " + _teeColorID); if (tee.length > 0) { TournamentRound round = scoreCard.getTournamentRound(); Tournament tournament = round.getTournament(); IWTimestamp stampur = new IWTimestamp(tournament.getStartTime()); stampur.addDays(-2); Scorecard[] scorecards = (Scorecard[]) ((Scorecard) IDOLookup.instanciateEntity(Scorecard.class)).findAll("select * from scorecard s, tournament_round tr where s.tournament_round_id = tr.tournament_round_id and tr.tournament_id = " + tournament.getID() + " and s.member_id = " + scoreCard.getMemberId()); for (int a = 0; a < scorecards.length; a++) { scorecards[a].setSlope(tee[0].getSlope()); scorecards[a].setCourseRating(tee[0].getCourseRating()); scorecards[a].setTeeColorID(_teeColorID); scorecards[a].update(); } UpdateHandicap.update(scoreCard.getMemberId(), stampur); } getParentPage().setParentToReload(); getParentPage().close(); } private void deleteScorecard(IWContext modinfo) throws Exception { Scorecard scorecard = ((ScorecardHome) IDOLookup.getHomeLegacy(Scorecard.class)).findByPrimaryKey(_scorecardID); int memberID = scorecard.getMemberId(); IWTimestamp stamp = new IWTimestamp(scorecard.getScorecardDate()); scorecard.delete(); UpdateHandicap.update(memberID, stamp); getParentPage().setParentToReload(); getParentPage().close(); } private void recalculate(IWContext modinfo) throws Exception { String year = modinfo.getParameter(PARAMETER_YEAR); String month = modinfo.getParameter(PARAMETER_MONTH); String day = modinfo.getParameter(PARAMETER_DAY); IWTimestamp stampur = new IWTimestamp(new IWTimestamp()); if (day != null) stampur.setDay(Integer.parseInt(day)); if (month != null) stampur.setMonth(Integer.parseInt(month) - 1); if (year != null) stampur.setYear(Integer.parseInt(year)); UpdateHandicap.update(_memberID, stampur); getParentPage().setParentToReload(); getParentPage().close(); } private void updateHandicap(IWContext modinfo) throws Exception { float handicap = 100; String handicapString = modinfo.getParameter(PARAMETER_HANDICAP); if (handicapString != null && handicapString.length() > 0) { if (handicapString.indexOf(",") != -1) { handicapString = handicapString.replace(',', '.'); } handicap = Float.parseFloat(handicapString); } Tournament tournament = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(_tournamentID); MemberInfo memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).findByPrimaryKey(_memberID); IWTimestamp stampur2 = new IWTimestamp(tournament.getStartTime()); IWTimestamp stampur = new IWTimestamp(); stampur.setDay(stampur2.getDay()); stampur.setMonth(stampur2.getMonth() - 1); stampur.setYear(stampur2.getYear()); stampur.addDays(-1); Scorecard scoreCard = (Scorecard) IDOLookup.createLegacy(Scorecard.class); scoreCard.setMemberId(_memberID); 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(); UpdateHandicap.update(_memberID, stampur); getParentPage().setParentToReload(); getParentPage().close(); } private void findField(IWContext modinfo) { modinfo.setSessionAttribute("field_id", String.valueOf(_fieldID)); getParentPage().setParentToReload(); getParentPage().close(); } private int parseAction(IWContext modinfo) { if (modinfo.isParameterSet(PARAMETER_METHOD)) { _method = Integer.parseInt(modinfo.getParameter(PARAMETER_METHOD)); } if (modinfo.isParameterSet(PARAMETER_ACTION)) { _action = Integer.parseInt(modinfo.getParameter(PARAMETER_ACTION)); } if (modinfo.isParameterSet(PARAMETER_SCORECARD_ID)) { _scorecardID = Integer.parseInt(modinfo.getParameter(PARAMETER_SCORECARD_ID)); } if (modinfo.isParameterSet(PARAMETER_FIELD_ID)) { _fieldID = Integer.parseInt(modinfo.getParameter(PARAMETER_FIELD_ID)); } if (modinfo.isParameterSet(PARAMETER_TEE_COLOR_ID)) { _teeColorID = Integer.parseInt(modinfo.getParameter(PARAMETER_TEE_COLOR_ID)); } if (modinfo.isParameterSet(PARAMETER_MEMBER_ID)) { _memberID = Integer.parseInt(modinfo.getParameter(PARAMETER_MEMBER_ID)); } if (modinfo.isParameterSet(PARAMETER_TOURNAMENT_ID)) { _tournamentID = Integer.parseInt(modinfo.getParameter(PARAMETER_TOURNAMENT_ID)); } return _action; } } }