DiscountBean.java 2.32 KB
package fi.codecrew.moya.beans;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import fi.codecrew.moya.facade.DiscountFacade;
import fi.codecrew.moya.model.Discount;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Role;

/**
 * Session Bean implementation class DiscountBean
 */
@Stateless
@LocalBean
public class DiscountBean implements DiscountBeanLocal {

	@EJB
	private DiscountFacade discountfacade;
	
	@EJB
	private UserBean userBean;

	public DiscountBean() {
	}

	@Override
	public Discount save(Discount discount) {
		Discount ret = discountfacade.merge(discount);
		// productfacade.evictClass();
		// discountfacade.evictClass();
		return ret;
	}

	@Override
	public List<Discount> getActiveDiscountsByProduct(Product product, BigDecimal quantity, Calendar time, EventUser user) {
		
		 ArrayList<Discount> ret = new ArrayList<Discount>();
	        for (Discount d : product.getDiscounts()) {
	            if (d.isActive() &&
	                    (d.getValidTo() == null || d.getValidTo().after(time)) &&
	                    (d.getValidFrom() == null || d.getValidFrom().before(time)) &&
	                    (d.getAmountMax().compareTo(BigDecimal.ZERO) == 0 || quantity.compareTo(d.getAmountMax()) <= 0) &&
	                    (d.getAmountMin().compareTo(BigDecimal.ZERO) == 0 || quantity.compareTo(d.getAmountMin()) >= 0)) {

	                // plaah, there is role, must do stuff
	                if (d.getRole() != null) {
	                    for (Role role :  userBean.localFindUsersRoles(user)) {
	                        if (d.getRole().equals(role)) {
	                            ret.add(d);
	                        }
	                    }
	                } else {
	                    ret.add(d);
	                }
	            }
	        }
	        return ret;
		
	}
	
	

	// @Override
	// public Discount create(String discountdesc) {
	// LanEvent ev = eventbean.getCurrentEvent();
	// Discount ret = new Discount(ev);
	// ret.setShortdesc(discountdesc);
	// ev.getDiscounts().add(ret);
	// discountfacade.flush();
	//
	// // discountfacade.create(ret);
	// // eventfacade.evict(eventbean.getCurrentEvent());
	//
	// return ret;
	//
	// }

}