package com.fuban.user.ui.charter
|
|
import android.app.Activity
|
import android.content.Intent
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.callPhone
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.utils.isValidPhone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.optString
|
import com.fuban.user.FBApplication
|
import com.fuban.user.R
|
import com.fuban.user.dialog.AlertDialog
|
import com.fuban.user.dialog.CharterReserveTimeDialog
|
import com.fuban.user.dialog.SingleWheelDialog
|
import com.fuban.user.interfaces.StringCallback
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.requestByF
|
import com.fuban.user.ui.H5Activity
|
import com.fuban.user.ui.MainActivity
|
import com.fuban.user.utils.Const
|
import com.fuban.user.utils.IntegerInputFilter
|
import kotlinx.android.synthetic.main.fragment_charter.*
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
import org.jetbrains.anko.support.v4.startActivity
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
|
class CharterFragment:BaseFragment() {
|
override fun contentViewId() = R.layout.fragment_charter
|
|
private var carTypeId = 0 //车型
|
private var min = 0 //最低价
|
private var max = 0 //最高价
|
|
private val days = arrayListOf("一天","两天","三天","四天","五天","六天","七天")
|
private var day = 0
|
private val mainActivity by lazy {
|
activity as MainActivity
|
}
|
private val singleWheelDialog by lazy {
|
val d = SingleWheelDialog()
|
d.arguments = bundleOf("title" to "选择用车时长","data" to days)
|
d.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_duration.text = rlt
|
day = days.indexOf(rlt)+1
|
calculate()
|
}
|
})
|
d
|
}
|
|
private val successDialog by lazy {
|
val alertDialog = AlertDialog()
|
alertDialog.arguments = bundleOf("msg" to "提交成功!我们将根据您的需求,与您取得联系,请您保持手机的畅通。")
|
alertDialog.setDismissCallback(object :AlertDialog.OnDismiss{
|
override fun onDismiss() {
|
clearData()
|
}
|
})
|
alertDialog
|
}
|
|
|
override fun onFirstVisibleToUser() {
|
et_count.filters = arrayOf(IntegerInputFilter(999))
|
|
getPhone()
|
tv_rule.onClick { getRule() }
|
|
tv_time.onClick {
|
val charterReserveTimeDialog = CharterReserveTimeDialog()
|
charterReserveTimeDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_time.text = rlt
|
}
|
})
|
charterReserveTimeDialog.show(fragmentManager!!,"time")
|
}
|
tv_duration.onClick {
|
if (!singleWheelDialog.isAdded)
|
singleWheelDialog.show(fragmentManager!!,"count")
|
}
|
tv_type.onClick {
|
startActivityForResult<CharterTypeActivity>(Const.RequestCode.CHAPTER_TYPE)
|
}
|
tv_usage.onClick {
|
startActivityForResult<ChooseUsageActivity>(Const.RequestCode.CHAPTER_USAGE,
|
"data" to arrayListOf("旅游","商务","会议"))
|
}
|
tv_action.onClick {
|
if (mainActivity.checkLogin()){
|
val time = tv_time.text.toString()
|
if (time.isEmpty()){
|
myToast("请选择用车时间")
|
return@onClick
|
}
|
if (day == 0){
|
myToast("请选择用车时长")
|
return@onClick
|
}
|
if (carTypeId == 0){
|
myToast("请选择车型")
|
return@onClick
|
}
|
val usage = tv_usage.text.toString()
|
if (usage.isEmpty()){
|
myToast("请选择车辆用途")
|
return@onClick
|
}
|
val countS = et_count.text.toString()
|
if(countS.isEmpty()){
|
myToast("请填写乘车人数")
|
return@onClick
|
}
|
val name = et_name.text.toString()
|
if (name.isEmpty()){
|
myToast("请填写联系人姓名")
|
return@onClick
|
}
|
val phone = et_phone.text.toString()
|
if (!phone.isValidPhone()){
|
myToast("请填写正确的联系电话")
|
return@onClick
|
}
|
showDialog()
|
tv_action.isEnabled = false
|
HttpManager.orderCharteredCar(day,"$time 00:00:00","${FBApplication.lon},${FBApplication.lat}",name,
|
phone,usage,countS.toInt(),carTypeId).requestByF(this@CharterFragment,success = {_,_->
|
successDialog.show(fragmentManager!!,"suc")
|
tv_action.isEnabled = true
|
}){_,_-> tv_action.isEnabled = true}
|
}
|
}
|
}
|
|
private fun getPhone(){
|
HttpManager.queryPhones(FBApplication.chooseCityCode).requestByF(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).requestByF(this){_,data->
|
data?.let {
|
tv_rule.setOnClickListener {_->
|
startActivity<H5Activity>("title" to "包车规则","url" to it.optString("content"))
|
}
|
}
|
}
|
}
|
|
/**
|
* 计算价格
|
*/
|
private fun calculate(){
|
if (carTypeId!=0&&day!=0){
|
tv_price.text = "预计价:¥%d-¥%d".format(min*day,max*day)
|
}
|
}
|
|
private fun clearData(){
|
tv_time.text = ""
|
tv_duration.text = ""
|
tv_type.text = ""
|
tv_usage.text = ""
|
et_count.setText("")
|
et_name.setText("")
|
et_phone.setText("")
|
tv_price.text = ""
|
day = 0
|
carTypeId = 0
|
et_phone.clearFocus()
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK&&data!=null){
|
if (requestCode == Const.RequestCode.CHAPTER_TYPE){
|
tv_type.text = data.getStringExtra("name")
|
carTypeId = data.getIntExtra("id",0)
|
min = data.getIntExtra("min",0)
|
max = data.getIntExtra("max",0)
|
calculate()
|
}else if (requestCode == Const.RequestCode.CHAPTER_USAGE){
|
tv_usage.text = data.getStringExtra("data")
|
}
|
}
|
}
|
}
|