package info.ozkan.vipera.dao.login;
import info.ozkan.vipera.business.login.PatientLoginResult;
import info.ozkan.vipera.business.login.PatientLoginStatus;
import info.ozkan.vipera.entities.Authorize;
import info.ozkan.vipera.entities.Patient;
import java.util.List;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
* {@link PatientLoginDao} implementasyonu
*
* @author Ömer Özkan
*
*/
@Named("patientLoginDao")
public class PatientLoginDaoImpl implements PatientLoginDao {
private static final String JQL_GET_BY_TCKN =
"from Patient p WHERE p.tckn = :tckn AND enable = :enabled";
/**
* persistence context
*/
private EntityManager em;
public PatientLoginResult find(final Long tckn, final String password) {
final PatientLoginResult result = new PatientLoginResult();
final Query query = em.createQuery(JQL_GET_BY_TCKN);
query.setParameter("tckn", tckn);
query.setParameter("enabled", Authorize.ENABLE);
final List<Patient> list = query.getResultList();
if (list.size() == 0) {
result.setStatus(PatientLoginStatus.INVALID_USERNAME);
} else {
final Patient patient = list.get(0);
if (patient.getPassword().equals(password)) {
result.setStatus(PatientLoginStatus.SUCCESS);
result.setPatient(patient);
} else {
result.setStatus(PatientLoginStatus.INVALID_PASSWORD);
}
}
return result;
}
/**
* @param entityManager
* the entityManager to set
*/
@PersistenceContext
public void setEntityManager(final EntityManager entityManager) {
em = entityManager;
}
}