lmw
2023-06-13 adf8013576cbdd12e5ebea8ff7e32baf5d558b27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
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
            }
        }
    }
}