package com.dreamspace.uucampus.ui.activity.Order;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
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.Card;
import com.dreamspace.uucampus.model.api.CreateOrderReq;
import com.dreamspace.uucampus.model.api.CreateOrderRes;
import com.dreamspace.uucampus.ui.activity.Personal.CouponCardAct;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.dialog.ProgressDialog;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/10/20.
*/
public class OrderConfirmAct extends AbsActivity{
@Bind(R.id.good_name_tv)
TextView goodNameTv;
@Bind(R.id.good_single_price_tv)
TextView singlePriceTv;
@Bind(R.id.good_num_add_ll)
LinearLayout numAddLl;
@Bind(R.id.good_num_reduce_ll)
LinearLayout numReduceLl;
@Bind(R.id.good_num_tv)
TextView goodNumTv;
@Bind(R.id.coupon_use_iv)
ImageView couponUseIv;
@Bind(R.id.get_coupon_btn)
Button getCouponBtn;
@Bind(R.id.total_price_tv)
TextView totalPriceTv;
@Bind(R.id.total_price_before_reduce_tv)
TextView priceBeforeReduceTv;
@Bind(R.id.bundling_phone_tv)
TextView phoneTv;
@Bind(R.id.campus_tv)
TextView campusTv;
@Bind(R.id.remark_et)
EditText remarkEt;
@Bind(R.id.submit_order_btn)
Button submitBtn;
// @Bind(R.id.coupon_use_rl)
// RelativeLayout couponUseRl;
public static final String GOOD_NAME = "good_name";
public static final String PRICE = "price";
public static final String DISCOUNT = "discount";
public static final String GOOD_ID = "good_id";
private String goodName;
private String goodId;
private float price;
private float discount;
private boolean actDestory = false;
private boolean useCard = false;//用来判断用户是否使用优惠卡
private int quantity = 1;//用户当前要购买的商品数量
private ProgressDialog progressDialog;
private static final int GO_PAY_ORDER = 1;
@Override
protected int getContentView() {
return R.layout.activity_order_confirm;
}
@Override
protected void prepareDatas() {
Bundle bundle = getIntent().getExtras();
goodName = bundle.getString(GOOD_NAME);
goodId = bundle.getString(GOOD_ID);
price = Float.parseFloat(bundle.getString(PRICE));
discount = Float.parseFloat(bundle.getString(DISCOUNT));
checkCard();
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(getString(R.string.order_confirm));
priceBeforeReduceTv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
phoneTv.setText(PreferenceUtils.getString(this, PreferenceUtils.Key.PHONE));
campusTv.setText(PreferenceUtils.getString(this,PreferenceUtils.Key.LOCATION));//之后直接从preference里调用
goodNumTv.setText(quantity + "");
goodNameTv.setText(goodName);
singlePriceTv.setText(getString(R.string.RMB) + price / 100);
initListeners();
}
@Override
protected View getLoadingTargetView() {
return null;
}
private void initListeners(){
numAddLl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(quantity < 999){
goodNumTv.setText(++quantity+"");
priceBeforeReduceTv.setText(getString(R.string.RMB) + price / 100 * quantity);
if(useCard){
totalPriceTv.setText(getString(R.string.RMB) + (price - discount) / 100 * quantity);
}else{
totalPriceTv.setText(getString(R.string.RMB) + price / 100 * quantity);
}
}
}
});
numReduceLl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(quantity > 1){
goodNumTv.setText(--quantity+"");
priceBeforeReduceTv.setText(getString(R.string.RMB) + price * quantity / 100);
if(useCard){
totalPriceTv.setText(getString(R.string.RMB) + (price - discount) / 100 * quantity);
}else{
totalPriceTv.setText(getString(R.string.RMB) + price * quantity / 100);
}
}
}
});
//提交订单
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initProgressDialog();
createOrder();
}
});
}
//初始化用户有优惠卡时候的视图
private void initHasCardViews(){
useCard = true;
priceBeforeReduceTv.setText(getString(R.string.RMB) + price / 100 * quantity);
totalPriceTv.setText(getString(R.string.RMB) + (price - discount) / 100 * quantity);
getCouponBtn.setVisibility(View.INVISIBLE);
}
private void initNoCardViews(){
useCard = false;
couponUseIv.setVisibility(View.INVISIBLE);
getCouponBtn.setVisibility(View.VISIBLE);
priceBeforeReduceTv.setText(getString(R.string.RMB) + price / 100 * quantity);
totalPriceTv.setText(getString(R.string.RMB) + price /100 * quantity);
priceBeforeReduceTv.setVisibility(View.INVISIBLE);
getCouponBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
readyGo(CouponCardAct.class);
}
});
}
private void checkCard(){
if(!NetUtils.isNetworkConnected(this)){
showToast(getString(R.string.check_network_to_get_card_info));
initNoCardViews();
return;
}
ApiManager.getService(this).checkCard(new Callback<Card>() {
@Override
public void success(Card card, Response response) {
if (card != null && !actDestory) {
initHasCardViews();
}
}
@Override
public void failure(RetrofitError error) {
if (((ErrorRes) error.getBodyAs(ErrorRes.class)).getCode() == 404 && !actDestory) {
//没有优惠卡
initNoCardViews();
} else if(!actDestory){
showInnerError(error);
initNoCardViews();
}
}
});
}
//创建订单
private void createOrder(){
progressDialog.show();
if(!NetUtils.isNetworkConnected(this)){
progressDialog.dismiss();
showNetWorkError();
return;
}
CreateOrderReq orderReq = new CreateOrderReq();
orderReq.setGood_id(goodId);
orderReq.setQuantity(quantity);
orderReq.setRemark(remarkEt.getText().toString());
ApiManager.getService(this).createOrder(orderReq, new Callback<CreateOrderRes>() {
@Override
public void success(CreateOrderRes createOrderRes, Response response) {
if (createOrderRes != null) {
Bundle bundle = new Bundle();
bundle.putString(OrderPayAct.ORDER_NAME, goodName);
bundle.putString(OrderPayAct.ORDER_ID, createOrderRes.getOrder_id());
bundle.putFloat(OrderPayAct.REST_TO_PAY, useCard ? quantity * (price - discount) : quantity * price);
bundle.putFloat(OrderPayAct.ORDER_TOTAL_PRICE, quantity * price);
progressDialog.dismiss();
readyGoForResult(OrderPayAct.class, GO_PAY_ORDER, bundle);
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
private void initProgressDialog(){
if(progressDialog != null){
return;
}
progressDialog = new ProgressDialog(this);
progressDialog.setContent(getString(R.string.creating_order));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == GO_PAY_ORDER && resultCode == RESULT_OK){
//支付成功
finish();
}
}
@Override
protected void onDestroy() {
actDestory = true;
super.onDestroy();
}
}