TicketBean.java 3.55 KB
/*
 * Copyright Codecrew Ry
 * 
 * All rights reserved.
 * 
 * This license applies to any software containing a notice placed by the 
 * copyright holder. Such software is herein referred to as the Software. 
 * This license covers modification, distribution and use of the Software. 
 * 
 * Any distribution and use in source and binary forms, with or without 
 * modification is not permitted without explicit written permission from the 
 * copyright owner. 
 * 
 * A non-exclusive royalty-free right is granted to the copyright owner of the 
 * Software to use, modify and distribute all modifications to the Software in 
 * future versions of the Software. 
 * 
 */
package fi.codecrew.moya.beans;

import com.pdfjet.*;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.enums.apps.SpecialPermission;
import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.PlaceGroupFacade;
import fi.codecrew.moya.model.*;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.utilities.BarcodeUtils;
import fi.codecrew.moya.utilities.moyamessage.MoyaEventType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.Stateless;
import java.io.OutputStream;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 * Session Bean implementation class PlaceGroupBean
 */
@Stateless
@DeclareRoles({ SpecialPermission.S_USER, MapPermission.S_BUY_PLACES, MapPermission.S_MANAGE_MAPS })
public class TicketBean implements TicketBeanLocal {

	private static final Logger logger = LoggerFactory.getLogger(TicketBean.class);
	private static final int YSTART = 30;
	@EJB
	private EventBeanLocal eventbean;

	@EJB
	private BarcodeBeanLocal barcodeBean;

	@EJB
	private GroupMembershipFacade gmemfacade;
	@EJB
	private LoggingBeanLocal loggingbean;

	@EJB
	private PermissionBeanLocal permbean;

	@EJB
	private PlaceGroupFacade pgfacade;
	@EJB
	private EventUserFacade eventuserfacade;
	@EJB
	private UtilBean utilBean;

	/**
	 * Default constructor.
	 */
	public TicketBean() {
		// TODO Auto-generated constructor stub
	}


	@Override
	public List<GroupMembership> findMembershipPrintlistForUser(EventUser user) {

		// TODO: get from placefacade. Sometimes it's easier to think loops then facadequeries

		boolean printOnlyOwn = eventbean.getPropertyBoolean(LanEventPropertyKey.PLACECODE_PRINT_ONLY_OWN);

		List<GroupMembership> gmems = gmemfacade.findMemberOrCreator(user);


		List<GroupMembership> ret = new ArrayList<>();
		for(GroupMembership gm : gmems) {

			if(gm.getPlaceReservation() != null) {

				// places with no user belongs to creator
				if(gm.getUser() == null || !printOnlyOwn) {
					ret.add(gm);
				} else if(user.equals(gm.getUser())) {
					ret.add(gm);
				}

			}
		}

		return ret;

	}

	@Override
	public void sendTicketEmail(EventUser user , String url) {

		String token = barcodeBean.getUserLongTextCode(user);

		MailMessage msg = new MailMessage();
		msg.setSubject(eventbean.getPropertyString(LanEventPropertyKey.ETICKETMAIL_SUBJECT));

		String formatUrl = MessageFormat.format(url, token);
		logger.info("Sending eticket url {}", formatUrl);

		msg.setMessage(MessageFormat.format(eventbean.getPropertyString(LanEventPropertyKey.ETICKETMAIL_CONTENT), formatUrl, user.getUser().getWholeName()));
		msg.setToAddress(user.getEmail());
		utilBean.sendMail(msg);
	}


}