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

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

import org.primefaces.event.SelectEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.codecrew.moya.beans.BarcodeBeanLocal;
import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent;
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 InfoView infoView;

	@Inject
	private ReaderNameContainer namecontainer;

	@EJB
	private BarcodeBeanLocal barcodeBean;

	@EJB
	private CardTemplateBeanLocal cardBean;

	@EJB
	private PermissionBeanLocal permBean;

	@EJB
	private PlaceBeanLocal placeBean;

	@EJB
	private UserBeanLocal userbean;

	@EJB
	private transient PlaceGroupBeanLocal placegroupBean;

	//private String searchBarcode = "";

	

	private ListDataModel<GroupMembership> memberlist = null;

	public void initView() {
		super.beginConversation();
	}
/*
	public String getSearchBarcode() {
		return searchBarcode;
	}

	public void setSearchBarcode(String searchBarcode) {
		this.searchBarcode = searchBarcode;
	}

	public List<String> matchBarcode(String matchWhat) {
		List<GroupMembership> gms = placeBean.matchGroupMembershipsByInviteToken(matchWhat);
		ArrayList<String> arl = new ArrayList<>();
		for (GroupMembership gm : gms) {
			arl.add(gm.getInviteToken());
		}

		return arl;
	}

	
*/
	public void changeUser(SelectEvent event) {
		
		if (infoView.getMultiSearchUser() != null) {
			super.navihandler.redirectNavigation("incoming.jsf?userid=" + infoView.getMultiSearchUser().getUser().getId());
			infoView.setMultiSearchUser(null);
		}
	}

	private boolean initialized = false;

	public void initPrintCardView() {
		memberlist = null;
		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 Integer getReaderId() {
		return namecontainer.getReaderId();
	}

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

	public void polledRead() {


		ReaderEvent event = readerView.getReaderEvent();
		
		if(event == null)
			return;

		logger.debug(":got.code:");

		EventUser user = event.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("incoming.jsf?userid=" + user.getUser().getId());
			}

		} else {

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

	}

	/*
	public String selectUser() {
		
		ReaderEvent event = readerView.getReaderEvent();
		
		if(event == null)
			return null;
		
		EventUser user = event.getUser();
		memberlist = null;

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

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

		userview.setUser(user);
		//userview.prepareCardDownload();
		return "incoming";
	} */

	public CardState getPrintedStatus() {
		PrintedCard card = cardBean.checkPrintedCard(userview.getUser());
		CardState ret = null;
		if (card != null) {
			ret = card.getCardState();
		}
		return ret;
	}

	public String printCard() {
		PrintedCard card = cardBean.checkPrintedCard(userview.getUser());
		card.setCardState(CardState.VALIDATED);
		cardBean.saveCard(card);
		return null;
	}


	public ListDataModel<GroupMembership> getGroupMemberships() {
		memberlist = new ListDataModel<GroupMembership>(
				placegroupBean.getMembershipsAndCreations(userview.getUser()));
		return memberlist;
	}

	public String givePlace() {
		GroupMembership row = memberlist.getRowData();
		if (row != null) {
			placegroupBean.markGrouMembershipEntered(row);
			memberlist = null;
		}
		return null;
	}

	public String ungivePlace() {
		GroupMembership row = memberlist.getRowData();
		if (row != null) {
			placegroupBean.markGrouMembershipNotEntered(row);
			memberlist = null;
		}
		return null;
	}

	

	
	

}