package eu.dnetlib.goldoa.service;

import eu.dnetlib.goldoa.domain.Person;
import eu.dnetlib.goldoa.domain.PersonManagerException;
import eu.dnetlib.goldoa.domain.RequestInfo;
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();
}