package eu.dnetlib.goldoa.service;

import eu.dnetlib.goldoa.domain.Person;
import eu.dnetlib.goldoa.domain.PersonManagerException;
import eu.dnetlib.goldoa.domain.Role;

import java.util.List;

/**
 * Created by antleb on 3/4/15.
 */
public interface PersonManager {

	public Person getById(String personId) throws PersonManagerException;

	public Person getByEmail(String email) throws PersonManagerException;

	public void register(Person person) throws PersonManagerException;

	public Person login(String email, String password) throws PersonManagerException;

	;

	public Person activate(String email, String token) throws PersonManagerException;

	;

	public void resetPassword(String email) throws PersonManagerException;

	public List<Role> getRoles();

	public Person savePerson(Person person) throws PersonManagerException;

	public List<Person> getModerators();

	public void activateUser(String userId);

	public void activateUsers(List<String> userIds);

	public void deactivateUser(String userId);

	public void deactivateUsers(List<String> userIds);

	public void acceptUserRole(String userId, String roleId);

	public void rejectRole(String userId, String roleId);

	public List<Person> getUsers();

	String generateId(Person person);

	public List<Person> getAccountingOfficers();
}