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.model.api.ResetReq;
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 FindBackActivity extends AbsActivity implements View.OnClickListener,Handler.Callback {
@Bind(R.id.findback_userName)
EditText findBackUserName;
@Bind(R.id.findback_verify_code)
EditText findBackVerifyCode;
@Bind(R.id.findback_get_code)
TextView findBackGetCode;
@Bind(R.id.findback_pwd)
EditText findBackPwd;
@Bind(R.id.findback_pwd_confirm)
EditText findBackPwdConfirm;
@Bind(R.id.findback_button)
Button findBackButton;
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_findback_pwd;
}
@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;
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.findback_get_code:
sendVerifyCode();
break;
case R.id.findback_button:
reset();
break;
}
}
private void initListener(){
findBackGetCode.setOnClickListener(this);
findBackButton.setOnClickListener(this);
}
//获取手机验证码
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) {
findBackGetCode.setEnabled(false);
mHandler.sendEmptyMessage(BEGIN_TIMER);
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
} else {
showNetWorkError();
}
}
}
//重置密码
private void reset(){
if(isPhoneValid()&&isRestValid()){
if(NetUtils.isNetworkConnected(this)) {
final ResetReq resetReq = new ResetReq();
resetReq.setPhone_num(phoneNum);
resetReq.setCode(code);
resetReq.setPassword(password);
mService.resetPassword(resetReq, new Callback<Response>() {
@Override
public void success(Response response, Response response2) {
if (response.getStatus() == 200) {
mHandler.removeMessages(BEGIN_TIMER);
showToast("密码重置成功,请重新登录~");
finish();
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}else {
showNetWorkError();
}
}
}
//检查手机号码是否输入正确
private boolean isPhoneValid(){
phoneNum = findBackUserName.getText().toString();
if (CommonUtils.isEmpty(phoneNum)) {
showToast("请先输入您的手机号");
return false;
}
if (phoneNum.length() != 11) {
showToast("请检查您的手机号是否正确");
findBackUserName.requestFocus();
return false;
}
return true;
}
//检查验证码密码是否输入正确
private boolean isRestValid(){
code = findBackVerifyCode.getText().toString();
password = findBackPwd.getText().toString();
passwordConfirm = findBackPwdConfirm.getText().toString();
if (CommonUtils.isEmpty(code)) {
showToast("请先输入您输入的验证码");
findBackVerifyCode.requestFocus();
return false;
}
if(CommonUtils.isEmpty(password)){
showToast("请输入您设置的密码");
findBackPwd.requestFocus();
return false;
}
if(CommonUtils.isEmpty(passwordConfirm)){
showToast("请再次输入您设置的密码");
findBackPwdConfirm.requestFocus();
return false;
}
if(!password.equals(passwordConfirm)){
showToast("两次输入的密码不一致,请重新输入");
findBackPwdConfirm.setText("");
findBackPwdConfirm.requestFocus();
return false;
}
return true;
}
@Override
public boolean handleMessage(Message message) {
if(message.what == BEGIN_TIMER){
if(timer==0){
if(findBackGetCode!=null){
findBackGetCode.setText(text);
findBackGetCode.setEnabled(true);
timer=60;
}
}else{
if(findBackGetCode!=null){
findBackGetCode.setText(timer + "秒后重新发送");
timer--;
mHandler.sendEmptyMessageDelayed(BEGIN_TIMER, 1000);
}
}
}
return true;
}
}