package com.dreamspace.uucampus.ui.activity.Login;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.api.UUService;
import com.dreamspace.uucampus.common.utils.CommonUtils;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.common.utils.PreferenceUtils;
import com.dreamspace.uucampus.model.ErrorRes;
import com.dreamspace.uucampus.model.api.RegisterReq;
import com.dreamspace.uucampus.model.api.RegisterRes;
import com.dreamspace.uucampus.model.api.SendVerifyReq;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by money on 2015/10/13.
*/
public class RegisterActivity extends AbsActivity implements View.OnClickListener,Handler.Callback{
@Bind(R.id.register_userName)
EditText registerUserName;
@Bind(R.id.register_verify_code)
EditText registerVerifyCode;
@Bind(R.id.register_get_code)
TextView registerGetCode;
@Bind(R.id.register_pwd)
EditText registerPwd;
@Bind(R.id.register_pwd_confirm)
EditText registerPwdConfirm;
@Bind(R.id.register_button)
Button registerButton;
private String phoneNum;
private String code;
private String password;
private String passwordConfirm;
private UUService mService;
private int timer = 60;
private Handler mHandler;
private static final int BEGIN_TIMER = 23333;
private String text = "发送验证码";
@Override
protected int getContentView() {
return R.layout.activity_register_page;
}
@Override
protected void prepareDatas() {
ButterKnife.bind(this);
mHandler = new Handler(this);
mService = ApiManager.getService(getApplicationContext());
}
@Override
protected void initViews() {
initListener();
}
@Override
protected View getLoadingTargetView() {
return null;
}
private void initListener(){
registerGetCode.setOnClickListener(this);
registerButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.register_get_code:
sendVerifyCode();
break;
case R.id.register_button:
register();
break;
}
}
//获取手机验证码
private void sendVerifyCode(){
if(isPhoneValid()){
if (NetUtils.isNetworkConnected(this)) {
SendVerifyReq req = new SendVerifyReq();
req.setPhone_num(phoneNum);
mService.sendVerifyCode(req, new Callback<Response>() {
@Override
public void success(Response o, Response response) {
showToast("验证码发送成功~");
registerGetCode.setEnabled(false);
mHandler.sendEmptyMessage(BEGIN_TIMER);
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
} else {
showNetWorkError();
}
}
}
//注册
private void register(){
if(isPhoneValid()&&isRestValid()){
if(NetUtils.isNetworkConnected(this)){
final RegisterReq registerReq = new RegisterReq();
registerReq.setPhone_num(phoneNum);
registerReq.setCode(code);
registerReq.setPassword(password);
mService.register(registerReq, new Callback<RegisterRes>() {
@Override
public void success(RegisterRes registerRes, Response response) {
PreferenceUtils.putString(RegisterActivity.this.getApplicationContext(),
PreferenceUtils.Key.ACCESS, registerRes.getAccess_token());
mHandler.removeMessages(BEGIN_TIMER);
readyGoThenKill(RegisterInfoActivity.class);
}
@Override
public void failure(RetrofitError error) {
ErrorRes errorRes = (ErrorRes) error.getBodyAs(ErrorRes.class);
showInnerError(error);
}
});
}else {
showNetWorkError();
}
}
}
//检查手机号码是否输入正确
private boolean isPhoneValid(){
phoneNum = registerUserName.getText().toString();
if (CommonUtils.isEmpty(phoneNum)) {
showToast("请先输入您的手机号");
return false;
}
if (phoneNum.length() != 11) {
showToast("请检查您的手机号是否正确");
registerUserName.requestFocus();
return false;
}
return true;
}
//检查验证码密码是否输入正确
private boolean isRestValid(){
code = registerVerifyCode.getText().toString();
password = registerPwd.getText().toString();
passwordConfirm = registerPwdConfirm.getText().toString();
if (CommonUtils.isEmpty(code)) {
showToast("请先输入您输入的验证码");
registerVerifyCode.requestFocus();
return false;
}
if(CommonUtils.isEmpty(password)){
showToast("请输入您设置的密码");
registerPwd.requestFocus();
return false;
}
if(CommonUtils.isEmpty(passwordConfirm)){
showToast("请再次输入您设置的密码");
registerPwdConfirm.requestFocus();
return false;
}
if(!password.equals(passwordConfirm)){
showToast("两次输入的密码不一致,请重新输入");
registerPwdConfirm.setText("");
registerPwdConfirm.requestFocus();
return false;
}
return true;
}
@Override
//获取验证码的间隔限制
public boolean handleMessage(Message message) {
if(message.what == BEGIN_TIMER){
if(timer==0){
if(registerGetCode!=null){
registerGetCode.setText(text);
registerGetCode.setEnabled(true);
timer=60;
}
}else{
if(registerGetCode!=null){
registerGetCode.setText(timer + "秒后重新发送");
timer--;
mHandler.sendEmptyMessageDelayed(BEGIN_TIMER, 1000);
}
}
}
return true;
}
}