package com.igo.user.ui.trip import android.app.Activity import android.graphics.Color import android.view.View import android.widget.CheckBox import android.widget.TextView import androidx.core.os.bundleOf import cn.sinata.xldutils.gone import cn.sinata.xldutils.invisible import cn.sinata.xldutils.toBrowser import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.utils.optDouble import cn.sinata.xldutils.utils.showAllowingStateLoss import cn.sinata.xldutils.visible import com.google.android.gms.maps.CameraUpdateFactory import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.SupportMapFragment import com.google.android.gms.maps.model.BitmapDescriptorFactory import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.LatLngBounds import com.google.android.gms.maps.model.Marker import com.google.android.gms.maps.model.MarkerOptions import com.google.android.gms.maps.model.Polyline import com.google.android.gms.maps.model.PolylineOptions import com.igo.user.R import com.igo.user.dialog.ShareDialog import com.igo.user.dialog.TipDialog import com.igo.user.network.Apis import com.igo.user.network.HttpManager import com.igo.user.network.entity.Order import com.igo.user.network.entity.Point import com.igo.user.network.request import com.igo.user.ui.TransparentStatusBarActivity import com.igo.user.utils.Const import com.igo.user.utils.IGoShareUtils import com.igo.user.utils.google.AMapKit import com.igo.user.utils.showMoney import com.igo.user.views.CenterFlowLayout import com.igo.user.views.RatingBar //import com.share.utils.ShareUtils //import com.umeng.socialize.UMShareListener //import com.umeng.socialize.bean.SHARE_MEDIA import org.jetbrains.anko.find import org.jetbrains.anko.sdk27.coroutines.onClick import org.jetbrains.anko.startActivity class OrderDetailWithMapActivity :TransparentStatusBarActivity()/*,UMShareListener*/ { override fun setContentView() = R.layout.activity_map_order_detail private val id by lazy { intent.getIntExtra("id",0) } private val type by lazy { intent.getIntExtra("type",0) } private var score = 0 private var order: Order? = null private val points = arrayListOf() //一至五星评价内容 private val list1 by lazy { arrayListOf(getString(R.string.车辆不符), getString(R.string.司机不符), getString(R.string.态度恶劣), getString(R.string.行为不端), getString(R.string.违反交通), getString(R.string.额外收费)) } private val list2 by lazy { arrayListOf(getString(R.string.故意绕路), getString(R.string.额外加人), getString(R.string.送错地点), getString(R.string.车辆肮脏), getString(R.string.司机迟到), getString(R.string.中途换车)) } private val list3 by lazy { arrayListOf(getString(R.string.车内异味), getString(R.string.开车不稳), getString(R.string.道路不熟), getString(R.string.接打电话), getString(R.string.索要好评), getString(R.string.索要小费)) } private val list4 by lazy { arrayListOf(getString(R.string.基本整洁), getString(R.string.基本礼貌), getString(R.string.基本平稳), getString(R.string.基本准时), getString(R.string.基本友好), getString(R.string.基本合理)) } private val list5 by lazy { arrayListOf(getString(R.string.车辆美观), getString(R.string.内部整洁), getString(R.string.路线优化), getString(R.string.接待礼貌), getString(R.string.驾驶平稳), getString(R.string.服务卓越)) } private fun getLabelList(star:Int):List{ return when(star){ 5->list5 4->list4 3->list3 2->list2 else->list1 } } private val checkList = arrayListOf() lateinit var aMap: GoogleMap private val tv_money by lazy { find(R.id.tv_money) } private val tv_title by lazy { find(R.id.tv_title) } private val tv_name by lazy { find(R.id.tv_name) } private val tv_car by lazy { find(R.id.tv_car) } private val tv_action by lazy { find(R.id.tv_action) } private val rating by lazy { find(R.id.rating) } private val tv_car_info by lazy { find(R.id.tv_car_info) } private val tv_score by lazy { find(R.id.tv_score) } private val fl_label by lazy { find(R.id.fl_label) } override fun initClick() { tv_money.onClick { startActivity("order" to order) } rating.setOnRatingChangeListener { if (!rating.clickable) return@setOnRatingChangeListener tv_action.visible() if (it.toInt()!=score) inputLabel(it.toInt()) score = it.toInt() } tv_action.setOnClickListener { HttpManager.orderEvaluate(id,score,type,checkList.joinToString (","){ it }).request(this){_,_-> setResult(Activity.RESULT_OK) myToast(getString(R.string.评价成功)) tv_action.gone() tv_title.text = getString(R.string.评价详情) rating.isClickable = false getData() getRedMoney() } } } override fun initView() { title = getString(R.string.订单详情) /* titleBar.addRightButton(getString(R.string.开收据),onClickListener = View.OnClickListener { if (order!=null){ if ((order?.receipt ?: "".isNullOrEmpty()) == true){ myToast(getString(R.string.收据不可用)) }else toBrowser(order?.receipt?:"") } })*/ getData() queryTrack() initMap() } private fun initMap() { val fragment = supportFragmentManager.findFragmentById(R.id.mMapView) as SupportMapFragment AMapKit.initMap(fragment){ aMap = it aMap.uiSettings.isMyLocationButtonEnabled = false } } private fun getData(){ HttpManager.queryOrderInfo(id,type).request(this){ _, data-> order = data data?.run { tv_name.text = driverName tv_car.text = licensePlate tv_car_info.text = "$brand·$carColor" tv_score.text = String.format("%.1f",score) if (payMoney == 0.0) tv_money.invisible() else tv_money.text = payMoney.showMoney(this@OrderDetailWithMapActivity) if (startMarker == null) setMarker(LatLng(startLat,startLon)) if (endMarker == null) setMarker(LatLng(endLat,endLon),false) val builder = LatLngBounds.builder() builder.include(LatLng(startLat,startLon)).include( LatLng(endLat,endLon)) aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng((startLat+endLat)/2,(startLon+endLon)/2),12f)) setStateUI() if (points.isNotEmpty()&&routeOverlay == null) setRoute() } } } private fun setStateUI() { when(order?.state){ 8->{ //待评价 tv_title.text = getString(R.string.匿名评价司机) } 9->{ //已完成 tv_title.text = getString(R.string.评价详情) rating.isClickable = false rating.setStar(order!!.orderScore.toFloat()) fl_label.removeAllViews() val list = arrayListOf() list.addAll(getLabelList(order!!.orderScore)) val split = order!!.evaluate.split(",") list.forEach { val view = layoutInflater.inflate(R.layout.item_score_label, null) as CheckBox view.text = it view.isEnabled = false if (it in split) view.isChecked = true fl_label.addView(view) } } } } private fun queryTrack(){ HttpManager.queryTrack(id,type).request(this){_,data-> data?.let { points.addAll(it) if (order!=null){ setRoute() } } } } private fun inputLabel(star: Int) { fl_label.removeAllViews() checkList.clear() val list = arrayListOf() list.addAll(getLabelList(star)) list.forEach { val view = layoutInflater.inflate(R.layout.item_score_label, null) as CheckBox view.text = it view.setOnCheckedChangeListener { _, isChecked -> if (isChecked) checkList.add(view.text.toString()) else checkList.remove(view.text.toString()) } fl_label.addView(view) } } private var routeOverlay: Polyline? = null private fun setRoute(){ val polylineOptions = PolylineOptions() polylineOptions.color(Color.parseColor("#00C47A")).width(18f) polylineOptions.add(LatLng(order!!.startLat,order!!.startLon)) points.map { LatLng(it.lat,it.lon) }.forEach { polylineOptions.add(it) } polylineOptions.add(LatLng(order!!.endLat,order!!.endLon)) routeOverlay = aMap.addPolyline(polylineOptions) } private var startMarker: Marker? = null private var endMarker: Marker? = null /** * @param isStart true:起点标记 false:终点标记 */ private fun setMarker(latLon: LatLng, isStart:Boolean = true) { val language = SPUtils.instance().getString("language", "en") if (isStart){ val ic = when(language){ "en"->R.mipmap.starting_point_e "ch"->R.mipmap.starting_point else->R.mipmap.starting_point_f } val icon = BitmapDescriptorFactory.fromResource(ic) val options = MarkerOptions() options.position(latLon).icon(icon) startMarker = aMap.addMarker(options) }else{ val ic = when(language){ "en"->R.mipmap.end_point_e "ch"->R.mipmap.end_point else->R.mipmap.end_point_f } val options = MarkerOptions() options.position(latLon).icon(BitmapDescriptorFactory.fromResource(ic)) endMarker = aMap.addMarker(options) } } /** * 评价成功以后需要查询是否可以获得分享红包 */ private fun getRedMoney(){ HttpManager.queryRedMoney(id,type).request(this){_,data-> data?.let { val money = it.optDouble("amount") if (money>0){ val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to String.format(getString(R.string.分享APP给好友可以获得红包),"$money"), "ok" to getString(R.string.去分享),"cancel" to getString(R.string.不分享)) tipDialog.setCallback(object :TipDialog.OnClickCallback{ override fun onOk() { val shareDialog = ShareDialog() shareDialog.setCallback(object :ShareDialog.Callback{ override fun onOk(way: Int) { //0:wx 1:qq 2:msg val language = SPUtils.instance().getString("language","en") val languageP = if (language == "ch") 1 else if (language == "en") 2 else 3 val url = String.format(Apis.SHARE_URL, languageP, languageP,SPUtils.instance().getInt(Const.User.USER_ID)) if (way == 3) IGoShareUtils.shareWA(this@OrderDetailWithMapActivity,getString(R.string.下载注册即送打车券),url) else if (way == 4) IGoShareUtils.shareFB(this@OrderDetailWithMapActivity,url,getString(R.string.下载注册即送打车券),null) else if (way == 5) IGoShareUtils.shareTweet(this@OrderDetailWithMapActivity,getString(R.string.下载注册即送打车券),url) else { // ShareUtils.share(this@OrderDetailWithMapActivity,if (way == 0) SHARE_MEDIA.WEIXIN else if (way == 1) SHARE_MEDIA.QQ else // SHARE_MEDIA.MORE, getString(R.string.下载注册即送打车券),Const.Share.TITLE, // url,this@OrderDetailWithMapActivity,"") } shareDialog.dismiss() getRed(money) } }) shareDialog.showAllowingStateLoss(supportFragmentManager,"share") } override fun onCancel() {} }) tipDialog.showAllowingStateLoss(supportFragmentManager,"red") } } } } /** * 分享后获得红包 */ private fun getRed(money:Double){ HttpManager.shareRedEnvelope(id,type).request(this){_,_-> val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to String.format(getString(R.string.您收到一个打车红包下次打车可抵扣金额),money.showMoney(this)), "ok" to getString(R.string.确定),"isAlert" to true) tipDialog.showAllowingStateLoss(supportFragmentManager,"red") } } // override fun onResult(p0: SHARE_MEDIA?) { // } // // override fun onCancel(p0: SHARE_MEDIA?) { // } // // override fun onError(p0: SHARE_MEDIA?, p1: Throwable?) { // } // // override fun onStart(p0: SHARE_MEDIA?) { // } }