UserSearchView.java 3.35 KB
package fi.codecrew.moya.web.cdiview.user;

import java.util.List;
import java.util.Map;

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

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import fi.codecrew.moya.utilities.SearchQuery.QuerySortOrder;
import fi.codecrew.moya.web.cdiview.PaginationView;

@Named
@ConversationScoped
public class UserSearchView extends PaginationView<User> {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7131921062890234604L;

	@EJB
	private transient UserBeanLocal userbean;
	private List<EventUser> eventUserResults;
	@Inject
	private UserCartView usercart;

	private UserSearchQuery usersearch = new UserSearchQuery();

	private LazyDataModel<EventUser> eventuserModel;

	public void addToCart()
	{
		int pagesize = usersearch.getPagesize();
		int page = usersearch.getPage();
		usersearch.setPagesize(999999999);
		usersearch.setPage(0);

		SearchResult<EventUser> eventusers = userbean.getThisEventsUsers(usersearch);
		usercart.addUsers(eventusers.getResults());
		usersearch.setPagesize(pagesize);
		usersearch.setPage(page);
		super.beginConversation();
	}

	public void initView() {

		if (requirePermissions(permbean.hasPermission(UserPermission.VIEW_ALL))) {
			eventuserModel = new LazyDataModel<EventUser>() {

				private static final long serialVersionUID = 1L;

				@Override
				public List<EventUser> load(int first, int pageSize, String sortField,
						SortOrder sortOrder, Map<String, String> filters) {
					UserSearchQuery sq = getSearchQuery();
					sq.setPagesize(pageSize);
					if (pageSize > 0)
					{
						sq.setPage(first / pageSize);
					}
					sq.setSort(sortField);
					sq.setSortDirection(SortOrder.ASCENDING.equals(sortOrder) ? QuerySortOrder.ASCENDING : (SortOrder.DESCENDING.equals(sortOrder) ? QuerySortOrder.DESCENDING : QuerySortOrder.UNSORTED));
					SearchResult<EventUser> sr = userbean.getThisEventsUsers(sq);
					this.setRowCount(new Long(sr.getResultcount()).intValue());
					setResultcount(sr.getResultcount());
					setEventUserResults(sr.getResults());
					return sr.getResults();

				}

			};

			if (usersearch.isOnlyThisEvent() || usersearch.getSearch() == null || usersearch.getSearch().isEmpty())
			{
				usersearch.setOnlyThisEvent(true);
				SearchResult<EventUser> eventusers = userbean.getThisEventsUsers(getSearchQuery());
				this.setResultcount(eventusers.getResultcount());
				this.setEventUserResults(eventusers.getResults());
			}
			else {
				super.setResult(userbean.getEventUsers(getSearchQuery()));
			}
			super.beginConversation();
		}
	}

	@Override
	public UserSearchQuery getSearchQuery()
	{
		return usersearch;
	}

	public List<EventUser> getEventUserResults() {
		return eventUserResults;
	}

	public void setEventUserResults(List<EventUser> eventUserResults) {
		this.eventUserResults = eventUserResults;
	}

	public LazyDataModel<EventUser> getEventuserModel() {
		return eventuserModel;
	}

	public void setEventuserModel(LazyDataModel<EventUser> eventuserModel) {
		this.eventuserModel = eventuserModel;
	}

}