package com.fancl.iloyalty.activity.login;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.fancl.iloyalty.Constants;
import com.fancl.iloyalty.R;
import com.fancl.iloyalty.activity.AndroidProjectFrameworkActivity;
import com.fancl.iloyalty.activity.CustomSpinnerActivity;
import com.fancl.iloyalty.asynctask.RegistrationAsyncTask;
import com.fancl.iloyalty.asynctask.callback.RegistrationAsyncTaskCallback;
import com.fancl.iloyalty.exception.FanclException;
import com.fancl.iloyalty.factory.CustomServiceFactory;
import com.fancl.iloyalty.factory.GeneralServiceFactory;
import com.fancl.iloyalty.pojo.FormContent;
import com.fancl.iloyalty.pojo.UserRegistrationParam;
import com.fancl.iloyalty.responseimpl.FanclGeneralResult;
import com.fancl.iloyalty.service.LocaleService;
import com.fancl.iloyalty.service.impl.LocaleServiceImpl.LANGUAGE_TYPE;
import com.fancl.iloyalty.util.LogController;
public class SignUpFormActivity extends AndroidProjectFrameworkActivity implements RegistrationAsyncTaskCallback {
// WRT <<iloyalty_flow_V1.7_20120713.pdf>> screen 1.2.1, 1.2.2
private Spinner spinner;
private List<FormContent> monthContentList;
private String[] yearContentList = new String[100];
private List<FormContent> genderContentList;
private List<FormContent> skinContentList;
private List<FormContent> countryContentList;
private LocaleService localeService;
private EditText nameEditText;
private EditText surnameEditText;
private EditText emailEditText;
private EditText retypeEmailEditText;
private EditText mobileEditText;
private EditText passwordEditText;
private EditText retypePasswordEditText;
private EditText livingCityEditText;
private EditText address1EditText;
private EditText address2EditText;
private EditText address3EditText;
private TextView signUpFormBirthMonthContent;
private TextView signUpFormBirthYearContent;
private TextView signUpFormGenderContent;
private TextView signUpFormSkinTypeContent;
private TextView signUpFormLivingCountryContent;
private int monthIndex= -1;
private int yearIndex= -1;
private int genderIndex= -1;
private int skinIndex= -1;
private int countryIndex= -1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
CustomServiceFactory.getSettingService().addUserLogWithSection("Login", "RegeristationPage", "", "", "", "View", "");
} catch (FanclException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String name = getIntent().getStringExtra("name");
String memberId = getIntent().getStringExtra("id");
setContentView(R.layout.sign_up_form_page);
localeService = GeneralServiceFactory.getLocaleService();
TextView signUpFormMemberIdTextView = (TextView)findViewById(R.id.sign_up_form_member_id_content);
TextView signUpFormAccountNameTextView = (TextView)findViewById(R.id.sign_up_form_account_name_content);
signUpFormMemberIdTextView.setText(memberId);
signUpFormAccountNameTextView.setText(name);
nameEditText = (EditText) findViewById(R.id.name_edit_text);
surnameEditText = (EditText) findViewById(R.id.surname_edit_text);
emailEditText = (EditText) findViewById(R.id.email_edit_text);
retypeEmailEditText = (EditText) findViewById(R.id.retype_email_edit_text);
mobileEditText = (EditText) findViewById(R.id.mobile_edit_text);
passwordEditText = (EditText) findViewById(R.id.password_edit_text);
retypePasswordEditText = (EditText) findViewById(R.id.retype_password_edit_text);
livingCityEditText = (EditText) findViewById(R.id.city_edit_text);
address1EditText = (EditText) findViewById(R.id.address1_edit_text);
address2EditText = (EditText) findViewById(R.id.address2_edit_text);
address3EditText = (EditText) findViewById(R.id.address3_edit_text);
signUpFormBirthMonthContent = (TextView)findViewById(R.id.sign_up_form_month_of_birth_content);
signUpFormBirthYearContent = (TextView)findViewById(R.id.sign_up_form_year_of_birth_content);
signUpFormGenderContent = (TextView)findViewById(R.id.sign_up_form_gender_content);
signUpFormSkinTypeContent = (TextView)findViewById(R.id.sign_up_form_skin_type_content);
signUpFormLivingCountryContent = (TextView)findViewById(R.id.sign_up_form_living_country_content);
// Get Chooses
try {
monthContentList = CustomServiceFactory.getAccountService().getFormContentWithType("month");
genderContentList = CustomServiceFactory.getAccountService().getFormContentWithType("gender");
skinContentList = CustomServiceFactory.getAccountService().getFormContentWithType("skin");
countryContentList = CustomServiceFactory.getAccountService().getFormContentWithType("country");
Calendar today = Calendar.getInstance();
int year = today.get(Calendar.YEAR);
for (int i = 0; i < 100; i++) {
yearContentList[i] = String.valueOf(year-i);
}
} catch (FanclException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addListener();
}
private void addListener() {
// Back Button
RelativeLayout signUpFormBackBtn = (RelativeLayout)findViewById(R.id.sign_up_form_back_btn);
signUpFormBackBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
finish();
}
});
// Confirm Button
RelativeLayout signUpFormConfirmBtn = (RelativeLayout)findViewById(R.id.sign_up_form_confirm_button);
signUpFormConfirmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
callRegister();
}
});
// Month of Birth Button
RelativeLayout signUpFormMonthOfBirthBtn = (RelativeLayout)findViewById(R.id.sign_up_form_month_of_birth_button);
signUpFormMonthOfBirthBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(SignUpFormActivity.this, CustomSpinnerActivity.class);
intent.putExtra(Constants.CUSTOM_SPINNER_STRING_ARRAY, formContentToStringArray(monthContentList));
startActivityForResult(intent, Constants.CUSTOM_SPINNER_SIGN_UP_MONTH);
}
});
// Year of Birth Button
RelativeLayout signUpFormYearOfBirthBtn = (RelativeLayout)findViewById(R.id.sign_up_form_year_of_birth_button);
signUpFormYearOfBirthBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(SignUpFormActivity.this, CustomSpinnerActivity.class);
intent.putExtra(Constants.CUSTOM_SPINNER_STRING_ARRAY, yearContentList);
startActivityForResult(intent, Constants.CUSTOM_SPINNER_SIGN_UP_YEAR);
}
});
// Gender
RelativeLayout signUpFormGenderBtn = (RelativeLayout)findViewById(R.id.sign_up_form_gender_button);
signUpFormGenderBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(SignUpFormActivity.this, CustomSpinnerActivity.class);
intent.putExtra(Constants.CUSTOM_SPINNER_STRING_ARRAY, formContentToStringArray(genderContentList));
startActivityForResult(intent, Constants.CUSTOM_SPINNER_SIGN_UP_GENDER);
}
});
// Skin Type
RelativeLayout signUpFormSkinTypeBtn = (RelativeLayout)findViewById(R.id.sign_up_form_skin_type_button);
signUpFormSkinTypeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(SignUpFormActivity.this, CustomSpinnerActivity.class);
intent.putExtra(Constants.CUSTOM_SPINNER_STRING_ARRAY, formContentToStringArray(skinContentList));
startActivityForResult(intent, Constants.CUSTOM_SPINNER_SIGN_UP_SKIN);
}
});
// Living Country
RelativeLayout signUpFormLivingCountryBtn = (RelativeLayout)findViewById(R.id.sign_up_form_living_country_button);
signUpFormLivingCountryBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(SignUpFormActivity.this, CustomSpinnerActivity.class);
intent.putExtra(Constants.CUSTOM_SPINNER_STRING_ARRAY, formContentToStringArray(countryContentList));
startActivityForResult(intent, Constants.CUSTOM_SPINNER_SIGN_UP_COUNTRY);
}
});
}
private void callRegister() {
boolean isError = false;
String errorMsg = "";
if (nameEditText.getText().toString().length() == 0 && surnameEditText.getText().toString().length() == 0) {
isError = true;
errorMsg = "registration first name empty";
}
else if (emailEditText.getText().toString().length() == 0 || retypeEmailEditText.getText().toString().length() == 0) {
isError = true;
errorMsg = "registration email empty";
}
else if (mobileEditText.getText().toString().length() == 0) {
isError = true;
errorMsg = "registration mobile empty";
}
else if (passwordEditText.getText().toString().length() == 0 || retypePasswordEditText.getText().toString().length() == 0) {
isError = true;
errorMsg = "registration password empty";
}
else if (signUpFormGenderContent.getText().length() == 0) {
isError = true;
errorMsg = "gender empty";
}
if (isError) {
GeneralServiceFactory.getAlertDialogService().makeNativeDialog(this, "", errorMsg, getString(R.string.confirm_btn_title),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
dialog.cancel();
}
},
null,
null,
false, false);
}
else {
String country;
String skinType;
String monthOfBirth;
String yearOfBirth;
String gender;
if (countryIndex != -1) {
FormContent formContent = countryContentList.get(countryIndex);
country = formContent.getCode();
}
else {
country = "-";
}
if (skinIndex != -1) {
FormContent formContent = skinContentList.get(skinIndex);
skinType = formContent.getCode();
}
else {
skinType = "-";
}
if (monthIndex != -1) {
FormContent formContent = monthContentList.get(monthIndex);
monthOfBirth = formContent.getCode();
}
else {
monthOfBirth = "";
}
if (yearIndex != -1) {
yearOfBirth = yearContentList[yearIndex];
}
else {
yearOfBirth = "";
}
if (genderIndex != -1) {
FormContent formContent = genderContentList.get(genderIndex);
gender = formContent.getCode();
}
else {
FormContent formContent = genderContentList.get(0);
gender = formContent.getCode();
}
String id = getIntent().getStringExtra("id");
String surname = surnameEditText.getText().toString();
String name = nameEditText.getText().toString();
String mobile = mobileEditText.getText().toString();
String email = emailEditText.getText().toString();
String retypeEmail = retypeEmailEditText.getText().toString();
String password = passwordEditText.getText().toString();
String retypePassword = retypePasswordEditText.getText().toString();
String address1 = address1EditText.getText().toString();
String address2 = address2EditText.getText().toString();
String address3 = address3EditText.getText().toString();
String city = livingCityEditText.getText().toString();
UserRegistrationParam userRegistrationParam = new UserRegistrationParam(id, surname, name, mobile, email,
retypeEmail, gender, password, retypePassword, skinType, address1, address2, address3, country,
city, monthOfBirth, yearOfBirth);
RegistrationAsyncTask registrationAsyncTask = new RegistrationAsyncTask(this);
registrationAsyncTask.execute(userRegistrationParam);
if (checkLoadingDialog()) {
loadingDialog.loading();
final Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
if (loadingDialog != null) {
loadingDialog.stop();
}
// when the task active then close the dialog
t.cancel();
}
}, Constants.LOADING_DIALOG_TIMEOUT);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (Constants.CUSTOM_SPINNER_SIGN_UP_MONTH) : {
if (resultCode == SignUpFormActivity.RESULT_OK) {
int newInt = data.getIntExtra(Constants.CUSTOM_SPINNER_RETURN_KEY, 0);
// TODO Update your TextView.
LogController.log("SignUpFormActivity onActivityResult : " + newInt);
monthIndex = newInt;
signUpFormBirthMonthContent.setText(formContentToString(monthContentList.get(newInt)));
}
break;
}
case (Constants.CUSTOM_SPINNER_SIGN_UP_YEAR) : {
if (resultCode == SignUpFormActivity.RESULT_OK) {
int newInt = data.getIntExtra(Constants.CUSTOM_SPINNER_RETURN_KEY, 0);
// TODO Update your TextView.
LogController.log("SignUpFormActivity onActivityResult : " + newInt);
yearIndex = newInt;
signUpFormBirthYearContent.setText(yearContentList[newInt]);
}
break;
}
case (Constants.CUSTOM_SPINNER_SIGN_UP_GENDER) : {
if (resultCode == SignUpFormActivity.RESULT_OK) {
int newInt = data.getIntExtra(Constants.CUSTOM_SPINNER_RETURN_KEY, 0);
// TODO Update your TextView.
LogController.log("SignUpFormActivity onActivityResult : " + newInt);
genderIndex = newInt;
signUpFormGenderContent.setText(formContentToString(genderContentList.get(newInt)));
}
break;
}
case (Constants.CUSTOM_SPINNER_SIGN_UP_SKIN) : {
if (resultCode == SignUpFormActivity.RESULT_OK) {
int newInt = data.getIntExtra(Constants.CUSTOM_SPINNER_RETURN_KEY, 0);
// TODO Update your TextView.
LogController.log("SignUpFormActivity onActivityResult : " + newInt);
skinIndex = newInt;
signUpFormSkinTypeContent.setText(formContentToString(skinContentList.get(newInt)));
}
break;
}
case (Constants.CUSTOM_SPINNER_SIGN_UP_COUNTRY) : {
if (resultCode == SignUpFormActivity.RESULT_OK) {
int newInt = data.getIntExtra(Constants.CUSTOM_SPINNER_RETURN_KEY, 0);
// TODO Update your TextView.
LogController.log("SignUpFormActivity onActivityResult : " + newInt);
countryIndex = newInt;
signUpFormLivingCountryContent.setText(formContentToString(countryContentList.get(newInt)));
}
break;
}
}
}
private String[] formContentToStringArray(List<FormContent> formContentList) {
LogController.log("formContentToStringArray");
LogController.log("formContentList.size() = " + formContentList.size());
String[] currentLangContent = new String[formContentList.size()];
for (int i = 0; i < formContentList.size(); i++) {
FormContent formContent = formContentList.get(i);
if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.EN)) {
currentLangContent[i] = formContent.getTitleEn();
} else if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.TC)) {
currentLangContent[i] = formContent.getTitleZh();
} else if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.SC)) {
currentLangContent[i] = formContent.getTitleSc();
}
LogController.log("currentLangContent[i] = " + currentLangContent[i]);
}
return currentLangContent;
}
private String formContentToString(FormContent formContent) {
String returnString = "";
if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.EN)) {
returnString = formContent.getTitleEn();
} else if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.TC)) {
returnString = formContent.getTitleZh();
} else if (localeService.getCurrentLanguageType().equals(LANGUAGE_TYPE.SC)) {
returnString = formContent.getTitleSc();
}
return returnString;
}
@Override
public void onPostExecuteCallback(FanclGeneralResult results) {
// TODO Auto-generated method stub
if (loadingDialog != null) {
loadingDialog.stop();
}
if (results == null) {
return;
}
// status: 0 is success, 1 is fail, 2 is success but not yet register, 3 is success but not yet accept TOS
if (results.getStatus() == 0) {
LogController.log("Status : 0 is success");
Intent intent = new Intent(SignUpFormActivity.this, LoginTOSActivity.class);
intent.putExtra(Constants.LOGIN_FORM_MEMBER_ID_KEY, getIntent().getStringExtra("id"));
startActivity(intent);
finish();
} else if (results.getStatus() == 1) {
LogController.log("Status : 1 is fail");
GeneralServiceFactory.getAlertDialogService().makeNativeDialog(this, "",
GeneralServiceFactory.getLocaleService().textByLangaugeChooser(this, results.getErrMsgEn(), results.getErrMsgZh(), results.getErrMsgSc()),
getString(R.string.ok_btn_title),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
dialog.cancel();
}
},
"", null, false, false);
}
}
}