LectureReportsView.java 3.58 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.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;

@Named
@ConversationScoped
public class LectureReportsView extends GenericCDIView {

	private static final long serialVersionUID = 1L;

	@Inject
	UserView userView;

	@EJB
	LectureBeanLocal lectureBean;

	@EJB
	EventBeanLocal eventBean;
	
	@EJB
	UserBeanLocal userBean;
	

	EventUser multiSearchUser = null;
	

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

	LectureGroup currentLectureGroup;
	
	Lecture currentLecture = null;
	
	Integer lectureId;
	
	
	
	
	public void initView() {
		if (super.requirePermissions(LecturePermission.MANAGE)) {
			super.beginConversation();
		}
	}
	
	public void refresh() {
		this.lectures = null;
	}
	
	public boolean isLectureGroupsVisible() {
		if(lectureBean.getLectureGroups().size() <= 1)
			return false;
		return true;
	}

	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>();

		if(lectures == null)
			lectures = new ListDataModel<Lecture>(lectureBean.getLecturesByLectureGroup(getCurrentLectureGroup()));

		return lectures;
	}

	
	public int getCurrentGroupParticipateCount() {
		return lectureBean.userLectureSelects(getCurrentLectureGroup(), userView.getCurrentUser());
	}

	public Integer getLectureId() {
		return lectureId;
	}

	public void setLectureId(Integer lectureId) {
		this.lectureId = lectureId;
	}

	public Lecture getCurrentLecture() {
		if(currentLecture == null) {
			currentLecture = lectureBean.findLecture(lectureId);
		}
		
		return currentLecture;
	}

	public void setCurrentLecture(Lecture currentLecture) {
		this.currentLecture = currentLecture;
	}
	
	public List<EventUser> matchMulti(String what) {
		UserSearchQuery usq = new UserSearchQuery();
		usq.setSearch(what);

		SearchResult<EventUser> sr = userBean.getThisEventsUsers(usq);

		return sr.getResults();
	}
	
	
	public EventUser getMultiSearchUser() {
		return multiSearchUser;
	}

	public void setMultiSearchUser(EventUser multiSearchUser) {
		this.multiSearchUser = multiSearchUser;
	}
	
	
	public void addUserToLecture() {
		if (multiSearchUser != null) {
			lectureBean.participate(multiSearchUser, currentLecture);
			super.addFaceMessage("lecture.participated");
			multiSearchUser = null;
		}
	}
	
	

}