package com.fuban.user.ui.crosscity
|
|
import android.app.Activity
|
import android.content.Intent
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.optInt
|
import cn.sinata.xldutils.visible
|
import com.fuban.user.FBApplication
|
import com.fuban.user.R
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.CarPrice
|
import com.fuban.user.network.entity.Order
|
import com.fuban.user.network.request
|
import com.fuban.user.ui.TransparentStatusBarActivity
|
import com.fuban.user.dialog.ChooseReserveTimeDialog
|
import com.fuban.user.dialog.PassengerCountDialog
|
import com.fuban.user.ui.trip.ChoosePositionActivity
|
import com.fuban.user.ui.trip.TripActivity
|
import com.fuban.user.utils.Const
|
import kotlinx.android.synthetic.main.activity_shuttle_bus.*
|
import kotlinx.android.synthetic.main.item_shuttke_price.view.*
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.startActivityForResult
|
|
class ShuttleBusActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_shuttle_bus
|
|
private val order by lazy {
|
intent.getParcelableExtra<Order>("order")
|
}
|
private val isStart by lazy { //true 出发摆渡,false 到达摆渡
|
intent.getBooleanExtra("isStart", true)
|
}
|
|
//出发经纬度
|
private var startLon = 0.0
|
private var startLat = 0.0
|
private var startName = ""
|
|
//到达经纬度
|
private var endLon = 0.0
|
private var endLat = 0.0
|
private var endName = ""
|
|
private var time = "" //出发时间
|
|
private val cars = arrayListOf<CarPrice>() //摆渡车车型
|
|
override fun initClick() {
|
tv_start.onClick {
|
startActivityForResult<ChoosePositionActivity>(1
|
,"cityName" to if (isStart) "" else order.endCity
|
)
|
}
|
tv_end.onClick {
|
startActivityForResult<ChoosePositionActivity>(2, "isStart" to false
|
,"cityName" to if (isStart) order.startCity else order.endCity)
|
}
|
tv_time.onClick {
|
showTimeDialog()
|
}
|
tv_passenger_num.onClick {
|
val passengerCountDialog = PassengerCountDialog()
|
passengerCountDialog.arguments = bundleOf("max" to 6)
|
passengerCountDialog.setCallback(object : PassengerCountDialog.Callback {
|
override fun onOk(num: Int) {
|
tv_passenger_num.text = "${num}人"
|
}
|
})
|
passengerCountDialog.show(supportFragmentManager, "num")
|
}
|
tv_retry.onClick {
|
getCarType()
|
}
|
tv_action.onClick {
|
if (startLat == 0.0){
|
myToast("请选择出发地址")
|
return@onClick
|
}
|
if (endLat == 0.0){
|
myToast("请选择目的地址")
|
return@onClick
|
}
|
if (time.isEmpty()){
|
myToast("请选择发车时间")
|
return@onClick
|
}
|
val ids = cars.filter { it.isChecked }.joinToString(",") { it.id.toString() }
|
if (ids.isEmpty()){
|
myToast("请选择车型")
|
return@onClick
|
}
|
tv_action.isEnabled = false
|
HttpManager.saveOrderFerry(endName,endLat,endLon,1,FBApplication.lat,FBApplication.lon,startName,
|
startLat,startLon,time,ids,order.orderId,if (isStart) 1 else 2)
|
.request(this@ShuttleBusActivity,success = {_,data->
|
myToast("下单成功")
|
startActivity<TripActivity>("id" to data?.optInt("id"),
|
"type" to if (ids == "0") Const.OrderType.TYPE_TAXI else Const.OrderType.TYPE_SPECIAL)
|
finish()
|
}){_,_->
|
tv_action.isEnabled = true
|
}
|
}
|
}
|
|
override fun initView() {
|
title = "摆渡车"
|
if (isStart) {
|
endName = order.startAddress
|
tv_end.text = endName
|
endLat = order.startLat
|
endLon = order.startLon
|
} else {
|
startName = order.endAddress
|
tv_start.text = startName
|
startLat = order.endLat
|
startLon = order.endLon
|
}
|
// time = order.travelTime1 //刘矩:时间不用从跨城带出
|
// tv_time.text = order.travelTime
|
tv_passenger_num.text = "${order.peopleNumber}人"
|
}
|
|
private fun showTimeDialog() {
|
val chooseReserveTimeDialog = ChooseReserveTimeDialog()
|
chooseReserveTimeDialog.setCallback(object : ChooseReserveTimeDialog.Callback {
|
override fun onOk(s: String, formatS: String) {
|
tv_time.text = s
|
time = formatS
|
}
|
})
|
chooseReserveTimeDialog.show(supportFragmentManager, "time")
|
}
|
|
/**
|
*查询专车类型和价格
|
*/
|
private fun getCarType() {
|
if (startLat != 0.0 && endLat != 0.0) {
|
showDialog()
|
cars.clear()
|
ll_type.removeAllViews()
|
tv_error.gone()
|
tv_retry.gone()
|
HttpManager.queryServerCarModel("$startLon,$startLat", "$endLon,$endLat", 1)
|
.request(this, success = { _, data ->
|
data?.let { list ->
|
list.add(CarPrice(name = "出租车"))
|
cars.addAll(list)
|
cars.forEachIndexed { index, it ->
|
val view =
|
layoutInflater.inflate(R.layout.item_shuttke_price, ll_type, false)
|
view.tv_name.text = it.name
|
view.tv_price.text =
|
if (it.name == "出租车") "打表计费" else String.format("预估%.2f", it.amount)
|
view.iv_car.setImageURI(it.img)
|
view.onClick { _ ->
|
cars[index].isChecked = !cars[index].isChecked
|
view.iv_check.isChecked = cars[index].isChecked
|
}
|
ll_type.addView(view)
|
}
|
}
|
}) { _, _ ->
|
tv_error.visible()
|
tv_retry.visible()
|
}
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK && data != null) {
|
when (requestCode) {
|
1 -> {
|
startLat = data.getDoubleExtra("lat", 0.0)
|
startLon = data.getDoubleExtra("lon", 0.0)
|
startName = data.getStringExtra("name") ?: ""
|
tv_start.text = startName
|
getCarType()
|
}
|
2 -> {
|
endLat = data.getDoubleExtra("lat", 0.0)
|
endLon = data.getDoubleExtra("lon", 0.0)
|
endName = data.getStringExtra("name") ?: ""
|
tv_end.text = endName
|
getCarType()
|
}
|
}
|
}
|
}
|
}
|