IncomingView.java 3.13 KB
package fi.codecrew.moya.web.flow;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer;
import fi.codecrew.moya.web.cdiview.reader.ReaderView;
import fi.codecrew.moya.web.cdiview.user.UserView;

@Named
@ConversationScoped
public class IncomingView extends GenericCDIView {

	private static final long serialVersionUID = 802344850073689859L;

	private static final Logger logger = LoggerFactory.getLogger(IncomingView.class);
	@Inject
	@SelectedUser
	private transient EventUser user;

	@Inject
	private UserView userview;

	@Inject
	private ReaderView readerView;
	
	@Inject
	private ReaderNameContainer namecontainer;
	
	@EJB
	private CardTemplateBeanLocal cardBean;
	
	@EJB
	private PermissionBeanLocal permBean;
	
	 

	public void initView() {
		super.beginConversation();
	}

	private boolean initialized = false;

	public void initPrintCardView() {
		if(!permbean.hasPermission(UserPermission.MODIFY) || namecontainer.getReaderId() == null || namecontainer.getReaderId() <= 0) {
			super.navihandler.redirectNavigation("index.jsf");
		}
		
		if (!initialized) {
			logger.debug("INITIALIZING!!!!");
			initializePoller();
			initialized = true;
			super.beginConversation();
		}
	}

	public String saveUser() {
		logger.info("Saving user in incomingView");
		userview.saveUser();
		return null;
	}

	public void initializePoller() {
		readerView.initializeForPolling();
	}

	public void polledRead() {

		if (!readerView.isNewBarcodes()) {
			return;
		}
		
		logger.debug(":Barcode:");
		
		EventUser user = readerView.getUser();
		if (user != null) {
			if (!user.equals(userview.getUser())) {
				logger.info("found user {}, redirecting", user.getNick());
				userview.setUser(user);
				// userview.prepareCardDownload();
				// PURKKAAA, sori tästä, koitan refaktoroida kauniiksi ku kerkiän -TKwtf
				super.navihandler.redirectNavigation("printCard.jsf?userid="+user.getUser().getId());
			}
			
		} else {

			// still there, it must be "clean" barcode
			if (userview.getUser() != null) {
				userview.attachBarcodeToCard();
				
			}
		}

		readerView.pollingBarcodeHandled();
	}

	public String selectUser() {
		EventUser user = readerView.getUser();

		if (user == null) {
			logger.debug("got no user from barcode");
			return null;
		}

		logger.debug("got user from barcode");

		userview.setUser(user);
		//userview.prepareCardDownload();
		return "printCard";
	}
	
	
	public String printCard() {
		PrintedCard card = cardBean.checkPrintedCard(user);
		card.setCardState(CardState.VALIDATED);
		cardBean.saveCard(card);
		return null;
	}

}