UserOverviewView.java 4.39 KB
package fi.codecrew.moya.web.cdiview.user;

import java.io.IOException;
import java.util.ArrayList;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
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.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.helpers.UserOverviewItem;

@Named
@ConversationScoped
public class UserOverviewView extends GenericCDIView {
	private static final long serialVersionUID = -9115983838324313414L;

	@Inject
	private UserCartView userCartView;

	@EJB
	private CardTemplateBeanLocal cardTemplateBean;

	@EJB
	private UserBeanLocal userBean;
	
	private ListDataModel<UserOverviewItem> userOverviewItems = null;

	private static final Logger logger = LoggerFactory.getLogger(UserOverviewView.class);

	public void initView() {
		if (userOverviewItems == null) {
			ArrayList<UserOverviewItem> ovlist = new ArrayList<UserOverviewItem>();
			for (EventUser eu : getUserCartView().getUsercart()) {
				PrintedCard pc = cardTemplateBean.checkPrintedCard(eu);
				UserOverviewItem uoi = new UserOverviewItem(eu, pc, I18n.get("rejectcard.mailSubject"), I18n.get("rejectcard.mailBody"));
				ovlist.add(uoi);
			}
			userOverviewItems = new ListDataModel<>(ovlist);
			
		super.beginConversation();
		}
	}
	
	public ListDataModel<UserOverviewItem> getUserOverviewItems() {
		return userOverviewItems;
	}

	public void rejectCard()
	{
		logger.info("rejectCard() start");
		UserOverviewItem cardItem = null;
		try {
			cardItem = userOverviewItems.getRowData();
			logger.info("rejectCard() cardItem {}", cardItem);
		}catch(Exception ex) {
			logger.info(ex.getMessage());
		}
		if(cardItem != null) {
			logger.info("rejectCard(): Rejecting card {}", cardItem.getPrintedCard());

			PrintedCard card = cardItem.getPrintedCard();
			
			if(card != null) {
			
				MailMessage mail = null;
				if(cardItem.isSendRejectionMail()) {
					mail = new MailMessage();
					mail.setToAddress(cardItem.getRejectionMsgToAddr());
					mail.setToName(cardItem.getRejectionMsgToName());
					mail.setTo(card.getUser().getUser());
					mail.setSubject(cardItem.getRejectionMsgSubject());
					mail.setMessage(cardItem.getRejectionMsgBody());
				}
				
				card = userBean.rejectPrintedCard(card, mail);
				cardItem.setPrintedCard(card);
				logger.info("rejectCard(): Rejected card {}, state {}", card, card.getCardState() );
			}
		}
		//		cardTemplateBean.setCardState(cardItem.getPrintedCard(), CardState.REJECTED);
	}

	public void acceptCard()
	{
		UserOverviewItem cardItem = userOverviewItems.getRowData();

		PrintedCard card = cardItem.getPrintedCard();
		card.setCardState(CardState.VALIDATED);
		card = cardTemplateBean.saveCard(card);
		cardItem.setPrintedCard(card);

		logger.info("Accepted card: {}", cardItem.getPrintedCard());
	}

	public String crop()
	{
		UserOverviewItem cardItem = userOverviewItems.getRowData();
		
		if (cardItem == null || cardItem.getCroppedImage() == null )
			return null;

		logger.info("Cropped image {}x{}", cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop());
		logger.info("Cropped data bytesize {}, type {}", cardItem.getCroppedImage().getBytes().length, cardItem.getCroppedImage().getOriginalFilename());

		try {
			UserImage newImage =
					userBean.saveCroppedImage(cardItem.getEventUser().getCurrentImage(),
							cardItem.getCroppedImage().getLeft(), cardItem.getCroppedImage().getTop(),
							cardItem.getCroppedImage().getWidth(), cardItem.getCroppedImage().getHeight());

			cardItem.setEventUser(userBean.getEventUser(newImage.getUser(), false));
		} catch (IOException e) {
			logger.info("Error converting image", e);
			super.addFaceMessage("user.errorConvertingImage");
		}
		return null;
	}
	
	public void setUserOverviewItems(ListDataModel<UserOverviewItem> userOverviewItems) {
		this.userOverviewItems = userOverviewItems;
	}

	public UserCartView getUserCartView() {
		return userCartView;
	}

	public void setUserCartView(UserCartView userCartView) {
		this.userCartView = userCartView;
	}
}