package com.itbox.grzl.activity;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.RatingBar;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnCheckedChanged;
import butterknife.OnClick;
import com.itbox.fx.core.L;
import com.itbox.fx.net.GsonResponseHandler;
import com.itbox.fx.util.DateUtil;
import com.itbox.fx.widget.CircleImageView;
import com.itbox.grzl.Api;
import com.itbox.grzl.bean.OrderInfoModel;
import com.itbox.grzl.bean.TeacherExtension;
import com.itbox.grzl.bean.UserListItem;
import com.itbox.grzl.engine.ConsultationEngine;
import com.itbox.grzl.engine.PayEngine;
import com.itbox.grzl.engine.alipay.Result;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.zhaoliewang.grzl.R;
public class PayActivity extends BaseActivity {
@InjectView(R.id.ll_select_time)
protected View ll_select_time;
@InjectView(R.id.iv_avatar)
protected CircleImageView iv_avatar;
@InjectView(R.id.tv_name)
protected TextView tv_name;
@InjectView(R.id.ratingbar)
protected RatingBar rb_star;
@InjectView(R.id.tv_jobtype)
protected TextView tv_jobtype;
@InjectView(R.id.tv_teachertype)
protected TextView tv_teachertype;
@InjectView(R.id.tv_teacher_description)
protected TextView tv_teacher_description;
@InjectView(R.id.tv_buy_count)
protected TextView tv_buy_count;
@InjectView(R.id.tv_answer_count)
protected TextView tv_answer_count;
@InjectView(R.id.tv_price)
protected TextView tv_price;
@InjectView(R.id.gv_time)
protected GridView gv_time;
@InjectView(R.id.et_phone)
protected EditText et_phone;
@InjectView(R.id.tv_select_time)
protected TextView tv_select_time;
@InjectView(R.id.tv_date)
protected TextView tv_date;
@InjectView(R.id.cb_client)
protected CheckBox cb_client;
@InjectView(R.id.cb_web)
protected CheckBox cb_web;
private TeacherExtension teacherExtension;
private UserListItem teacher;
private List<TimeSpan> mTimeList;
private TimeAdapter mAdapter;
private int mTimeSelected = -1;
private boolean isPicture;
private boolean isClient;
private boolean isFree;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_pay);
teacher = (UserListItem) getIntent().getSerializableExtra("teacher");
teacherExtension = (TeacherExtension) getIntent().getSerializableExtra(
"teacherExtension");
ButterKnife.inject(this);
showLeftBackButton();
setTitle("购买咨询");
initTeacherInfo();
tv_date.setText(DateUtil.getTodayString());
if ("picture".equals(getIntent().getStringExtra("type"))) {
ll_select_time.setVisibility(View.GONE);
if (teacherExtension.getFinalPictureprice() > 0)
tv_price.setText("¥" + teacherExtension.getFinalPictureprice());
else {
tv_price.setText("免费");
isFree = true;
}
isPicture = true;
} else {
initTime();
if (teacherExtension.getFinalPhoneprice() > 0)
tv_price.setText("¥" + teacherExtension.getFinalPhoneprice());
else {
tv_price.setText("免费");
isFree = true;
}
}
isClient = true;
}
@OnCheckedChanged({ R.id.cb_client, R.id.cb_web })
public void payCheck(CompoundButton cb, boolean isCheck) {
if (isCheck == true) {
switch (cb.getId()) {
case R.id.cb_client:
cb_web.setChecked(false);
isClient = true;
break;
case R.id.cb_web:
cb_client.setChecked(false);
isClient = false;
break;
}
}
}
@OnClick(R.id.tv_buy)
public void onBuy(View v) {
if (isFree) {
isClient = true;
}
// 购买
if (isPicture) {
buyPicture();
} else {
String phone = et_phone.getText().toString();
if (TextUtils.isEmpty(phone)) {
showToast("请输入接听电话");
return;
}
String time = tv_select_time.getText().toString();
if ("未选择".equals(time)) {
showToast("请选择时间");
return;
}
buyPhone();
}
}
@OnClick(R.id.tv_date)
public void selectDate() {
// 选择某天
Intent intent = new Intent(this, SelectAfterDateActivity.class);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && data != null) {
tv_date.setText(data
.getStringExtra(SelectDateActivity.Extra.SelectedTimeStr));
initTime();
}
}
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
Result resultAli = new Result((String) msg.obj);
String resultStatus = resultAli.getResultStatus();
if (TextUtils.equals(resultStatus, "9000")) {
goPaySuccess();
} else if (TextUtils.equals(resultStatus, "6001")) {
showToast("支付取消");
} else {
Intent intent = new Intent(mActThis, PayFailActivity.class);
intent.putExtra("info", resultAli.getResultStatus());
// 跳支付失败
startActivity(intent);
}
}
};
private void goPaySuccess() {
// 跳支付成功
Intent intent = new Intent(this, PaySuccessActivity.class);
intent.putExtra("price",
isPicture ? teacherExtension.getFinalPictureprice()
: teacherExtension.getFinalPhoneprice());
startActivity(intent);
finish();
};
/**
* 购买电话咨询
*/
private void buyPhone() {
TimeSpan bean = mAdapter.getItem(mTimeSelected);
String phone = et_phone.getText().toString();
String date = tv_date.getText().toString();
showProgressDialog("正在下订单...");
if (isClient) {
ConsultationEngine.buyPhone(teacher.getUserid(),
teacherExtension.getFinalPhoneprice() + "",
teacherExtension.getPhoneprice(), date,
bean.getHour() + "", bean.getMin() + "", phone, isClient,
new GsonResponseHandler<OrderInfoModel>(
OrderInfoModel.class) {
@Override
public void onFinish() {
dismissProgressDialog();
}
@Override
public void onSuccess(OrderInfoModel object) {
if (object.isSuccess()) {
// 支付成功直接跳转
goPaySuccess();
} else {
PayEngine.startAliPayClient(mActThis,
object.getApipost(), object.getSign(),
handler);
}
}
});
} else {
ConsultationEngine.buyPhone(teacher.getUserid(),
teacherExtension.getFinalPhoneprice() + "",
teacherExtension.getPhoneprice(), date,
bean.getHour() + "", bean.getMin() + "", phone, isClient,
new GsonResponseHandler<OrderInfoModel>(
OrderInfoModel.class) {
@Override
public void onFinish() {
dismissProgressDialog();
}
@Override
public void onSuccess(int statusCode, String content) {
Intent intent = new Intent(mActThis,
WebBrowserActivity.class);
intent.putExtra("html", content);
startActivity(intent);
}
@Override
public void onFailure(Throwable e, int statusCode,
String content) {
L.i(content);
if (statusCode == 417) {
Intent intent = new Intent(mActThis,
WebBrowserActivity.class);
intent.putExtra("html", content);
startActivity(intent);
}
}
});
}
}
/**
* 购买图文咨询
*/
private void buyPicture() {
showProgressDialog("正在下订单...");
if (isClient) {
ConsultationEngine.buyPicture(teacher.getUserid(),
teacherExtension.getFinalPictureprice() + "",
teacherExtension.getPictureprice(), isClient,
new GsonResponseHandler<OrderInfoModel>(
OrderInfoModel.class) {
@Override
public void onFinish() {
dismissProgressDialog();
}
@Override
public void onSuccess(OrderInfoModel object) {
if (object.isSuccess()) {
// 支付成功直接跳转
goPaySuccess();
} else {
PayEngine.startAliPayClient(mActThis,
object.getApipost(), object.getSign(),
handler);
}
}
});
} else {
ConsultationEngine.buyPicture(teacher.getUserid(),
teacherExtension.getFinalPictureprice() + "",
teacherExtension.getPictureprice(), isClient,
new GsonResponseHandler<OrderInfoModel>(
OrderInfoModel.class) {
@Override
public void onFinish() {
dismissProgressDialog();
}
@Override
public void onSuccess(int statusCode, String content) {
Intent intent = new Intent(mActThis,
WebBrowserActivity.class);
intent.putExtra("html", content);
startActivity(intent);
}
@Override
public void onFailure(Throwable e, int statusCode,
String content) {
L.i(content);
if (statusCode == 417) {
Intent intent = new Intent(mActThis,
WebBrowserActivity.class);
intent.putExtra("html", content);
startActivity(intent);
}
}
});
}
}
private void initTeacherInfo() {
ImageLoader.getInstance().displayImage(
Api.User.getAvatarUrl(teacher.getUseravatarversion()),
iv_avatar);
tv_answer_count.setText("答题" + teacher.getAnswercount() + "次");
tv_buy_count.setText(teacher.getBuycount() + "人购买");
tv_jobtype.setText(ConsultationEngine.getJobType(teacher.getJobtype()));
tv_name.setText(teacher.getUserrealname());
tv_teacher_description.setText(teacher.getUserintroduction());
tv_teachertype.setText(ConsultationEngine.getTeacherType(teacher
.getTeachertype()));
rb_star.setProgress(Integer.parseInt(teacher.getTeacherlevel()));
}
private void initTime() {
// 获取可预订时间
ConsultationEngine.getTeacherBooking(teacher.getUserid(), null);
// 计算时间段
int startTime = Integer.parseInt(teacherExtension.getStarttime());
int endTime = Integer.parseInt(teacherExtension.getEndtime());
if (startTime == endTime) {
return;
}
mTimeList = new ArrayList<TimeSpan>();
boolean isToday = DateUtil.getTodayString().equals(
tv_date.getText().toString());
for (int i = startTime; i <= endTime; i++) {
int jMax = 60;
if (endTime == i) {
// 最后一个时间点,不能计算30
jMax = 30;
}
for (int j = 0; j < jMax; j += 30) {
if (isToday && (i * 60 + j) < DateUtil.getTodayMin()) {
continue;
}
TimeSpan bean = new TimeSpan();
bean.setHour(i);
bean.setMin(j);
mTimeList.add(bean);
}
}
mAdapter = new TimeAdapter();
gv_time.setAdapter(mAdapter);
gv_time.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mTimeSelected = position;
mAdapter.notifyDataSetChanged();
tv_select_time.setText(tv_date.getText() + " "
+ mAdapter.getItem(position).getText());
}
});
}
class TimeAdapter extends BaseAdapter {
@Override
public int getCount() {
return mTimeList.size();
}
@Override
public TimeSpan getItem(int position) {
return mTimeList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder = null;
if (view == null) {
view = View.inflate(getApplicationContext(),
R.layout.item_grid_time_span, null);
holder = new ViewHolder();
holder.tv_time = (TextView) view.findViewById(R.id.tv_time);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
TimeSpan bean = getItem(position);
holder.tv_time.setText(bean.getText());
if (mTimeSelected == position) {
// 选中
holder.tv_time.setBackgroundColor(getResources().getColor(
R.color.time_span_blue));
} else {
if (bean.getState() == TimeSpan.STATE_NOR) {
holder.tv_time.setBackgroundColor(getResources().getColor(
R.color.time_span_green));
} else {
holder.tv_time.setBackgroundColor(getResources().getColor(
R.color.time_span_red));
}
}
return view;
}
}
static class ViewHolder {
TextView tv_time;
}
static class TimeSpan {
public static final int STATE_NOR = 0;
public static final int STATE_BOOK = 1;
private String text;
private int hour;
private int min;
private int state;
public String getText() {
if (text == null) {
text = new StringBuilder()
.append(hour >= 10 ? hour : "0" + hour).append(":")
.append(min >= 10 ? min : "0" + min).toString();
}
return text;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}
}