package tutorial.core.repositories;

import tutorial.core.models.entities.Account;


import java.util.List;

/**
 * 
 * @author Xavier
 */
public interface AccountRepo {
    /**
     * 
     * @return 
     */
    public List<Account> findAllAccounts();
    
    /**
     * 
     * @return 
     */
    public List<Account> findAllActivatedAccounts();
    
    /**
     * 
     * @param id
     * @return 
     */
    public Account findAccount(Long id);
    
    /**
     * 
     * @param name
     * @return 
     */
    public Account findAccountByName(String name);
    
    /**
     * 
     * @param name
     * @return 
     */
    public Account findActivatedAccountByName(String name);
    
    /**
     * 
     * @param name
     * @param accountType
     * @return 
     */
    public Account findAccountByType(String name, int accountType);
    
    /**
     * 
     * @param data
     * @return 
     */
    public Account createAccount(Account data);

    /**
     * 
     * @param name
     * @param password 
     */
    public void modifyPassword(String name, String password);
    
    /**
     * 
     * @param md5
     * @return 
     */
    public String MD5(String md5);
    
    /**
     * 
     * @return 
     */
    public String getMailAccount();
    
    /**
     * 
     * @return 
     */
    public int getAdminUserType();
    
    /**
     * 
     * @return 
     */
    public int getTempUserUserType();
}
