package theintelligentminds.messenger;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import at.intelligentminds.client.ConnectionProvider;
/**
* Created by Chris_1909 on 29.04.2015.
*/
public class Registration extends Activity {
private Button register;
private Button changeBirthday;
private EditText firstName;
private EditText lastName;
private EditText email;
private EditText password;
private RadioGroup radioSexGroup;
private ConnectionProvider provider = ConnectionProvider.getInstance(AndroidFriendlyFeature.class);
private TextView calendarView;
private int year, month, day;
private DatePickerDialog datePickerDialog;
private SimpleDateFormat dateFormatter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.registration);
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
register = (Button) findViewById(R.id.buttonRegister);
changeBirthday = (Button) findViewById(R.id.buttonChangeBirthday);
firstName = (EditText) findViewById(R.id.textfieldFirstname);
lastName = (EditText) findViewById(R.id.textfieldLastname);
email = (EditText) findViewById(R.id.textfieldEMail);
password = (EditText) findViewById(R.id.textfieldPassword);
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
calendarView = (TextView) findViewById(R.id.calendarView);
final Calendar cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
calendarView.setText(dateFormatter.format(cal.getTime()));
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int y, int m, int d) {
year = y;
month = m;
day = d;
final Calendar cal = Calendar.getInstance();
cal.set(y, m, d);
calendarView.setText(dateFormatter.format(cal.getTime()));
}
}, year, month, day);
changeBirthday.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
datePickerDialog.show();
}
});
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String message;
AsyncDBAccess async = new AsyncDBAccess();
async.execute();
}
});
}
class AsyncDBAccess extends AsyncTask<String, Void, String> {
private boolean registrationSuccessful = false;
@Override
protected String doInBackground(String... strings) {
String message;
String sex = "";
registrationSuccessful = false;
int selectedId = radioSexGroup.getCheckedRadioButtonId();
switch (selectedId) {
case R.id.radioButtonFemale:
sex = "female";
break;
case R.id.radioButtonMale:
sex = "male";
break;
default:
return "No sex selected";
}
Calendar c = Calendar.getInstance();
c.set(year+18, month-1, day);
if(new Date().getTime() < c.getTime().getTime()) return "You need to be at least 18 years old";
ConnectionProvider.RegisterResponse response = provider.register(email.getText().toString(), password.getText()
.toString(), sex, firstName.getText().toString(), lastName.getText().toString());
switch (response) {
case EMAIL:
message = "wrong email address";
break;
case ERROR:
message = "an error has occurred";
break;
case NAME:
message = "invalid format at name";
break;
case PASSWORD:
message = "Password does not meet requirements";
break;
case SUCCESS:
message = "Registration has been successful";
registrationSuccessful = true;
break;
case USER_EXISTS:
message = "The user exists already";
break;
default:
case MISC_ERROR:
message = "an unexpected error has occurred";
break;
}
return message;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
new AlertDialog.Builder(Registration.this).setTitle("Registration").setMessage(s)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (registrationSuccessful) {
Intent intent = new Intent(Registration.this, LoginActivity.class);
startActivity(intent);
}
}
}).show();
}
}
}