package is.idega.idegaweb.marathon.presentation.user; import is.idega.idegaweb.marathon.business.ConverterUtility; import is.idega.idegaweb.marathon.data.Charity; import is.idega.idegaweb.marathon.data.Participant; import is.idega.idegaweb.marathon.data.Pledge; import is.idega.idegaweb.marathon.data.PledgeHome; import is.idega.idegaweb.marathon.data.Run; import is.idega.idegaweb.marathon.data.Year; import is.idega.idegaweb.marathon.presentation.RunBlock; import java.rmi.RemoteException; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import javax.ejb.FinderException; import com.idega.data.IDOLookup; import com.idega.presentation.IWContext; import com.idega.presentation.Layer; import com.idega.presentation.Table2; import com.idega.presentation.TableCell2; import com.idega.presentation.TableRow; import com.idega.presentation.TableRowGroup; import com.idega.presentation.text.Heading1; import com.idega.presentation.text.Heading2; import com.idega.presentation.text.Text; import com.idega.user.data.Group; import com.idega.util.IWTimestamp; public class UserPledges extends RunBlock { private final static String KEY_PREFIX = "userPledges."; public void main(IWContext iwc) throws Exception { if (!iwc.isLoggedOn()) { add(new Text("No user logged on...")); return; } Layer layer = new Layer(Layer.DIV); layer.setStyleClass("listElement"); layer.setID("userPledges"); Layer headerLayer = new Layer(Layer.DIV); headerLayer.setStyleClass("header"); layer.add(headerLayer); Heading1 heading = new Heading1(this.iwrb.getLocalizedString(KEY_PREFIX + "user_pledges", "User pledges")); headerLayer.add(heading); Heading2 subheading = new Heading2( this.iwrb .getLocalizedString(KEY_PREFIX + "user_pledges_subheading", "Here you can see the amounts people have pledged on your behalf.")); headerLayer.add(subheading); layer.add(getPledgeTable(iwc)); add(layer); } private Table2 getPledgeTable(IWContext iwc) { Table2 table = new Table2(); table.setStyleClass("listTable"); table.setStyleClass("ruler"); table.setWidth("100%"); table.setCellpadding(0); table.setCellspacing(0); Collection pledges = getPledges(iwc); Collection runRegistrations = null; try { runRegistrations = getRunBusiness(iwc).getParticipantsByUser( iwc.getCurrentUser()); } catch (Exception e) { e.printStackTrace(); } if (runRegistrations != null && !runRegistrations.isEmpty()) { Iterator regIt = runRegistrations.iterator(); while (regIt.hasNext()) { Participant participant = (Participant) regIt.next(); Group yearGroup = participant.getRunYearGroup(); Year year = null; Run run = null; try { year = ConverterUtility.getInstance().convertGroupToYear( yearGroup); run = ConverterUtility.getInstance().convertGroupToRun( participant.getRunTypeGroup()); } catch (FinderException e) { // Run not found } boolean showYear = false; if (year != null && run != null) { if (run.getCurrentRegistrationYear() != null) { if (run.getCurrentRegistrationYear().equals(year)) { showYear = true; } } else { IWTimestamp now = new IWTimestamp(); if (year.getName().equals(now.getDateString("yyyy"))) { showYear = true; } } } if (year != null && showYear && year.isSponsoredRun() && (participant.isSponsoredRunner() || participant .isCustomer()) && participant.getCharityId() != null) { Pledge pledge = createPledge(); /** * @TODO Get info from bank about how this is supposed to be and then insert code again. */ /*if (pledge != null) { pledge.setCardholderName(getResourceBundle() .getLocalizedString(KEY_PREFIX + "sponsor", "Sponsor")); int distanceInKms = participant.getRunDistanceGroup() .getDistanceInKms(); if (participant.isSponsoredRunner()) { pledge.setAmountPayed(String.valueOf(year .getPledgedBySponsorGroupPerKilometer() * distanceInKms)); } else if (participant.isCustomer()) { pledge.setAmountPayed(String.valueOf(year .getPledgedBySponsorPerKilometer() * distanceInKms)); } pledge.setOrganizationalID(participant.getCharityId()); pledges.add(pledge); }*/ } } } TableRowGroup group = table.createHeaderRowGroup(); TableRow row = group.createRow(); TableCell2 cell = row.createHeaderCell(); cell.setStyleClass("firstColumn"); cell.setStyleClass("pledgesPledger"); cell.add(new Text(getResourceBundle().getLocalizedString( KEY_PREFIX + "pledger", "Pledger"))); cell = row.createHeaderCell(); cell.setStyleClass("pledgesCharity"); cell.add(new Text(getResourceBundle().getLocalizedString( KEY_PREFIX + "charity", "Charity"))); cell = row.createHeaderCell(); cell.setStyleClass("pledgesDate"); cell.add(new Text(getResourceBundle().getLocalizedString( KEY_PREFIX + "date", "Date"))); cell = row.createHeaderCell(); cell.setStyleClass("lastColumn"); cell.setStyleClass("pledgesAmount"); cell.add(new Text(getResourceBundle().getLocalizedString( KEY_PREFIX + "amount", "Amount"))); group = table.createBodyRowGroup(); int iRow = 1; Iterator iter = pledges.iterator(); while (iter.hasNext()) { Pledge userPledge = (Pledge) iter.next(); boolean showEntry = true; String timeStampString = ""; if (userPledge.getPaymentTimestamp() != null) { IWTimestamp created = new IWTimestamp(userPledge .getPaymentTimestamp()); IWTimestamp now = new IWTimestamp(); if (now.getYear() != created.getYear()) { showEntry = false; } timeStampString = created.getLocaleDate(iwc.getCurrentLocale(), IWTimestamp.SHORT); } if (showEntry) { row = group.createRow(); if (iRow == 1) { row.setStyleClass("firstRow"); } else if (!iter.hasNext()) { row.setStyleClass("lastRow"); } cell = row.createCell(); cell.setStyleClass("firstColumn"); cell.setStyleClass("pledgesPledger"); cell.add(new Text(userPledge.getCardholderName())); String charityString = ""; try { Charity charity = getCharityBusiness(iwc) .getCharityByOrganisationalID( userPledge.getOrganizationalID()); charityString = charity.getName(); } catch (Exception e) { // charity not found System.err.println(e.getMessage()); } cell = row.createCell(); cell.setStyleClass("pledgesCharity"); cell.add(new Text(charityString)); cell = row.createCell(); cell.setStyleClass("pledgesDate"); cell.add(new Text(timeStampString)); cell = row.createCell(); cell.setStyleClass("lastColumn"); cell.setStyleClass("pledgesAmount"); cell.add(new Text( formatAmount(iwc, userPledge.getAmountPayed()))); boolean addNonBrakingSpace = true; if (addNonBrakingSpace) { cell.add(Text.getNonBrakingSpace()); } if (iRow % 2 == 0) { row.setStyleClass("evenRow"); } else { row.setStyleClass("oddRow"); } iRow++; } } return table; } private Pledge createPledge() { Pledge pledge = null; try { PledgeHome pledgeHome = (PledgeHome) IDOLookup .getHome(Pledge.class); pledge = pledgeHome.create(); } catch (Exception e) { e.printStackTrace(); } return pledge; } protected Collection getPledges(IWContext iwc) { try { Collection pledges = getPledgeBusiness(iwc).getPledgesForUser( iwc.getCurrentUserId()); if (pledges == null) { pledges = new ArrayList(); } return pledges; } catch (RemoteException re) { log(re); return new ArrayList(); } } private String formatAmount(IWContext iwc, String amount) { try { return formatAmount(iwc, Float.parseFloat(amount)); } catch (Exception e) { e.printStackTrace(); return amount; } } private String formatAmount(IWContext iwc, float amount) { return NumberFormat.getInstance(iwc.getCurrentLocale()).format(amount); } }