LectureUserView.java 3.06 KB
package fi.codecrew.moya.web.lecture;

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.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;

@Named
@ConversationScoped
public class LectureUserView extends GenericCDIView {

	private static final long serialVersionUID = 1L;

	@Inject
	UserView userView;

	@EJB
	LectureBeanLocal lectureBean;

	@EJB
	EventBeanLocal eventBean;

	ListDataModel<LectureGroup> lectureGroups = null;
	ListDataModel<Lecture> lectures = null;
	ListDataModel<Lecture> participatedLectures = null;

	LectureGroup currentLectureGroup;
	
	
	public void initView() {
		if (super.requirePermissions(LecturePermission.VIEW)) {
			super.beginConversation();
		}
	}

	public ListDataModel<LectureGroup> getLectureGroups() {
		lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());

		return lectureGroups;
	}

	public void selectCurrentLectureGroup() {
		if (lectureGroups != null && lectureGroups.isRowAvailable()) {
			currentLectureGroup = lectureGroups.getRowData();

			lectures = null;
		}
	}

	public LectureGroup getCurrentLectureGroup() {
		List<LectureGroup> groups = lectureBean.getLectureGroups();
		if (currentLectureGroup == null && groups.size() > 0) {
			currentLectureGroup = groups.get(0);
		}

		return currentLectureGroup;
	}

	public ListDataModel<Lecture> getLectures() {

		if (currentLectureGroup == null)
			return new ListDataModel<Lecture>();

		lectures = new ListDataModel<Lecture>(lectureBean.findAvailableLectures(getCurrentLectureGroup(), userView.getCurrentUser()));

		return lectures;
	}

	public ListDataModel<Lecture> getParticipatedLectures() {
		participatedLectures = new ListDataModel<Lecture>(lectureBean.getParticipatedLectures(userView.getCurrentUser()));

		return participatedLectures;
	}

	public void participateCurrent() {

		if (lectures != null && lectures.isRowAvailable()) {
			Lecture lecture = lectures.getRowData();
			

			lectureBean.participate(userView.getCurrentUser(), lecture);
			
			
			super.addFaceMessage("lecture.participated");

			this.lectures = null;
		}
	}

	public void unParticipateCurrent() {

		if (participatedLectures != null && participatedLectures.isRowAvailable()) {
			Lecture lecture = participatedLectures.getRowData();
			

			lectureBean.unparticipate(userView.getCurrentUser(), lecture);
			
			super.addFaceMessage("lecture.unparticipated");

			this.lectures = null;
		}
	}

	public boolean isCurrentGroupFull() {
		return (lectureBean.userLectureSelectsLeft(getCurrentLectureGroup(), userView.getCurrentUser()) <= 0);
	}
	
	public int getCurrentGroupParticipateCount() {
		return lectureBean.userLectureSelects(getCurrentLectureGroup(), userView.getCurrentUser());
	}

}