package info.ozkan.vipera.views.administrator;
import info.ozkan.vipera.business.administrator.AdministratorFacade;
import info.ozkan.vipera.business.administrator.AdministratorManagerResult;
import info.ozkan.vipera.common.EmailValidator;
import info.ozkan.vipera.entities.Administrator;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
/**
* Yönetici hesap güncelleme ekranı
*
* @author Ömer Özkan
*
*/
@Named("account")
@Scope("session")
public class AccountBean implements Serializable {
/**
* Alanların diğer kullanıcılar ile aynı olması durumunda gösterilen mesaj
*/
private static final String NON_UNIQUE_VALUES =
"Girdiğiniz kullanıcı adı veya eposta adresi bir başka yöneticiye aittir!";
/**
* Güncelleme başarısız mesajı
*/
private static final String UPDATING_FAIL = "Güncelleme hatası!";
/**
* Güncelleme başarılı mesajı
*/
private static final String UPDATED_MSG = "Hesabınız güncellenmiştir!";
/**
* Güncellendi mesajı
*/
private static final String UPDATED = "Güncellendi!";
/**
* Geçersiz eposta mesajı
*/
private static final String INVALID_EMAIL_MSG =
"Girdiğiniz eposta adresi geçersizdir. Lütfen kontrol ediniz!";
/**
* Geçersiz eposta
*/
private static final String INVALID_EMAIL = "Eposta geçersiz!";
/**
* Serial
*/
private static final long serialVersionUID = 1100917840483548741L;
/**
* Yönetici
*/
private Administrator profile;
/**
* Parola
*/
private String password;
/**
* Business object
*/
@Inject
private AdministratorFacade administratorFacade;
/**
* Oturum açmış yöneticiyi tanımlar
*/
@PostConstruct
public void setUp() {
setProfile(AdminSessionBean.getAdministrator());
}
/**
* Güncelleme işlemi yapar
*/
public void update() {
final FacesContext context = FacesContext.getCurrentInstance();
setAdminPassword();
if (!isEmailValid(getProfile().getEmail())) {
createErrorMessage(context, INVALID_EMAIL, INVALID_EMAIL_MSG);
} else {
updateAccount(context);
}
}
/**
* Yönetici parola girdi ise parola ata
*/
private void setAdminPassword() {
if (password != null && !password.isEmpty()) {
profile.setPassword(password);
}
}
/**
* Hesabı günceller
*
* @param context
*/
private void updateAccount(final FacesContext context) {
final AdministratorManagerResult result =
administratorFacade.update(getProfile());
if (result.isSuccess()) {
createInfoMessage(context, UPDATED, UPDATED_MSG);
} else {
createErrorMessage(context, UPDATING_FAIL, NON_UNIQUE_VALUES);
}
}
/**
* bilgi mesajı üretir
*
* @param context
* @param summary
* @param detail
*/
private void createInfoMessage(final FacesContext context,
final String summary, final String detail) {
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
summary, detail));
}
/**
* hata mesajı üretir
*
* @param context
* @param summary
* @param detail
*/
private void createErrorMessage(final FacesContext context,
final String summary, final String detail) {
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
summary, detail));
}
/**
* eposta adresinin geçerliliğini kontrol eder
*
* @param email
* @return
*/
private boolean isEmailValid(final String email) {
return EmailValidator.isValid(email);
}
/**
* @return the profile
*/
public Administrator getProfile() {
return profile;
}
/**
* @param profile
* the profile to set
*/
public void setProfile(final Administrator profile) {
this.profile = profile;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password
* the password to set
*/
public void setPassword(final String password) {
this.password = password;
}
}