package ejb.systemAdmin;

import java.util.List;

import javax.ejb.Remote;

import TO.FamilyDoctorTO;
import TO.LoggedUserTO;
import TO.MedicalSpecialtyTO;
import TO.PrimaryHealthCareCenterTO;
import TO.SystemAdminTO;

/**
 * 
 * @author Marcos García Núñez (mgarcianun@uoc.edu)
 *
 */
@Remote
public interface SystemAdminFacadeRemote {
	/**
	 * Definimos la interfaz remota
	 */

	public LoggedUserTO login(String id, String pwd);
	
	public List<MedicalSpecialtyTO> listSpecialtiesPaged(int pageNumber, int pageSize);
	
	public Long getSpecialtiesCount();

	public MedicalSpecialtyTO updateSpecialty(int id, String name, String description) throws Exception;

	public MedicalSpecialtyTO findSpecialtyByName(String name);

	public void deleteSpecialty(int id) throws Exception;

	public MedicalSpecialtyTO insertSpecialty(String name, String description) throws Exception;

	public PrimaryHealthCareCenterTO updateHealthCareCenter(int id, String name, String location) throws Exception;

	public PrimaryHealthCareCenterTO findHealthCareCenterByName(String name);

	public void deleteHealthCareCenter(int id) throws Exception;

	public PrimaryHealthCareCenterTO insertHealthCareCenter(String name, String location) throws Exception;

	public Long getCAPCount();

	public List<PrimaryHealthCareCenterTO> listCAPsPaged(int pageNumber, int pageSize);

	public Long getFamilyDoctorsByCAPCount(int primaryHealthCareCenterId);

	public List<FamilyDoctorTO> listAllFamilyDoctorsByCAPPaged(int primaryHealthCareCenterId, int pageNumber, int pageSize);

	public Long getPatientCount(int familyDoctorId);

	public SystemAdminTO findAdminByEmail(String email);

	public SystemAdminTO insertAdmin(String email, String password) throws Exception;
}