package com.kuanzhai.user.ui.charter
|
|
import android.app.Activity
|
import android.content.Intent
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.callPhone
|
import cn.sinata.xldutils.clickDelay
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.optString
|
import cn.sinata.xldutils.utils.parserTime
|
import com.google.gson.Gson
|
import com.kuanzhai.user.KuanzhaiApplication
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.dialog.OfficialCharterTimeDialog
|
import com.kuanzhai.user.network.HttpManager
|
import com.kuanzhai.user.network.entity.Passenger
|
import com.kuanzhai.user.network.request
|
import com.kuanzhai.user.ui.H5Activity
|
import com.kuanzhai.user.ui.TransparentStatusBarActivity
|
import com.kuanzhai.user.ui.official.adapter.CharterPassengerAdapter
|
import com.kuanzhai.user.ui.trip.ChoosePositionActivity
|
import kotlinx.android.synthetic.main.fragment_charter.*
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.startActivityForResult
|
|
class CharterActivity:TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.fragment_charter
|
|
private var start = ""
|
private var startLat = 0.0
|
private var startLon = 0.0
|
private var end = ""
|
private var endLat = 0.0
|
private var endLon = 0.0
|
|
private val passenger = arrayListOf<Passenger>()
|
private val adapter by lazy { CharterPassengerAdapter(passenger,tv_count) }
|
|
override fun initClick() {
|
tv_start_time.clickDelay {
|
val chooseReserveTimeDialog = OfficialCharterTimeDialog()
|
chooseReserveTimeDialog.setCallback(object : OfficialCharterTimeDialog.Callback {
|
override fun onOk(formatS: String) {
|
tv_start_time.text = formatS
|
tv_end_time.text = ""
|
tv_duration.text = "0天"
|
}
|
})
|
chooseReserveTimeDialog.show(supportFragmentManager, "time")
|
}
|
tv_end_time.clickDelay {
|
if (tv_start_time.text.isEmpty()){
|
myToast("请选择开始时间")
|
return@clickDelay
|
}
|
val chooseReserveTimeDialog = OfficialCharterTimeDialog()
|
chooseReserveTimeDialog.arguments = bundleOf("startTime" to tv_start_time.text.toString())
|
chooseReserveTimeDialog.setCallback(object : OfficialCharterTimeDialog.Callback {
|
override fun onOk(formatS: String) {
|
tv_end_time.text = formatS
|
tv_duration.text = "%.1f天".format((formatS.parserTime("yyyy-MM-dd HH:mm") - tv_start_time.text.toString().parserTime("yyyy-MM-dd HH:mm")).toDouble()/(24L*60*60*1000))
|
}
|
})
|
chooseReserveTimeDialog.show(supportFragmentManager, "time")
|
}
|
tv_start.setOnClickListener {
|
startActivityForResult<ChoosePositionActivity>(1)
|
}
|
tv_end.setOnClickListener {
|
startActivityForResult<ChoosePositionActivity>(2,"isStart" to false)
|
}
|
tv_add.setOnClickListener {
|
if (passenger.size == 4)
|
myToast("最多可添加4人")
|
else{
|
passenger.add(Passenger())
|
tv_count.text = "${passenger.size}"
|
adapter.notifyDataSetChanged()
|
}
|
}
|
tv_action.setOnClickListener {
|
val startTime = tv_start_time.text.toString()
|
if (startTime.isEmpty()){
|
myToast("请选择用车开始时间")
|
return@setOnClickListener
|
}
|
val endTime = tv_end_time.text.toString()
|
if (endTime.isEmpty()){
|
myToast("请选择用车结束时间")
|
return@setOnClickListener
|
}
|
if (startLat == 0.0){
|
myToast("请选择出发地")
|
return@setOnClickListener
|
}
|
if (endLat == 0.0){
|
myToast("请选择目的地")
|
return@setOnClickListener
|
}
|
if (passenger.filter { it.name.isEmpty() }.isNotEmpty()){
|
myToast("乘车人姓名不能为空")
|
return@setOnClickListener
|
}
|
val rst = Intent()
|
rst.putExtra("startTime",startTime).putExtra("endTime",endTime)
|
.putExtra("startName",start).putExtra("startLat",startLat).putExtra("startLon",startLon)
|
.putExtra("endName",end).putExtra("endLat",endLat).putExtra("endLon",endLon)
|
.putExtra("isRemind",sw_remind.isChecked).putExtra("passenger",passenger)
|
setResult(Activity.RESULT_OK,rst)
|
finish()
|
}
|
}
|
|
override fun initView() {
|
title = "包车"
|
|
val startTime = intent.getStringExtra("startTime")
|
tv_start_time.text = startTime
|
val endTime = intent.getStringExtra("endTime")
|
tv_end_time.text = endTime
|
if (startTime.isNotEmpty()&&endTime.isNotEmpty())
|
tv_duration.text = "%.1f天".format((endTime.parserTime("yyyy-MM-dd HH:mm") - startTime.parserTime("yyyy-MM-dd HH:mm")).toDouble()/(24L*60*60*1000))
|
|
start = intent.getStringExtra("start")
|
startLat = intent.getDoubleExtra("startLat",0.0)
|
startLon = intent.getDoubleExtra("startLon",0.0)
|
tv_start.text = start
|
|
end = intent.getStringExtra("end")
|
endLat = intent.getDoubleExtra("endLat",0.0)
|
endLon = intent.getDoubleExtra("endLon",0.0)
|
tv_end.text = end
|
|
sw_remind.isChecked = intent.getBooleanExtra("isRemind",false)
|
passenger.addAll(intent.getParcelableArrayListExtra("passenger"))
|
|
rv_passenger.layoutManager = LinearLayoutManager(this)
|
rv_passenger.adapter = adapter
|
getPhone()
|
getRule()
|
}
|
|
private fun getPhone(){
|
HttpManager.queryPhones(KuanzhaiApplication.chooseCityCode).request(this){ _, data->
|
data?.filter { it.type == 3 }?.forEach {
|
tv_phone.text = "包车调度电话:%s".format(it.phone)
|
tv_phone.onClick {_->
|
callPhone(it.phone)
|
}
|
}
|
}
|
}
|
|
private fun getRule(){
|
HttpManager.getH5(14).request(this){_,data->
|
data?.let {
|
tv_rule.setOnClickListener {_->
|
startActivity<H5Activity>("title" to "包车规则","url" to it.optString("content"))
|
}
|
}
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK&&data!=null){
|
if (requestCode == 1){
|
startLat = data.getDoubleExtra("lat", 0.0)
|
startLon = data.getDoubleExtra("lon", 0.0)
|
start = data.getStringExtra("name") ?: ""
|
tv_start.text = start
|
}else{
|
endLat = data.getDoubleExtra("lat", 0.0)
|
endLon = data.getDoubleExtra("lon", 0.0)
|
end = data.getStringExtra("name") ?: ""
|
tv_end.text = end
|
}
|
}
|
}
|
}
|