LicenseView.java 3.47 KB
package fi.codecrew.moya.web.cdiview.license;

import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;

import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LicenseBeanLocal;
import fi.codecrew.moya.beans.LicenseBeanLocal.GenerationException;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ProductBeanLocal;
import fi.codecrew.moya.enums.apps.LicensePermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LicenseCode;
import fi.codecrew.moya.model.LicenseTarget;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named
@ConversationScoped
public class LicenseView extends GenericCDIView {

	private static final long serialVersionUID = -8346420143750551402L;

	private EventUser currentUser;
	
	@EJB
	private PermissionBeanLocal permissionBean;
	
	@EJB
	private EventBeanLocal eventBean;

	@EJB
	private LicenseBeanLocal licenseBean;
	
	@EJB
	private ProductBeanLocal productBean;

	private ListDataModel<LicenseTarget> licenses;
	private  ListDataModel<LicenseCode> licenseCodes;

	private LicenseTarget currentLicense;

	public void initAdminView() {

		if (super.requirePermissions(LicensePermission.MANAGE)) {
			if (licenses == null) {
				this.currentLicense = new LicenseTarget();
				this.currentLicense.setEvent(eventBean.getCurrentEvent());
				this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findAll(eventBean.getCurrentEvent()));
				this.beginConversation();
			}
		}
	}

	public void initUserView() {
		if (super.requirePermissions(LicensePermission.VIEW_OWN_CODES)) {
			if (licenseCodes == null) {
				currentUser = permissionBean.getCurrentUser();
				this.licenseCodes = new ListDataModel<LicenseCode>(currentUser.getUser().getLicenseCodes());
				this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findUnopenedUserGames(currentUser));
				this.beginConversation();
			}
		}
	}

	public String saveCurrentLicense() {
		licenseBean.saveOrCreateLicense(currentLicense);
		this.licenses = new ListDataModel<LicenseTarget>(licenseBean.findAll(eventBean.getCurrentEvent()));
		return null;
	}


	public String editSelected() {
		return null;
	}

	public String openSelectedCode() {
		
		if(this.licenses != null && this.licenses.isRowAvailable()) {
			LicenseTarget license = this.licenses.getRowData();
			
			try {
				LicenseCode code = licenseBean.createAndAccessCode(license, currentUser.getUser());
				
				
			} catch(GenerationException x) {
				this.addFaceMessage("game.out");				
			}
			licenseCodes = null;
			initUserView();
		}
		return null;
	}

	public boolean isNoLicenseCodes() {
		return (getLicenseCodes().getRowCount() <= 0);
	}
	public boolean isNoLicenses() {
		return (getLicenses().getRowCount() <= 0);
	}

	public ListDataModel<LicenseCode> getLicenseCodes() {
		return licenseCodes;
	}

	public void setLicenseCodes(ListDataModel<LicenseCode> licenseCodes) {
		this.licenseCodes = licenseCodes;
	}

	public ListDataModel<LicenseTarget> getLicenses() {
		return licenses;
	}

	public void setLicenses(ListDataModel<LicenseTarget> licenses) {
		this.licenses = licenses;
	}

	public LicenseTarget getCurrentLicense() {
		return currentLicense;
	}

	public void setCurrentLicense(LicenseTarget currentLicense) {
		this.currentLicense = currentLicense;
	}
	
	public List<Product> getProductsForLicenses() {
		return productBean.findPlaceProducts();
	}

}