/*
* Created on Aug 19, 2004
*
*/
package is.idega.idegaweb.marathon.presentation;
import is.idega.idegaweb.marathon.business.RunBusiness;
import is.idega.idegaweb.marathon.data.Participant;
import is.idega.idegaweb.marathon.util.IWMarathonConstants;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.idega.business.IBOLookup;
import com.idega.business.IBOLookupException;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.idegaweb.presentation.StyledIWAdminWindow;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SelectOption;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.user.business.GroupBusiness;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.Group;
import com.idega.user.data.User;
/**
* @author birna
*
*/
public class UpdateRunInfoWindow extends StyledIWAdminWindow {
private static final String PARAMETER_ACTION = "prm_action";
private static final int ACTION_DISPLAY = 1;
private static final int ACTION_SAVE = 2;
//texts
private Text userNameText;
private Text runText;
private Text distanceText;
private Text groupText;
private Text participantNumberText;
private Text chipNumberText;
private Text runTimeText;
private Text chipTimeText;
private Text tshirtText;
private Text payMethodText;
private Text payedAmountText;
private Text teamNameText;
//fields
private Text userNameField;
private Text runField;
private Text distanceField;
private Text groupField;
private SubmitButton submitButton;
private TextInput participantNumberField;
private TextInput chipNumberField;
private TextInput runTimeField;
private TextInput chipTimeField;
private DropdownMenu tShirtField;
private SelectOption small;
private SelectOption medium;
private SelectOption large;
private SelectOption xlarge;
private SelectOption xxlarge;
private SelectOption selectKids;
private SelectOption smallKids;
private SelectOption mediumKids;
private SelectOption largeKids;
private SelectOption xlargeKids;
private DropdownMenu payMethodField;
private SelectOption notPayed;
private SelectOption credit;
private SelectOption debet;
private SelectOption cash;
private TextInput payedAmountField;
private TextInput teamNameField;
private Form f;
public UpdateRunInfoWindow() {
super();
setResizable(true);
}
public void initializeTexts() {
IWContext iwc = IWContext.getInstance();
IWResourceBundle iwrb = getResourceBundle(iwc);
userNameText = new Text(iwrb.getLocalizedString("run_tab.user_name", "User Name"));
runText = new Text(iwrb.getLocalizedString("run_tab.run", "Run"));
distanceText = new Text(iwrb.getLocalizedString("run_tab.distance", "Distance"));
groupText = new Text(iwrb.getLocalizedString("run_tab.group", "Group"));
participantNumberText = new Text(iwrb.getLocalizedString("run_tab.participant_nr", "Participant number"));
chipNumberText = new Text(iwrb.getLocalizedString("run_tab.chip_nr", "Chip number"));
runTimeText = new Text(iwrb.getLocalizedString("run_tab.run_time", "Run time"));
chipTimeText = new Text(iwrb.getLocalizedString("run_tab.chip_time", "Chip time"));
tshirtText = new Text(iwrb.getLocalizedString("run_tab.tshirt", "Tshirt size"));
payMethodText = new Text(iwrb.getLocalizedString("run_tab.pay_method", "Pay method"));
payedAmountText = new Text(iwrb.getLocalizedString("run_tab.payed_amount", "Payed amount"));
teamNameText = new Text(iwrb.getLocalizedString("run_tab.team_name", "Team name"));
}
public void initializeFields() {
IWContext iwc = IWContext.getInstance();
IWResourceBundle iwrb = getResourceBundle(iwc);
String userID = iwc.getParameter("ic_user_id");
String selectedGroupID = iwc.getParameter("selected_ic_group_id");
String runGroupID = iwc.getParameter(IWMarathonConstants.GROUP_TYPE_RUN);
User user = null;
if(userID != null) {
try {
user = getUserBiz().getUser(Integer.parseInt(userID));
if(user != null) {
userNameField = new Text(user.getName());
}
}
catch (NumberFormatException e1) {
e1.printStackTrace();
}
catch (RemoteException e1) {
e1.printStackTrace();
}
}
if(runGroupID != null && !runGroupID.equals("")) {
Group runGroup = null;
try {
runGroup = getGroupBiz().getGroupByGroupID(Integer.parseInt(runGroupID));
}
catch (IBOLookupException e) {
e.printStackTrace();
}
catch (NumberFormatException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
catch (FinderException e) {
e.printStackTrace();
}
runField = new Text(iwrb.getLocalizedString(runGroup.getName(),runGroup.getName()));
}
Participant run = null;
if(userID != null && selectedGroupID != null) {
try {
run = getRunBiz(iwc).getRunObjByUserAndGroup(Integer.parseInt(userID),Integer.parseInt(selectedGroupID));
// Group dis = getRunBiz(iwc).getDistanceByUserID(Integer.parseInt(userID));
// f.addParameter(IWMarathonConstants.GROUP_TYPE_RUN_DISTANCE,dis.getPrimaryKey().toString());
// if(userID != null && runGroupID != null) {
// run = getRunBiz(iwc).getRunObjByUserIDandDistanceID(Integer.parseInt(userID),Integer.parseInt(dis.getPrimaryKey().toString()));
// }
}
catch (Exception re) {
log(re);
}
}
participantNumberField = new TextInput(IWMarathonConstants.PARAMETER_PARTICIPANT_NUMBER);
chipNumberField = new TextInput(IWMarathonConstants.PARAMETER_CHIP_NUMBER);
tShirtField = new DropdownMenu(IWMarathonConstants.PARAMETER_TSHIRT);
SelectOption empty = new SelectOption(iwrb.getLocalizedString("run_reg.select_tee_shirt_size", "Select tee-shirt size"), "-1");
SelectOption selectAdult = new SelectOption(iwrb.getLocalizedString("run_reg.adult_sized", "Adult sizes"), "-1");
small = new SelectOption("- " + iwrb.getLocalizedString("run_reg.small", "Small"), IWMarathonConstants.PARAMETER_TSHIRT_S);
medium = new SelectOption("- " + iwrb.getLocalizedString("run_reg.medium", "Medium"), IWMarathonConstants.PARAMETER_TSHIRT_M);
large = new SelectOption("- " + iwrb.getLocalizedString("run_reg.large", "Large"), IWMarathonConstants.PARAMETER_TSHIRT_L);
xlarge = new SelectOption("- " + iwrb.getLocalizedString("run_reg.xlarge", "Larger"), IWMarathonConstants.PARAMETER_TSHIRT_XL);
xxlarge = new SelectOption("- " + iwrb.getLocalizedString("run_reg.xxlarge", "Largest"), IWMarathonConstants.PARAMETER_TSHIRT_XXL);
tShirtField.addOption(empty);
tShirtField.addOption(selectAdult);
tShirtField.addOption(small);
tShirtField.addOption(medium);
tShirtField.addOption(large);
tShirtField.addOption(xlarge);
tShirtField.addOption(xxlarge);
selectKids = new SelectOption(iwrb.getLocalizedString("run_reg.kids_sized", "Kids sizes"), "-1");
smallKids = new SelectOption("- " + iwrb.getLocalizedString("run_reg.small_kids", "Small"), IWMarathonConstants.PARAMETER_TSHIRT_S + "_kids");
mediumKids = new SelectOption("- " + iwrb.getLocalizedString("run_reg.medium_kids", "Medium"), IWMarathonConstants.PARAMETER_TSHIRT_M + "_kids");
largeKids = new SelectOption("- " + iwrb.getLocalizedString("run_reg.large_kids", "Large"), IWMarathonConstants.PARAMETER_TSHIRT_L + "_kids");
xlargeKids = new SelectOption("- " + iwrb.getLocalizedString("run_reg.xlarge_kids", "Larger"), IWMarathonConstants.PARAMETER_TSHIRT_XL + "_kids");
tShirtField.addOption(selectKids);
tShirtField.addOption(smallKids);
tShirtField.addOption(mediumKids);
tShirtField.addOption(largeKids);
tShirtField.addOption(xlargeKids);
payMethodField = new DropdownMenu(IWMarathonConstants.PARAMETER_PAY_METHOD);
notPayed = new SelectOption(iwrb.getLocalizedString("run_tab.not_payed", "Not payed"), "not_payed");
credit = new SelectOption(iwrb.getLocalizedString("run_tab.credit", "Credit"), "credit");
debet = new SelectOption(iwrb.getLocalizedString("run_tab.debet", "Debet"), "debet");
cash = new SelectOption(iwrb.getLocalizedString("run_tab.cash", "Cash"), "cash");
payMethodField.addOption(notPayed);
payMethodField.addOption(credit);
payMethodField.addOption(debet);
payMethodField.addOption(cash);
payedAmountField = new TextInput(IWMarathonConstants.PARAMETER_AMOUNT);
teamNameField = new TextInput(IWMarathonConstants.PARAMETER_GROUP_NAME);
runTimeField = new TextInput(IWMarathonConstants.PARAMETER_RUN_TIME);
chipTimeField = new TextInput(IWMarathonConstants.PARAMETER_CHIP_TIME);
if(run != null) {
int disID = run.getRunDistanceGroupID();
int grID = run.getRunGroupGroupID();
Group dis = null;
Group gr = null;
try {
if(disID != -1)
dis = getGroupBiz().getGroupByGroupID(disID);
if(grID != -1)
gr = getGroupBiz().getGroupByGroupID(grID);
}
catch (IBOLookupException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
catch (FinderException e) {
e.printStackTrace();
}
if(dis != null) {
distanceField = new Text(iwrb.getLocalizedString(dis.getName(),dis.getName()));
}
if(gr != null) {
groupField = new Text(iwrb.getLocalizedString(gr.getName(),gr.getName()));
}
participantNumberField.setContent(String.valueOf(run.getParticipantNumber()));
chipNumberField.setContent(String.valueOf(run.getChipNumber()));
tShirtField.setSelectedElement(run.getTShirtSize());
payMethodField.setSelectedElement(run.getPayMethod());
payedAmountField.setContent(run.getPayedAmount());
if (run.getPayedAmount() != null && run.getPayMethod() == null) {
payMethodField.setSelectedElement("credit");
}
teamNameField.setContent(run.getRunGroupName());
runTimeField.setContent(String.valueOf(run.getRunTime()));
chipTimeField.setContent(String.valueOf(run.getChipTime()));
}
submitButton = new SubmitButton(iwrb.getLocalizedString("run_tab.save", "Save"),PARAMETER_ACTION,Integer.toString(ACTION_SAVE));
submitButton.setAsImageButton(true);
}
public boolean store(IWContext iwc) {
String payMethod = iwc.getParameter(IWMarathonConstants.PARAMETER_PAY_METHOD);
String payedAmount = iwc.getParameter(IWMarathonConstants.PARAMETER_AMOUNT);
String participantNr = iwc.getParameter(IWMarathonConstants.PARAMETER_PARTICIPANT_NUMBER);
String chipNr = iwc.getParameter(IWMarathonConstants.PARAMETER_CHIP_NUMBER);
String teamName = iwc.getParameter(IWMarathonConstants.PARAMETER_GROUP_NAME);
String runTime = iwc.getParameter(IWMarathonConstants.PARAMETER_RUN_TIME);
String chipTime = iwc.getParameter(IWMarathonConstants.PARAMETER_CHIP_TIME);
String userIDString = iwc.getParameter("ic_user_id");
String groupIDString = iwc.getParameter("selected_ic_group_id");
User user = null;
if(userIDString != null && !userIDString.equals("")) {
try {
user = getUserBiz().getUser(Integer.parseInt(userIDString));
}
catch (NumberFormatException e1) {
e1.printStackTrace();
}
catch (RemoteException e1) {
e1.printStackTrace();
}
}
int userID = -1;
if(user != null) {
userID = Integer.parseInt(user.getPrimaryKey().toString());
}
int groupID = -1;
if(groupIDString != null && !groupIDString.equals("")) {
groupID = Integer.parseInt(groupIDString);
}
try {
getRunBiz(iwc).savePaymentByUserID(userID,payMethod,payedAmount);
getRunBiz(iwc).updateParticipantAndChip(userID,participantNr,chipNr);
getRunBiz(iwc).updateTeamName(userID,groupID,teamName);
getRunBiz(iwc).updateRunAndChipTimes(userID,groupID,runTime,chipTime);
}
catch (Exception e) {
e.printStackTrace();
}
Table t = new Table();
t.add(getResourceBundle(iwc).getLocalizedString("update.successful", "Update successful"));
f.add(t);
return true;
}
public void main(IWContext iwc)throws Exception{
f = new Form();
f.maintainAllParameters();
initializeTexts();
initializeFields();
switch (parseAction(iwc)) {
case ACTION_DISPLAY:
lineUp(iwc);
break;
case ACTION_SAVE:
store(iwc);
break;
}
add(f,iwc);
}
private int parseAction(IWContext iwc) {
if (iwc.isParameterSet(PARAMETER_ACTION)) {
return Integer.parseInt(iwc.getParameter(PARAMETER_ACTION));
}
else {
return ACTION_DISPLAY;
}
}
public void lineUp(IWContext iwc) {
Table t = new Table();
t.setCellpadding(0);
t.setCellspacing(0);
t.setStyleClass("main");
t.add(userNameText + ": ",1,1);
t.add(userNameField,1,2);
t.add(runText + ": ",2,1);
t.add(runField,2,2);
t.setHeight(1,3,8);
t.setHeight(2,3,8);
t.add(distanceText + ": ",1,4);
t.add(distanceField,1,5);
t.add(groupText + ": ",2,4);
t.add(groupField,2,5);
t.setHeight(1,6,8);
t.setHeight(2,6,8);
t.add(payMethodText + ": ",1,7);
t.add(payMethodField, 1,8);
t.add(payedAmountText + ": ", 2,7);
t.add(payedAmountField,2,8);
t.setHeight(1,9,8);
t.setHeight(2,9,8);
t.add(participantNumberText + ": ",1,10);
t.add(participantNumberField,1,11);
t.add(chipNumberText + ": ",2,10);
t.add(chipNumberField,2,11);
t.setHeight(1,12,8);
t.setHeight(2,12,8);
t.add(tshirtText + ": ",1,13);
t.add(tShirtField,1,14);
t.add(teamNameText + ": ",2,13);
t.add(teamNameField,2,14);
t.setHeight(1,15,8);
t.setHeight(2,15,8);
t.add(runTimeText + ": ",1,16);
t.add(runTimeField,1,17);
t.add(chipTimeText + ": ",2,16);
t.add(chipTimeField,2,17);
t.setAlignment(2,18,Table.HORIZONTAL_ALIGN_RIGHT);
t.add(submitButton,2,18);
f.add(t);
}
public String getBundleIdentifier() {
return IWMarathonConstants.IW_BUNDLE_IDENTIFIER;
}
private RunBusiness getRunBiz(IWContext iwc) {
RunBusiness business = null;
try {
business = (RunBusiness) IBOLookup.getServiceInstance(iwc, RunBusiness.class);
}
catch (IBOLookupException e) {
business = null;
}
return business;
}
private UserBusiness getUserBiz() throws IBOLookupException {
UserBusiness business = (UserBusiness) IBOLookup.getServiceInstance(getIWApplicationContext(), UserBusiness.class);
return business;
}
private GroupBusiness getGroupBiz() throws IBOLookupException {
GroupBusiness business = (GroupBusiness) IBOLookup.getServiceInstance(getIWApplicationContext(), GroupBusiness.class);
return business;
}
}