UserBeanLocal.java 3.79 KB
package fi.codecrew.moya.beans;

import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.List;

import javax.ejb.Local;

import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.model.GameID;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.User;
import fi.codecrew.moya.model.UserApproval;
import fi.codecrew.moya.model.UserImage;
import fi.codecrew.moya.util.MailMessage;
import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchQuery;
import fi.codecrew.moya.utilities.SearchResult;

@Local
public interface UserBeanLocal {

	List<EventUser> getUsers();

	SearchResult<User> getUsers(SearchQuery search);

	//SearchResult<User> getEventUsers(SearchQuery search);

	EventUser mergeChanges(EventUser user);

	UserImage uploadImage(EventUser user, String contentType, InputStream inputStream, String filename, String description);

	UserImage findUserImage(int id);

	void createNewUser(EventUser user, String password);

	User findPasswordResetUser(Integer id, String hash);

	boolean resetPassword(User user, String password, String hash);

	public User getUser(Integer id);

	/**
	 * Search EventUser entity by User entity ID
	 * 
	 * @param userid
	 *            ID of the User entity to be searcher
	 * @return
	 */
	EventUser findByUserId(Integer userid, boolean createEventuser);

	EventUser findByEventUserId(Integer integer);

	GroupMembership findToken(String token);

	boolean createFromInviteToken(EventUser user, String token);

	EventUser acceptInviteForExistingUser(String username, String password, String token);

	UserImage findUserimageFORCE(Integer id);

	UserImage saveCroppedImage(UserImage currentImage, int left, int top, int width, int height) throws IOException;

	EventUser createNewUser(User usr);

	boolean userExists(String login);

	boolean invite(String invitemail, String url);

	EventUser mergeEventUserChanges(EventUser shoppingUser);

	List<Role> findUsersRoles(EventUser u);

	/**
	 * NOTICE! If the user parameter is a persisted object the returned
	 * EventUser has a reloaded user, eg changes to the User object are lost!
	 * 
	 * @param user
	 * @return
	 */
	EventUser getEventUser(User user, boolean create);

	EventUser validateUser(String username, String password);

	EventUser getUserByBarcode(String barcode);

	SearchResult<EventUser> getThisEventsUsers(UserSearchQuery searchQuery);

	void submitFeedback(String feedback);

	List<Feedback> getFeedbacks();

	UserApproval setUserApproval(EventUser user, String approvalName, boolean approvalValue, String notes);

	boolean initPasswordResetForEmail(String email, String url);

	PrintedCard rejectPrintedCard(PrintedCard card, MailMessage mail);
	
	boolean initPasswordResetForUsername(String username, String url);

	void addGameID(TournamentGame game, String gameid);

	void removeGameIdById(Integer gameIdId);

	GameID getGameIDByGameAndUser(TournamentGame tg, EventUser user);

	boolean isUserInRole(EventUser user, Integer roleId);

	EventUser getOtherEventsEventuser(User user, LanEvent event);

	/**
	 * Transfers account saldo from previous event. Creates negative
	 * accountevent for source user and positive for dst user. There are few
	 * requirements.
	 * <ul>
	 * <li>User must be the same.
	 * <li>Organisation must be the same.
	 * <li>All users should have positive or zero balance on source event.
	 * </ul>
	 * 
	 * @param source
	 * @param dst
	 * @return Saldo transferred. Zero if no transfer was made, Null if there
	 *         was error..
	 */
	BigDecimal transferAccountSaldoFromPreviousEvent(List<User> dstEventuser, LanEvent source);

}