UserBeanLocal.java 5.34 KB
/*
 * Copyright Codecrew Ry
 * 
 * All rights reserved.
 * 
 * This license applies to any software containing a notice placed by the 
 * copyright holder. Such software is herein referred to as the Software. 
 * This license covers modification, distribution and use of the Software. 
 * 
 * Any distribution and use in source and binary forms, with or without 
 * modification is not permitted without explicit written permission from the 
 * copyright owner. 
 * 
 * A non-exclusive royalty-free right is granted to the copyright owner of the 
 * Software to use, modify and distribute all modifications to the Software in 
 * future versions of the Software. 
 * 
 */
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);

    boolean resetPassword(User user, String password);

	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 userExistsByEmail(String email);

	/**
	 *
	 * @param invitemail
	 *            Target mail
	 * @param url
	 *            Url to send
	 * @param membership
	 *            target group membership, if null we generate new one
	 * @return
	 */
	boolean invite(String invitemail, String url, GroupMembership membership);

	void cancelInvite(GroupMembership ship);

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

	EventUser getUserByAuthcode(String authcode);

	String getAuthCode(EventUser user);

	/**
	 * Find username by email or username, this is kind of login-helper.
	 * 
	 * @param filter
	 * @return
	 */
	String findUsernameByEmailUsername(String filter);

	EventUser findEventuserByLogin(String username);

    /**
     * Check that user's password matches.
     * @param userId
     * @param password
     * @return true if matches, false if does not, null if user not found.
     */
    Boolean checkPassword(Integer userId, String password);
}