package tutorial.core.services;

import tutorial.core.models.entities.Account;
import tutorial.core.services.util.AccountList;

/**
 * 
 * @author Xavier
 */
public interface AccountService {
    /**
     * 
     * @param id
     * @return 
     */
    public Account findAccount(Long id);
    
    /**
     * 
     * @param data
     * @return 
     */
    public Account createAccount(Account data);
    
    /**
     * 
     * @return 
     */
    public AccountList findAllAccounts();
    
    /**
     * 
     * @param name
     * @return 
     */
    public Account findByAccountName(String name);
    
    /**
     * 
     * @return 
     */
    public AccountList findAllActivatedAccounts();
    
    /**
     * 
     * @param name
     * @return 
     */
    public Account findActivatedByAccountName(String name);
    
    /**
     * 
     * @param name
     * @param password
     * @return 
     */
    public Boolean isAccountCorrect(String name, String password);
    
    /**
     * 
     * @param name
     * @return 
     */
    public Boolean isAccountAdminByName(String name);
    
    /**
     * 
     * @param name
     * @param password 
     */
    public void modifyPassword(String name, String password);
}
