package it.agilis.mens.azzeroCO2.client.mvc.controllers;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.google.gwt.user.client.rpc.AsyncCallback;
import it.agilis.mens.azzeroCO2.client.MyInfo;
import it.agilis.mens.azzeroCO2.client.mvc.events.AzzeroCO2Events;
import it.agilis.mens.azzeroCO2.client.mvc.events.LoginEvents;
import it.agilis.mens.azzeroCO2.client.mvc.events.RegisterEvents;
import it.agilis.mens.azzeroCO2.client.mvc.views.RegisterView;
import it.agilis.mens.azzeroCO2.shared.Profile;
import it.agilis.mens.azzeroCO2.shared.model.registrazione.UserInfoModel;
/**
* Created by IntelliJ IDEA.
* User: giovannilt
* Date: 3/17/11
* Time: 11:29 PM
* To change this template use File | Settings | File Templates.
*/
public class RegisterController extends BaseController {
private RegisterView view = new RegisterView(this);
public RegisterController() {
registerEventTypes(RegisterEvents.DoRegistration);
registerEventTypes(RegisterEvents.SaveUserInfo);
registerEventTypes(RegisterEvents.ShowForm);
registerEventTypes(RegisterEvents.HideForm);
registerEventTypes(AzzeroCO2Events.LoggedIn);
}
@Override
public void handleEvent(AppEvent event) {
if (event.getType().equals(AzzeroCO2Events.LoggedIn)) {
setUserInfoModel((UserInfoModel) event.getData());
} else if (event.getType().equals(RegisterEvents.SaveUserInfo)) {
AsyncCallback<Boolean> aCallback = new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore nella creazione dell'utente", 7000);
}
@Override
public void onSuccess(Boolean result) {
if (result) {
MyInfo.show("Username salvato.");
} else {
MyInfo.show("Error", "Errore nel salvataggio.", 7000);
}
}
};
UserInfoModel data = (UserInfoModel) event.getData();
// data.setProfilo(Profile.User.ordinal());
getHustonService().saveUserInfo(data, aCallback);
} else if (event.getType().equals(RegisterEvents.DoRegistration)) {
AsyncCallback<UserInfoModel> aCallback = new AsyncCallback<UserInfoModel>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore nella creazione dell'utente", 7000);
}
@Override
public void onSuccess(UserInfoModel result) {
if (result != null) {
Dispatcher.forwardEvent(RegisterEvents.HideForm);
Dispatcher.forwardEvent(LoginEvents.ShowLogOut);
MyInfo.show("Utente Creato con sucesso");
view.hideStatus();
AppEvent event = new AppEvent(AzzeroCO2Events.LoggedIn);
event.setData(result);
Dispatcher.forwardEvent(event);
} else {
MyInfo.show("Error", "Username gia' registrato.", 7000);
view.hideStatus();
}
}
};
UserInfoModel data = (UserInfoModel) event.getData();
data.setProfilo(Profile.User.ordinal());
getHustonService().createNewUser(data, aCallback);
} else {
forwardToView(view, event);
}
}
}