PlacegroupView.java 3.78 KB
package fi.codecrew.moya.web.cdiview.map;

import java.util.ArrayList;
import java.util.List;

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

import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceGroup;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named("placeGroupView")
@ConversationScoped
public class PlacegroupView extends GenericCDIView {

	private static final long serialVersionUID = -3934253910818396155L;

	// @Inject
	// private UserView userview;
	@Inject
	@SelectedUser
	private EventUser user;

	@EJB
	private transient PlaceGroupBeanLocal placegroupBean;

	private Place place;
	private PlaceGroup group;

	private transient ListDataModel<PlaceGroup> placegroups;
	private transient ListDataModel<Place> placelist;

	private transient ListDataModel<GroupMembership> memberlist;

	public String editGroup() {
		setGroup(placegroups.getRowData());
		setPlacelist(new ListDataModel<Place>(group.getPlaces()));

		return "/place/editGroup";
	}

	public boolean canModify(GroupMembership row) {
		boolean ret = false;
		if (row != null
				&& (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean
						.hasPermission(MapPermission.MANAGE_OTHERS))) {
			ret = true;
		}
		return ret;
	}

	public boolean isCanModifyCurrent() {
		return canModify(memberlist.getRowData());
	}

	public boolean isCurrentMemberUserNotNull() {
		GroupMembership row = memberlist.getRowData();
		if (row != null && row.getUser() != null)
			return true;
		return false;
	}
	
	public boolean isCurrentReleaseAllowed() {
		GroupMembership row = memberlist.getRowData();
		if(row.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS))
			return false;
		
		return true;
	}

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

	public String releasePlace() {
		GroupMembership row = memberlist.getRowData();
		if (row != null) {
			if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
				
				placegroupBean.releaseAndGenerateToken(row);
				
				this.addFaceMessage("placegroupview.placeReleased", row.getPlaceReservation().getName());
			} else {
				this.addFaceMessage("placegroupview.placeReleaseFailed", row.getPlaceReservation().getName());

			}
		}
		return null;
	}

	public ListDataModel<PlaceGroup> getPlacegroups() {
		if (placegroups == null) {
			List<PlaceGroup> retlist = new ArrayList<PlaceGroup>();
			retlist.addAll(placegroupBean.getPlacegroups(user));

			for (GroupMembership gm : placegroupBean.getMemberships(user)) {
				if (!retlist.contains(gm.getPlaceGroup())) {
					retlist.add(gm.getPlaceGroup());
				}
			}

			placegroups = new ListDataModel<PlaceGroup>(retlist);
		}
		return placegroups;
	}

	public void setPlacegroups(ListDataModel<PlaceGroup> placegroups) {
		this.placegroups = placegroups;
	}

	public void setGroup(PlaceGroup group) {
		this.group = group;
	}

	public PlaceGroup getGroup() {
		return group;
	}

	public void setPlacelist(ListDataModel<Place> placelist) {
		this.placelist = placelist;
	}

	public ListDataModel<Place> getPlacelist() {
		return placelist;
	}

	public void setPlace(Place place) {
		this.place = place;
	}

	public Place getPlace() {
		return place;
	}

	public EventUser getUser() {
		return user;
	}

	public void setUser(EventUser user) {
		this.user = user;
	}
}