package com.tootsville.joshua.client.util;

/**
 * 
 * WRITEME: Document this type. theys Dec 11, 2009
 * 
 * @author <a href="mailto:theys@resinteractive.com">Tim Heys</a>
 * 
 */
public class User extends Person {
	public static final int STAFF_LEVEL_STAFF_MEMBER = 0;
	private String ageGroup = "";
	private String approvedDate = "";
	private int basic8 = 0;
	private String birthDate = "";
	private String [] buddyList = { "" };
	private boolean isApproved = false;
	private boolean isPaid = false;
	private String lastActive = "";
	private String lastZone = "";
	private String nuts = "0";
	private String referer = "Tootsville";
	private String registeredAt = "N/A";
	private int staffLevel = 0;
	private String status = "";
	private Enrolment [] userEnrolments = {};
	private String userName = "";

	public String getAgeGroup () {
		// default getter (theys, Sep 30, 2009)
		return ageGroup;
	}

	public String getApprovedDate () {
		// default getter (theys, Sep 30, 2009)
		return approvedDate;
	}

	public int getBasic8 () {
		// default getter (theys, Sep 30, 2009)
		return basic8;
	}

	public String getBirthDate () {
		// default getter (theys, Sep 30, 2009)
		return birthDate;
	}

	public String [] getBuddyList () {
		// default getter (theys, Sep 30, 2009)
		return buddyList;
	}

	public String getLastActive () {
		// default getter (theys, Sep 30, 2009)
		return lastActive;
	}

	public String getLastZone () {
		// default getter (theys, Sep 30, 2009)
		return lastZone;
	}

	public String getNuts () {
		// default getter (theys, Sep 30, 2009)
		return nuts;
	}

	public String getReferer () {
		// default getter (theys, Sep 30, 2009)
		return referer;
	}

	/**
	 * @return the registeredAt
	 */
	public String getRegisteredAt () {
		return registeredAt;
	}

	public int getStaffLevel () {
		// default getter (theys, Sep 30, 2009)
		return staffLevel;
	}

	public String getStaffLevelTitle () {
		String title;
		switch (getStaffLevel ()) {
		case 0:
			title = "None";
			break;
		case 1:
			title = "Member";
			break;
		case 2:
			title = "Moderator";
			break;
		case 3:
			title = "Account Service";
			break;
		case 4:
			title = "Designer";
			break;
		case 8:
			title = "Developer";
			break;
		default:
			title = "Staff-" + getStaffLevel ();
		break;
		}
		return title;
	}

	public String getStatus () {
		// default getter (theys, Sep 30, 2009)
		return status;
	}

	public Enrolment [] getUserEnrolments () {
		// default getter (theys, Oct 5, 2009)
		return userEnrolments;
	}

	public String getUserName () {
		// default getter (theys, Sep 30, 2009)
		return userName;
	}

	public boolean hasStaffLevel (final int staffLevelRequired) {
		return getStaffLevel () >= staffLevelRequired;
	}

	public boolean isApproved () {
		// default getter (theys, Sep 30, 2009)
		return isApproved;
	}

	public boolean isPaid () {
		// default getter (theys, Sep 30, 2009)
		return isPaid;
	}

	public void setAgeGroup (final String ageBracket) {
		// default setter (theys, Sep 30, 2009)
		ageGroup = ageBracket;
	}

	public void setApproved (final boolean isApproved1) {
		// default setter (theys, Sep 30, 2009)
		isApproved = isApproved1;
	}

	public void setApprovedDate (final String approvedDate1) {
		// default setter (theys, Sep 30, 2009)
		approvedDate = approvedDate1;
	}

	public void setBasic8 (final int basic81) {
		// default setter (theys, Sep 30, 2009)
		basic8 = basic81;
	}

	public void setBirthDate (final String date) {
		// default setter (theys, Sep 30, 2009)
		birthDate = date;
	}

	public void setBuddyList (final String [] buddyList1) {
		// default setter (theys, Sep 30, 2009)
		buddyList = buddyList1;
	}

	public void setLastActive (final String lastActive1) {
		// default setter (theys, Sep 30, 2009)
		lastActive = lastActive1;
	}

	public void setLastZone (final String lastZone1) {
		// default setter (theys, Sep 30, 2009)
		lastZone = lastZone1;
	}

	public void setNuts (final String nuts1) {
		// default setter (theys, Sep 30, 2009)
		nuts = nuts1;
	}

	public void setPaid (final boolean isPaid1) {
		// default setter (theys, Sep 30, 2009)
		isPaid = isPaid1;
	}

	/**
	 * 
	 * WRITEME: Document this field. theys Dec 11, 2009
	 * 
	 * @param referer1
	 */
	public void setReferer (final String referer1) {
		// default setter (theys, Sep 30, 2009)
		referer = referer1;
	}

	/**
	 * @param registeredAt1 the registeredAt to set
	 */
	public void setRegisteredAt (final String registeredAt1) {
		if (!"null".equals (registeredAt1)) {
			registeredAt = registeredAt1;
		}
	}

	public void setStaffLevel (final int staffLevel1) {
		// default setter (theys, Sep 30, 2009)
		staffLevel = staffLevel1;
	}

	public void setStatus (final String status1) {
		// default setter (theys, Sep 30, 2009)
		status = status1;
	}

	public void setUserEnrolments (final Enrolment [] userEnrolments1) {
		// default setter (theys, Oct 5, 2009)
		userEnrolments = userEnrolments1;
	}

	public void setUserName (final String userName1) {
		// default setter (theys, Sep 30, 2009)
		userName = userName1;
	}

}
