package pl.pwr.smartkill.activities;
import java.util.HashMap;
import pl.pwr.smartkill.R;
import pl.pwr.smartkill.SKApplication;
import pl.pwr.smartkill.obj.Login;
import pl.pwr.smartkill.tools.PreferencesHelper_;
import pl.pwr.smartkill.tools.WebserviceHandler;
import pl.pwr.smartkill.tools.httpRequests.HttpRequest;
import pl.pwr.smartkill.tools.httpRequests.PostRequest;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockActivity;
import com.googlecode.androidannotations.annotations.AfterViews;
import com.googlecode.androidannotations.annotations.App;
import com.googlecode.androidannotations.annotations.Background;
import com.googlecode.androidannotations.annotations.Click;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.UiThread;
import com.googlecode.androidannotations.annotations.ViewById;
import com.googlecode.androidannotations.annotations.sharedpreferences.Pref;
@EActivity(R.layout.activity_login)
public class LoginActivity extends SherlockActivity {
@ViewById(R.id.login_login)
EditText loginET;
@ViewById(R.id.login_password)
EditText passwordET;
@ViewById(R.id.login_button)
Button button;
@ViewById(R.id.login_remember)
CheckBox remember;
@Pref
PreferencesHelper_ prefs;
@App
SKApplication app;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
}
@AfterViews
public void prepare() {
if (prefs.lastLogin().get().length() > 0) {
loginET.setText(prefs.lastLogin().get());
passwordET.setText(prefs.lastPassword().get());
remember.setChecked(true);
}
}
@Click(R.id.login_button)
public void login() {
passwordET.setError(null);
loginET.setError(null);
button.setEnabled(false);
boolean loginBool = true;
String login = loginET.getText().toString();
String password = passwordET.getText().toString();
if (login == null || login.length() == 0) {
loginBool = false;
button.setEnabled(true);
loginET.setError(getString(R.string.not_empty));
}
if (password == null || password.length() == 0) {
loginBool = false;
button.setEnabled(true);
passwordET.setError(getString(R.string.not_empty));
}
if (loginBool) {
setProgressBarIndeterminateVisibility(true);
logUser(login, password);
}
}
@Background
public void logUser(String login, String password) {
HashMap<String, String> creditentials = new HashMap<String, String>();
creditentials.put(HttpRequest.LOGIN, login);
creditentials.put(HttpRequest.PASSWORD, password);
Login response = new WebserviceHandler<Login>().getAndParse(
this, new PostRequest(SKApplication.API_URL + "login",
creditentials), new Login());
if (response.getStatus().contains("success")) {
app.setSessionId(response.getId());
app.setMyProfile(response.getUser());
loginFinished(true);
} else {
loginFinished(false);
}
}
@UiThread
public void loginFinished(boolean success) {
if (remember.isChecked()) {
prefs.edit().lastLogin().put(loginET.getText().toString()).apply();
prefs.edit().lastPassword().put(passwordET.getText().toString())
.apply();
} else {
prefs.edit().lastLogin().put("").apply();
prefs.edit().lastPassword().put("").apply();
}
setProgressBarIndeterminateVisibility(false);
button.setEnabled(true);
if (success) {
startActivity(new Intent(this, MainActivity_.class));
if (!remember.isChecked()) {
loginET.setText("");
passwordET.setText("");
}
} else {
Toast.makeText(this, R.string.incorrect_login_or_password,
Toast.LENGTH_LONG).show();
// showLoginFailedDialog();TODO
}
}
}