/**
*
*/
package net.agef.jobexchange.application;
import java.util.Collection;
import net.agef.jobexchange.domain.Applicant;
import net.agef.jobexchange.domain.Country;
import net.agef.jobexchange.domain.Territory;
import net.agef.jobexchange.domain.WorkExperience;
import net.agef.jobexchange.domain.WorkUserType;
import net.agef.jobexchange.exceptions.APDUserNotFoundException;
import net.agef.jobexchange.exceptions.ApplicantProfileAlreadyExistException;
import net.agef.jobexchange.exceptions.ApplicantProfileNotFoundException;
import net.agef.jobexchange.exceptions.CantChangeOnlineStateException;
import net.agef.jobexchange.exceptions.CobraUserNotFoundException;
import net.agef.jobexchange.exceptions.EnumValueNotFoundException;
import net.agef.jobexchange.exceptions.InwentUserNotFoundException;
import net.agef.jobexchange.exceptions.ObjectNotSavedException;
import net.agef.jobexchange.exceptions.PassedAttributeIsNullException;
import net.agef.jobexchange.exceptions.UserNotFoundException;
import net.agef.jobexchange.webservice.entities.ApplicantsSearchResultDTO;
/**
* @author Administrator
*
*/
public interface ApplicantWorker {
public Collection<Applicant> getAllApplicants();
public Long addApplicantData(Applicant applicantData) throws ApplicantProfileAlreadyExistException;
public Applicant getApplicantDataByAPDUserId(Long apdUserId) throws APDUserNotFoundException, ApplicantProfileNotFoundException ;
public Applicant getApplicantDataByUserId(Long userId) throws ApplicantProfileNotFoundException, UserNotFoundException;
public Applicant getApplicantDataByProfileId(Long applicantProfileId) throws ApplicantProfileNotFoundException;
public Boolean getApplicantProfileOnlineState(Long applicantProfileId) throws ApplicantProfileNotFoundException;
public void modifyApplicantData(Applicant applicant) throws ApplicantProfileNotFoundException, PassedAttributeIsNullException ;
public void deleteApplicantDataByCobraId(Long cobraSuperId)throws CobraUserNotFoundException, ApplicantProfileNotFoundException;
public void deleteApplicantData(Long userId)throws APDUserNotFoundException, ApplicantProfileNotFoundException;
public void setApplicantProfileOnlineStatus(Applicant applicant, Boolean onlineStatus) throws ObjectNotSavedException, CantChangeOnlineStateException;
public Collection<Applicant> getApplicantByCriteria(String criteria, Country country, Territory territory);
public Collection<ApplicantsSearchResultDTO> getApplicantByCriteria(String criteria, Country country, Territory territory, Integer resultAmount, Integer pageIndexStart, Boolean filterGetjobsResults);
void deleteApplicantDataByInwentUserId(Long inwentUserId) throws InwentUserNotFoundException, ApplicantProfileNotFoundException;
public Collection<Applicant> getApplicantByExtendedCriteria(String criteria, Country domainObj, Territory domainObj2, String[] availability, WorkUserType[] workTypes,
String[] occupationalField, String managementExperience, Integer resultsAmount, Integer pageIndexStart) throws EnumValueNotFoundException;
public int getApplicantsSearchResultsAmountByExtendedCriteria(String criteria, Country domainObj, Territory domainObj2, String[] availability, WorkUserType[] workTypes,
String[] occupationalField, String managementExperience);
}