package it.agilis.mens.azzeroCO2.client.mvc.controllers;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.google.gwt.user.client.rpc.AsyncCallback;
import it.agilis.mens.azzeroCO2.client.MyInfo;
import it.agilis.mens.azzeroCO2.client.components.uploadFiles.model.Model;
import it.agilis.mens.azzeroCO2.client.mvc.events.AmministrazioneEvents;
import it.agilis.mens.azzeroCO2.client.mvc.events.AzzeroCO2Events;
import it.agilis.mens.azzeroCO2.client.mvc.views.AmministrazioneView;
import it.agilis.mens.azzeroCO2.client.services.AzzeroCO2Constants;
import it.agilis.mens.azzeroCO2.client.services.HustonServiceAsync;
import it.agilis.mens.azzeroCO2.shared.model.OrdineModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CoefficienteModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CouponModel;
import it.agilis.mens.azzeroCO2.shared.model.amministrazione.ProgettoDiCompensazioneModel;
import it.agilis.mens.azzeroCO2.shared.model.registrazione.UserInfoModel;
import java.util.List;
import java.util.Map;
/**
* Created by IntelliJ IDEA.
* User: giovannilt
* Date: 6/25/11
* Time: 8:44 PM
* To change this template use File | Settings | File Templates.
*/
public class AmministrazioneController extends BaseController {
private AmministrazioneView amministrazioneView = new AmministrazioneView(this);
public AmministrazioneController() {
registerEventTypes(AzzeroCO2Events.Init);
registerEventTypes(AzzeroCO2Events.LoggedIn);
registerEventTypes(AmministrazioneEvents.Error);
registerEventTypes(AmministrazioneEvents.ShowAmministrazione);
registerEventTypes(AmministrazioneEvents.SaveCoupons);
registerEventTypes(AmministrazioneEvents.SaveCoefficienti);
registerEventTypes(AmministrazioneEvents.SaveProgrammiDiCompensazione);
}
@Override
public void handleEvent(AppEvent event) {
if (event.getType().equals(AmministrazioneEvents.SaveCoefficienti)) {
List<CoefficienteModel> coefficienteModels = event.getData();
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<Boolean> aCallback = new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(Boolean result) {
MyInfo.show("Coefficienti Salvati");
}
};
hustonService.saveCoefficienti(coefficienteModels, aCallback);
} else if (event.getType().equals(AmministrazioneEvents.SaveProgrammiDiCompensazione)) {
if (event.getData() instanceof Model) {
Model m = event.getData();
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<Boolean> aCallback = new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(Boolean result) {
MyInfo.show("ProgettiDiCompensazione Salvati");
getProgettiDiCompensazione();
}
};
if (m.getIMGorPDF().equalsIgnoreCase("IMG")) {
hustonService.associaIDProgettoDiCompensazioneImmagine(m.getIdProgetto(), m.getName(), aCallback);
}
} else {
List<ProgettoDiCompensazioneModel> progettoDiCompensazioneModels = event.getData();
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<Boolean> aCallback = new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(Boolean result) {
MyInfo.show("ProgettiDiCompensazione Salvati");
}
};
hustonService.saveProgettiDiCompensazione(progettoDiCompensazioneModels, aCallback);
}
} else if (event.getType().equals(AmministrazioneEvents.SaveCoupons)) {
List<CouponModel> coupons = event.getData();
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<Boolean> aCallback = new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(Boolean result) {
MyInfo.show("Coupons Salvati");
}
};
hustonService.saveCoupons(coupons, aCallback);
} else if (event.getType().equals(AmministrazioneEvents.ShowAmministrazione)) {
getCoefficienti();
getCoupons();
getProgettiDiCompensazione();
getOrdini();
} else if (event.getType().equals(AzzeroCO2Events.LoggedIn)) {
setUserInfoModel((UserInfoModel) event.getData());
amministrazioneView.setUserInfo((UserInfoModel) event.getData());
} else {
forwardToView(amministrazioneView, event);
}
}
// SETTANO
private void getOrdini() {
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<List<OrdineModel>> aCallback = new AsyncCallback<List<OrdineModel>>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(List<OrdineModel> result) {
amministrazioneView.setOrdini(result);
}
};
hustonService.getListOfOrdini(getUserInfoModel(), aCallback);
}
private void getCoefficienti() {
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<Map<String, CoefficienteModel>> aCallback = new AsyncCallback<Map<String, CoefficienteModel>>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(Map<String, CoefficienteModel> result) {
amministrazioneView.setCoefficienti(result);
}
};
hustonService.getCoefficienti(aCallback);
}
private void getCoupons() {
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<List<CouponModel>> aCallback = new AsyncCallback<List<CouponModel>>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(List<CouponModel> result) {
amministrazioneView.setCoupon(result);
}
};
hustonService.getListOfCoupon(aCallback);
}
public void getProgettiDiCompensazione() {
HustonServiceAsync hustonService = Registry.get(AzzeroCO2Constants.HUSTON_SERVICE);
AsyncCallback<List<ProgettoDiCompensazioneModel>> aCallback = new AsyncCallback<List<ProgettoDiCompensazioneModel>>() {
public void onFailure(Throwable caught) {
MyInfo.show("Error", "Errore impossibile connettersi al server", 7000);
}
@Override
public void onSuccess(List<ProgettoDiCompensazioneModel> result) {
amministrazioneView.setProgettiDiCompensazione(result);
}
};
hustonService.getListOfProgettoDiCompensazione(true, aCallback);
}
}