CreditTransferView.java 3.48 KB
package fi.codecrew.moya.web.cdiview.user;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;

import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.EventPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named
@ConversationScoped
public class CreditTransferView extends GenericCDIView {

	private static final long serialVersionUID = -4254396884077758765L;
	private List<EventUserWrapper> users;
	@EJB
	private UserBeanLocal userbean;
	@EJB
	private EventBeanLocal eventbean;

	private List<LanEvent> events;
	private LanEvent sourceEvent;
	private BigDecimal totalCredits;
	private BigDecimal totalTransferred;

	public void init(List<EventUser> users) {

		ArrayList<EventUserWrapper> wrap = new ArrayList<EventUserWrapper>();
		for (EventUser u : users) {
			wrap.add(new EventUserWrapper(u));
		}
		this.users = wrap;
		events = eventbean.getCurrentEvent().getOrganiser().getEvents();

	}

	public String selectEvent() {
		BigDecimal total = BigDecimal.ZERO;
		if (sourceEvent != null && !eventbean.getCurrentEvent().equals(sourceEvent))
		{
			for (EventUserWrapper u : users) {
				u.setSourceEventuser(userbean.getOtherEventsEventuser(u.getUser().getUser(), sourceEvent));
				if (u.getSourceEventuser() != null) {
					u.setCredits(u.getSourceEventuser().getAccountBalance());
					total = total.add(u.getCredits());
				} else {
					u.setCredits(BigDecimal.ZERO);
				}
			}
		}
		this.totalCredits = total;
		return null;
	}

	public String commitTransfer() {
		List<User> transfer = new ArrayList<User>();
		for (EventUserWrapper u : users) {
			transfer.add(u.getUser().getUser());
		}

		totalTransferred = userbean.transferAccountSaldoFromPreviousEvent(transfer, sourceEvent);
		users = null;
		return null;
	}

	public boolean isTransferPermissions() {
		return super.hasPermission(EventPermission.MANAGE_EVENT);
	}

	public List<LanEvent> getEvents() {
		return events;
	}

	public void setEvents(List<LanEvent> events) {
		this.events = events;
	}

	public LanEvent getSourceEvent() {
		return sourceEvent;
	}

	public void setSourceEvent(LanEvent sourceEvent) {
		this.sourceEvent = sourceEvent;
	}

	public List<EventUserWrapper> getUsers() {
		return users;
	}

	public void setUsers(List<EventUserWrapper> users) {
		this.users = users;
	}

	public BigDecimal getTotalCredits() {
		return totalCredits;
	}

	public void setTotalCredits(BigDecimal totalCredits) {
		this.totalCredits = totalCredits;
	}

	public BigDecimal getTotalTransferred() {
		return totalTransferred;
	}

	public void setTotalTransferred(BigDecimal totalTransferred) {
		this.totalTransferred = totalTransferred;
	}

	public static class EventUserWrapper {
		private final EventUser user;
		private BigDecimal credits = BigDecimal.ZERO;
		private EventUser sourceEventuser;

		private EventUserWrapper(EventUser u) {
			super();
			this.user = u;
		}

		public EventUser getUser() {
			return user;
		}

		public BigDecimal getCredits() {
			return credits;
		}

		public void setCredits(BigDecimal credits) {
			this.credits = credits;
		}

		public EventUser getSourceEventuser() {
			return sourceEventuser;
		}

		public void setSourceEventuser(EventUser sourceEventuser) {
			this.sourceEventuser = sourceEventuser;
		}
	}
}