Commit 383060cd authored by David黄金龙's avatar David黄金龙

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  //  赴港
  //  预约
  //  赴港
  //  重新预约逻辑
  //  赴港
  //  预约赴港
parents 2c18f7ce 5f9f3637
...@@ -168,7 +168,7 @@ GEM ...@@ -168,7 +168,7 @@ GEM
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-pgyer (0.2.9) fastlane-plugin-pgyer (0.2.9)
fastlane-plugin-upload_to_bugly (0.1.2) fastlane-plugin-upload_to_bugly (0.1.2)
fastlane-plugin-versioning (0.5.2) fastlane-plugin-versioning (0.6.0)
ffi (1.16.3) ffi (1.16.3)
fourflusher (2.3.1) fourflusher (2.3.1)
fuzzy_match (2.0.4) fuzzy_match (2.0.4)
...@@ -294,4 +294,4 @@ DEPENDENCIES ...@@ -294,4 +294,4 @@ DEPENDENCIES
fastlane-plugin-versioning fastlane-plugin-versioning
BUNDLED WITH BUNDLED WITH
2.5.14 2.5.9
...@@ -258,6 +258,10 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource { ...@@ -258,6 +258,10 @@ extension YHServiceOrderListView : UITableViewDelegate,UITableViewDataSource {
navigationController?.pushViewController(vc) navigationController?.pushViewController(vc)
} else if model.type == 24 { } else if model.type == 24 {
//赴港时间预约 //赴港时间预约
let vc = YHCertificateAppointViewController()
vc.orderId = orderID
self.navigationController?.pushViewController(vc)
} else if model.type == 25 { } else if model.type == 25 {
//赴港行程指引 //赴港行程指引
} else if model.type == 26 { } else if model.type == 26 {
......
...@@ -8,16 +8,25 @@ ...@@ -8,16 +8,25 @@
import UIKit import UIKit
enum YHAppointButtnStatus: Int {
case hidden = 0 // 隐藏按钮
case confirmSubmitAppoint = 1 // 显示确认提交
case nextStepToPay = 2 // 显示下一步去缴费
}
class YHCertificateAppointViewController: YHBaseViewController { class YHCertificateAppointViewController: YHBaseViewController {
var orderId: Int = 0 var orderId: Int = 0
var bottomStatus: YHAppointButtnStatus = .hidden
var sections: [[YHAppointItem]] = [] var sections: [[YHAppointItem]] = []
// 第一个section数据组 // 第一个section数据组
var items1: [YHAppointItem] = [] var normalAppointInfoArr: [YHAppointItem] = []
// 只装选人的cell // 第二个section 只装选人的cell
var items2: [YHAppointItem] = [] var selectMemberGroupArr: [YHAppointItem] = []
// 只装抢号中、已抢号 // 第三个section 只装抢号中、已抢号
var items3: [YHAppointItem] = [] var grabbingNumInfoArr: [YHAppointItem] = []
// 第四个section 只装已抢号
var grabbedNumInfoArr:[YHAppointItem] = []
// 需要继续预约人员 // 需要继续预约人员
var waitList: [YHAppointMemberGroupModel] = [] var waitList: [YHAppointMemberGroupModel] = []
...@@ -27,9 +36,10 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -27,9 +36,10 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 无需预约办证人员 // 无需预约办证人员
var noNeedAppointMembers:[YHHKMemberModel] = [] var noNeedAppointMembers:[YHHKMemberModel] = []
// 需要办证人员 // 需要预约办证人员
var waitAppointMembers:[YHHKMemberModel] = [] var waitAppointMembers:[YHHKMemberModel] = []
let viewModel = YHCerAppointViewModel() var viewModel = YHCerAppointViewModel()
let bottomViewHeight = 98.0
// 是否赴港办证 // 是否赴港办证
var isNeedGoHK: Int = 2 // 0不需要 1需要赴港 2没有选择 var isNeedGoHK: Int = 2 // 0不需要 1需要赴港 2没有选择
...@@ -117,14 +127,14 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -117,14 +127,14 @@ class YHCertificateAppointViewController: YHBaseViewController {
} }
self.bottomView.snp.makeConstraints { make in self.bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.bottom.equalToSuperview()
make.height.equalTo(98) make.height.equalTo(0)
} }
requetHKPlaceList() requetHKPlaceList()
requestData() requestData()
} }
func requestData() { func requestData(completion:(()->())? = nil) {
YHHUD.show(.progress(message: "加载中...")) YHHUD.show(.progress(message: "加载中..."))
self.requetIsGoToHK { // 请求是否赴港办证选项和是否已预约过 self.requetIsGoToHK { // 请求是否赴港办证选项和是否已预约过
self.requetAppointMembers { // 请求赴港办证人员名单 self.requetAppointMembers { // 请求赴港办证人员名单
...@@ -133,10 +143,12 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -133,10 +143,12 @@ class YHCertificateAppointViewController: YHBaseViewController {
self.requestAppointResultList { // 请求预约结果 self.requestAppointResultList { // 请求预约结果
YHHUD.hide() YHHUD.hide()
self.updateData() self.updateData()
completion?()
} }
} else { // 没有预约过 } else { // 没有预约过
YHHUD.hide() YHHUD.hide()
self.updateData() self.updateData()
completion?()
} }
} }
} }
...@@ -147,13 +159,14 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -147,13 +159,14 @@ class YHCertificateAppointViewController: YHBaseViewController {
YHHUD.hide() YHHUD.hide()
sections.removeAll() sections.removeAll()
items1.removeAll() normalAppointInfoArr.removeAll()
items2.removeAll() selectMemberGroupArr.removeAll()
items3.removeAll() grabbingNumInfoArr.removeAll()
grabbedNumInfoArr.removeAll()
// *赴港办证 // *赴港办证
let item1 = YHAppointItem(type: .goHKMakeCertificate) let item1 = YHAppointItem(type: .goHKMakeCertificate)
items1.append(item1) normalAppointInfoArr.append(item1)
if self.isNeedGoHK != 1 { // 是否赴港办证没有选择是 if self.isNeedGoHK != 1 { // 是否赴港办证没有选择是
refreshData() refreshData()
...@@ -162,42 +175,49 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -162,42 +175,49 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 赴港办证选择了是 // 赴港办证选择了是
// *温馨提示 // *温馨提示
let item2 = YHAppointItem(type: .warmTips) let item2 = YHAppointItem(type: .warmTips)
items1.append(item2) normalAppointInfoArr.append(item2)
// *无需预约办证成员(未满11岁) // *无需预约办证成员(未满11岁)
if self.noNeedAppointMembers.count > 0 { if self.noNeedAppointMembers.count > 0 {
let item3 = YHAppointItem(type: .noNeedMakeCertificateMembers) let item3 = YHAppointItem(type: .noNeedMakeCertificateMembers)
items1.append(item3) normalAppointInfoArr.append(item3)
} }
if self.reservationToHK == 0 { // 没有预约过人员 if self.reservationToHK == 0 { // 没有预约过人员
// 赴港激活签证 申请人是否统一赴港激活签证 // 赴港激活签证 申请人是否统一赴港激活签证
let item4 = YHAppointItem(type: .activeVisa) let item4 = YHAppointItem(type: .activeVisa)
items1.append(item4) normalAppointInfoArr.append(item4)
if self.isAllMembersGo { // 申请人统一赴港激活签证 if self.isAllMembersGo { // 申请人统一赴港激活签证
let item5 = YHAppointItem(type: .confirmGoHKInfo) let item5 = YHAppointItem(type: .confirmGoHKInfo)
let group = YHSelectGroupMemberModel() item5.itemIndex = 0
group.arr = waitAppointMembers.deepCopy() let group1 = YHSelectGroupMemberModel()
item5.model = group group1.isAllMembersGoHK = true
group1.arr = waitAppointMembers.deepCopy().map {
let member = $0
member.isSelected = true
return member
}
item5.model = group1
item5.placeList = self.viewModel.placeList item5.placeList = self.viewModel.placeList
item5.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? [] item5.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(item5) selectMemberGroupArr.append(item5)
} else { // 申请人不是统一赴港激活签证 } else { // 申请人不是统一赴港激活签证
let item6 = YHAppointItem(type: .confirmGoHKInfo) let item6 = YHAppointItem(type: .confirmGoHKInfo)
item6.itemIndex = 0 item6.itemIndex = 0
let group1 = YHSelectGroupMemberModel() let group1 = YHSelectGroupMemberModel()
group1.arr = waitAppointMembers.deepCopy().map { group1.arr = waitAppointMembers.deepCopy().map {
var member = $0 let member = $0
member.isSelected = true member.isSelected = true
return member return member
} }
item6.model = group1 item6.model = group1
item6.placeList = self.viewModel.placeList item6.placeList = self.viewModel.placeList
item6.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? [] item6.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(item6) selectMemberGroupArr.append(item6)
} }
...@@ -206,19 +226,19 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -206,19 +226,19 @@ class YHCertificateAppointViewController: YHBaseViewController {
// 待预约的赴港成员 // 待预约的赴港成员
if waitAppointMembers.count > 0 { if waitAppointMembers.count > 0 {
let item5 = YHAppointItem(type: .needReAppointMembers) let item5 = YHAppointItem(type: .needReAppointMembers)
items1.append(item5) normalAppointInfoArr.append(item5)
} }
// 赴港办理抢号中批次 // 赴港办理抢号中批次
if self.waitList.count > 0 { if self.waitList.count > 0 {
let item6 = YHAppointItem(type: .grabingNumberBatch) let item6 = YHAppointItem(type: .grabingNumberBatch)
items3.append(item6) grabbingNumInfoArr.append(item6)
} }
// 赴港办理已抢号批次 // 赴港办理已抢号批次
if self.successList.count > 0 { if self.successList.count > 0 {
let item7 = YHAppointItem(type: .haveGrabedNumberBatch) let item7 = YHAppointItem(type: .haveGrabedNumberBatch)
items3.append(item7) grabbedNumInfoArr.append(item7)
} }
} }
refreshData() refreshData()
...@@ -228,38 +248,58 @@ class YHCertificateAppointViewController: YHBaseViewController { ...@@ -228,38 +248,58 @@ class YHCertificateAppointViewController: YHBaseViewController {
sections.removeAll() sections.removeAll()
if items1.count > 0 { if normalAppointInfoArr.count > 0 {
sections.append(items1) sections.append(normalAppointInfoArr)
} }
if items2.count > 0 { if selectMemberGroupArr.count > 0 {
sections.append(items2) sections.append(selectMemberGroupArr)
} }
if items3.count > 0 { if grabbingNumInfoArr.count > 0 {
sections.append(items3) sections.append(grabbingNumInfoArr)
} }
self.tableView.reloadData() self.tableView.reloadData()
// 底部按钮更新 // 底部按钮更新
var isBottomViewHidden = true self.bottomStatus = .hidden
var isNeedToPay = false // YES 展示确认提交 NO展示下一步去缴费
if self.reservationToHK == 0 { // 没有预约人员 if self.reservationToHK == 0 { // 没有预约人员
if self.isNeedGoHK == 1 { // 要赴港办证 if self.isNeedGoHK == 1 { // 赴港办证选是
isBottomViewHidden = false // 底部按钮显示确认提交
isNeedToPay = false self.bottomStatus = .confirmSubmitAppoint
} else if self.isNeedGoHK == 0 { // 赴港办证选否
// 底部按钮显示下一步去缴费
self.bottomStatus = .nextStepToPay
} else { // 赴港办证未选择
// 不显示底部按钮
self.bottomStatus = .hidden
} }
} else { // 有预约过 } else { // 有预约过
if waitList.count <= 0 { // 全部都预约完了 if waitAppointMembers.count <= 0 { // 全部都预约完了
isBottomViewHidden = true self.bottomStatus = .nextStepToPay
isNeedToPay = true
} else { // 还有未预约人员
// 不显示底部按钮
self.bottomStatus = .hidden
} }
} }
bottomView.isHidden = isBottomViewHidden
if !isBottomViewHidden { bottomView.isHidden = (self.bottomStatus == .hidden)
let titleStr = isNeedToPay ? "下一步, 去缴费" : "确认提交" if self.bottomStatus == .confirmSubmitAppoint {
bottomBtn.setTitle(titleStr, for: .normal) bottomBtn.setTitle("确认提交", for: .normal)
} else if self.bottomStatus == .nextStepToPay {
bottomBtn.setTitle("下一步,去缴费", for: .normal)
}
self.bottomView.snp.updateConstraints { make in
make.height.equalTo((self.bottomStatus == .hidden) ? 0 : bottomViewHeight)
} }
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
} }
} }
...@@ -354,6 +394,12 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa ...@@ -354,6 +394,12 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
let vc = YHReAppointViewController() let vc = YHReAppointViewController()
vc.orderId = self.orderId
vc.waitAppointMembers = self.waitAppointMembers.deepCopy()
vc.viewModel = self.viewModel
vc.updateBlock = {
self.requestData()
}
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
} }
return cell return cell
...@@ -364,7 +410,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa ...@@ -364,7 +410,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
// 请您确认第X批赴港信息 // 请您确认第X批赴港信息
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
cell.dataModel = arr[indexPath.row] cell.dataModel = arr[indexPath.row]
cell.isShowSelectUserView = !self.isAllMembersGo
cell.refreshBlock = { cell.refreshBlock = {
[weak self] in [weak self] in
guard let self = self else { return } guard let self = self else { return }
...@@ -428,13 +473,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa ...@@ -428,13 +473,6 @@ extension YHCertificateAppointViewController: UITableViewDelegate, UITableViewDa
return UITableView.automaticDimension return UITableView.automaticDimension
} }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.section && indexPath.section < items1.count {
self.saveHkexpectServicOp()//for test hjl
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat { private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
return 0.01 return 0.01
} }
...@@ -516,7 +554,7 @@ extension YHCertificateAppointViewController { ...@@ -516,7 +554,7 @@ extension YHCertificateAppointViewController {
extension YHCertificateAppointViewController { extension YHCertificateAppointViewController {
//预约成功后调用 //预约成功后调用
func saveHkexpectServicOp() { func showSelectHKServiceAlertView() {
if self.orderId > 0 { if self.orderId > 0 {
let key = "hkExpectService_\(self.orderId)" let key = "hkExpectService_\(self.orderId)"
...@@ -526,7 +564,10 @@ extension YHCertificateAppointViewController { ...@@ -526,7 +564,10 @@ extension YHCertificateAppointViewController {
} }
} }
self.viewModel.getServicelist { success, error in YHHUD.show(.progress(message: "加载中..."))
self.viewModel.getServicelist {
success, error in
YHHUD.hide()
let view = YHServiceSelectAlertView.alertView() let view = YHServiceSelectAlertView.alertView()
view.items = self.viewModel.serviceArr view.items = self.viewModel.serviceArr
view.confirmBlock = { view.confirmBlock = {
...@@ -580,8 +621,8 @@ extension YHCertificateAppointViewController { ...@@ -580,8 +621,8 @@ extension YHCertificateAppointViewController {
var currentMembers:[YHHKMemberModel] = [] var currentMembers:[YHHKMemberModel] = []
// 先改变点击当前批的选择状态 // 先改变点击当前批的选择状态
if 0 <= groupLevel, groupLevel < items2.count { if 0 <= groupLevel, groupLevel < selectMemberGroupArr.count {
let item = items2[groupLevel] let item = selectMemberGroupArr[groupLevel]
if let members = item.model?.arr { if let members = item.model?.arr {
currentMembers = members currentMembers = members
for member in members { for member in members {
...@@ -594,7 +635,7 @@ extension YHCertificateAppointViewController { ...@@ -594,7 +635,7 @@ extension YHCertificateAppointViewController {
if !select { // 如果操作是取消 if !select { // 如果操作是取消
// 如果操作的当前批次是最后一批,则需要分新批次 // 如果操作的当前批次是最后一批,则需要分新批次
if groupLevel == items2.count-1 { if groupLevel == selectMemberGroupArr.count-1 {
// 进行分批 // 进行分批
let newItem = YHAppointItem(type: .confirmGoHKInfo) let newItem = YHAppointItem(type: .confirmGoHKInfo)
// 批次+1 // 批次+1
...@@ -613,15 +654,15 @@ extension YHCertificateAppointViewController { ...@@ -613,15 +654,15 @@ extension YHCertificateAppointViewController {
newItem.model = group1 newItem.model = group1
newItem.placeList = self.viewModel.placeList newItem.placeList = self.viewModel.placeList
newItem.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? [] newItem.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items2.append(newItem) selectMemberGroupArr.append(newItem)
} else { // 如果操作的当前批次不是最后一批 需要更新后面几批的选中状态 } else { // 如果操作的当前批次不是最后一批 需要更新后面几批的选中状态
let nextGroupIndex = groupLevel+1 let nextGroupIndex = groupLevel+1
let newMember = currentMember.copy() as! YHHKMemberModel let newMember = currentMember.copy() as! YHHKMemberModel
newMember.isSelected = true newMember.isSelected = true
if 0 <= groupLevel, groupLevel < items2.count { if 0 <= groupLevel, groupLevel < selectMemberGroupArr.count {
let item = items2[nextGroupIndex] let item = selectMemberGroupArr[nextGroupIndex]
if var members = item.model?.arr { if var members = item.model?.arr {
members.append(newMember) members.append(newMember)
item.model?.arr = members item.model?.arr = members
...@@ -632,9 +673,9 @@ extension YHCertificateAppointViewController { ...@@ -632,9 +673,9 @@ extension YHCertificateAppointViewController {
// 肯定会有下一层因为之前取消过 // 肯定会有下一层因为之前取消过
let nextGroupIndex = groupLevel+1 let nextGroupIndex = groupLevel+1
if 0 <= nextGroupIndex, nextGroupIndex < items2.count { if 0 <= nextGroupIndex, nextGroupIndex < selectMemberGroupArr.count {
for i in nextGroupIndex..<items2.count { for i in nextGroupIndex..<selectMemberGroupArr.count {
let item = items2[i] let item = selectMemberGroupArr[i]
if var members = item.model?.arr { if var members = item.model?.arr {
// 下几批的组员中都要删除该人 // 下几批的组员中都要删除该人
members = members.filter { $0.id != currentMember.id } members = members.filter { $0.id != currentMember.id }
...@@ -646,17 +687,17 @@ extension YHCertificateAppointViewController { ...@@ -646,17 +687,17 @@ extension YHCertificateAppointViewController {
// 无论是选中还是反选 检测下面所有批次有无全未选数组,有则删除该批 // 无论是选中还是反选 检测下面所有批次有无全未选数组,有则删除该批
let nextGroupIndex = groupLevel+1 let nextGroupIndex = groupLevel+1
if 0 <= nextGroupIndex, nextGroupIndex < items2.count { if 0 <= nextGroupIndex, nextGroupIndex < selectMemberGroupArr.count {
var i = nextGroupIndex var i = nextGroupIndex
while i < items2.count { while i < selectMemberGroupArr.count {
let item = items2[i] let item = selectMemberGroupArr[i]
if let members = item.model?.arr { if let members = item.model?.arr {
let a = members.filter { let a = members.filter {
return $0.isSelected == true return $0.isSelected == true
} }
// 数组中全未选 // 数组中全未选
if a.count <= 0 { if a.count <= 0 {
items2.remove(at: i) selectMemberGroupArr.remove(at: i)
} else { } else {
i += 1 i += 1
...@@ -666,7 +707,7 @@ extension YHCertificateAppointViewController { ...@@ -666,7 +707,7 @@ extension YHCertificateAppointViewController {
} }
// 重新进行批次排号 // 重新进行批次排号
for (index, group) in items2.enumerated() { for (index, group) in selectMemberGroupArr.enumerated() {
group.itemIndex = index group.itemIndex = index
} }
refreshData() refreshData()
...@@ -677,14 +718,23 @@ extension YHCertificateAppointViewController { ...@@ -677,14 +718,23 @@ extension YHCertificateAppointViewController {
@objc func didBottomBtnClicked() { @objc func didBottomBtnClicked() {
if self.isAllMembersGo { // 选择统一赴港 if self.bottomStatus == .confirmSubmitAppoint {
// 提交预约时间信息
submitAppointInfo()
return } else if self.bottomStatus == .nextStepToPay {
// 下一步去缴费
let vc = YHVisaPaymentVC()
vc.orderID = orderId
navigationController?.pushViewController(vc)
} }
}
func submitAppointInfo() {
// 选择非统一赴港 // 检测各批次是否有日期或办证地点未选择
var isOK = true var isOK = true
for item in self.items2 { for item in self.selectMemberGroupArr {
if let groupModel = item.model { if let groupModel = item.model {
if groupModel.dateTye == 0 { // 选择具体日期 if groupModel.dateTye == 0 { // 选择具体日期
if groupModel.detailDateStr.isEmpty { if groupModel.detailDateStr.isEmpty {
...@@ -706,13 +756,13 @@ extension YHCertificateAppointViewController { ...@@ -706,13 +756,13 @@ extension YHCertificateAppointViewController {
} }
} }
} }
if !isOK { // 有日期或办证地点未选择 if !isOK { // 检测各批次是否有日期或办证地点未选择
self.tableView.reloadData() self.tableView.reloadData()
return return
} }
var batchs:[[String: Any]] = [] var batchs:[[String: Any]] = []
for group in items2 { for group in selectMemberGroupArr {
if let model = group.model { if let model = group.model {
var start_time = "" var start_time = ""
var end_time = "" var end_time = ""
...@@ -751,16 +801,16 @@ extension YHCertificateAppointViewController { ...@@ -751,16 +801,16 @@ extension YHCertificateAppointViewController {
printLog("\(params)") printLog("\(params)")
// if true { YHHUD.show(.progress(message: "加载中..."))
// return viewModel.submitAppoint(params: params) {
// }
viewModel.submitAppoint(params: params) {
[weak self] success, error in [weak self] success, error in
YHHUD.hide()
guard let self = self else { return } guard let self = self else { return }
if success { if success {
YHHUD.flash(message: "提交成功") YHHUD.flash(message: "提交成功")
self.requestData() self.requestData {
self.showSelectHKServiceAlertView()
}
return return
} }
let msg = error?.errorMsg ?? "" let msg = error?.errorMsg ?? ""
......
...@@ -14,6 +14,11 @@ class YHReAppointViewController: YHBaseViewController { ...@@ -14,6 +14,11 @@ class YHReAppointViewController: YHBaseViewController {
var orderId: Int = 0 var orderId: Int = 0
var items:[YHAppointItem] = [] var items:[YHAppointItem] = []
var waitAppointMembers:[YHHKMemberModel] = []
var viewModel = YHCerAppointViewModel()
var updateBlock:(()->())?
lazy var tableView: UITableView = { lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped) let tableView = UITableView(frame:.zero, style:.grouped)
tableView.estimatedSectionHeaderHeight = 16.0 tableView.estimatedSectionHeaderHeight = 16.0
...@@ -38,6 +43,30 @@ class YHReAppointViewController: YHBaseViewController { ...@@ -38,6 +43,30 @@ class YHReAppointViewController: YHBaseViewController {
return tableView return tableView
}() }()
lazy var bottomBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .brandMainColor
btn.setTitle("确认提交", for: .normal)
btn.setTitleColor(.white, for: .normal)
btn.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
btn.addTarget(self, action: #selector(didBottomBtnClicked), for: .touchUpInside)
btn.layer.cornerRadius = kCornerRadius3
return btn
}()
lazy var bottomView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.addSubview(bottomBtn)
bottomBtn.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.top.equalTo(8)
make.height.equalTo(48)
}
return view
}()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
createUI() createUI()
...@@ -49,10 +78,16 @@ class YHReAppointViewController: YHBaseViewController { ...@@ -49,10 +78,16 @@ class YHReAppointViewController: YHBaseViewController {
self.gk_navTitle = "赴港办证预约" self.gk_navTitle = "赴港办证预约"
self.view.backgroundColor = .white self.view.backgroundColor = .white
self.view.addSubview(self.tableView) self.view.addSubview(self.tableView)
self.view.addSubview(bottomView)
self.tableView.snp.makeConstraints { make in self.tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar) make.top.equalTo(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalTo(bottomView.snp.top)
}
self.bottomView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(98.0)
} }
updateData() updateData()
...@@ -65,11 +100,29 @@ class YHReAppointViewController: YHBaseViewController { ...@@ -65,11 +100,29 @@ class YHReAppointViewController: YHBaseViewController {
items.append(item1) items.append(item1)
let item2 = YHAppointItem(type: .confirmGoHKInfo) let item2 = YHAppointItem(type: .confirmGoHKInfo)
item2.itemIndex = 0
let group1 = YHSelectGroupMemberModel()
group1.isAllMembersGoHK = true
group1.arr = waitAppointMembers
item2.model = group1
item2.placeList = self.viewModel.placeList
item2.arrHkHolidays = self.viewModel.dataModelForHkHolidays?.legaldays ?? []
items.append(item2) items.append(item2)
self.tableView.reloadData() self.tableView.reloadData()
} }
func getReAppointMemberNameText() -> String {
var text = ""
for (index, user) in self.waitAppointMembers.enumerated() {
text += user.name
if index != self.waitAppointMembers.count-1 {
text += "、"
}
}
text = "成员:\(text)"
return text
}
} }
extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource { extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource {
...@@ -93,6 +146,14 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource ...@@ -93,6 +146,14 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource
// 请您确认第X批赴港信息 // 请您确认第X批赴港信息
let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell let cell = tableView.dequeueReusableCell(withIdentifier: YHSelectApplicantGroupCell.cellReuseIdentifier, for: indexPath) as! YHSelectApplicantGroupCell
cell.isShowSelectUserView = false cell.isShowSelectUserView = false
cell.isShowRepointNameView = true
cell.repointMembersNameLabel.text = self.getReAppointMemberNameText()
cell.dataModel = item
cell.refreshBlock = {
[weak self] in
guard let self = self else { return }
self.tableView.reloadData()
}
return cell return cell
} }
} }
...@@ -128,3 +189,96 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource ...@@ -128,3 +189,96 @@ extension YHReAppointViewController: UITableViewDelegate, UITableViewDataSource
} }
} }
extension YHReAppointViewController {
@objc func didBottomBtnClicked() {
// 检测各批次是否有日期或办证地点未选择
var isOK = true
for item in self.items {
if item.type != .confirmGoHKInfo {
continue
}
if let groupModel = item.model {
if groupModel.dateTye == 0 { // 选择具体日期
if groupModel.detailDateStr.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
} else { // 选择具体时段
if groupModel.startDateStr.isEmpty || groupModel.endDateStr.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
}
// 办证地点未选
if groupModel.hkPlace.name.isEmpty {
groupModel.isNeedCheck = true
isOK = false
}
}
}
if !isOK { // 检测各批次是否有日期或办证地点未选择
self.tableView.reloadData()
return
}
var batchs:[[String: Any]] = []
for group in items {
if let model = group.model {
var start_time = ""
var end_time = ""
if model.dateTye == 0 { // 具体时间
start_time = model.detailDateStr
end_time = model.detailDateStr
} else { // 具体时段
start_time = model.startDateStr
end_time = model.endDateStr
}
let selectUsers = model.arr.filter {
return $0.isSelected == true
}
let users = self.waitAppointMembers.map {
let dict = ["id" : $0.id,
"type" : $0.type,
"name" : $0.name] as! [String : Any]
return dict
}
if users.count > 0 {
let batch:[String : Any] = ["start_time" : start_time,
"end_time" : end_time,
"migration_office" : model.hkPlace.name,
"users" : users]
batchs.append(batch)
}
}
}
// 请求参数
let params:[String : Any] = ["order_id": orderId,
"batch": batchs]
printLog("\(params)")
YHHUD.show(.progress(message: "加载中..."))
viewModel.submitAppoint(params: params) {
[weak self] success, error in
YHHUD.hide()
guard let self = self else { return }
if success {
YHHUD.flash(message: "提交成功")
updateBlock?()
self.navigationController?.popViewController()
return
}
let msg = error?.errorMsg ?? ""
YHHUD.flash(message: msg)
}
}
}
...@@ -65,4 +65,7 @@ class YHSelectGroupMemberModel { ...@@ -65,4 +65,7 @@ class YHSelectGroupMemberModel {
// 需要检测日期和办证地点是否选择 // 需要检测日期和办证地点是否选择
var isNeedCheck = false var isNeedCheck = false
// 是否统一赴港
var isAllMembersGoHK: Bool = false
} }
...@@ -11,7 +11,7 @@ import SmartCodable ...@@ -11,7 +11,7 @@ import SmartCodable
class YHMakeCertificatePlaceModel: SmartCodable { class YHMakeCertificatePlaceModel: SmartCodable {
var id: Int = 0 var id: Int = -1
var name: String = "" var name: String = ""
// 自定义 // 自定义
...@@ -20,5 +20,9 @@ class YHMakeCertificatePlaceModel: SmartCodable { ...@@ -20,5 +20,9 @@ class YHMakeCertificatePlaceModel: SmartCodable {
required init() { required init() {
} }
func isEmpty() -> Bool {
return id == -1 && name.isEmpty
}
} }
...@@ -150,7 +150,7 @@ class YHGrabNumberInfoItemView: UIView { ...@@ -150,7 +150,7 @@ class YHGrabNumberInfoItemView: UIView {
make.width.height.equalTo(dotWidth) make.width.height.equalTo(dotWidth)
make.centerY.equalTo(detailLabel) make.centerY.equalTo(detailLabel)
make.right.equalTo(detailLabel.snp.left).offset(-4) make.right.equalTo(detailLabel.snp.left).offset(-4)
make.left.greaterThanOrEqualTo(titleLabel.snp.right).offset(0) // make.left.greaterThanOrEqualTo(titleLabel.snp.right).offset(0)
} }
collectionView.snp.makeConstraints { make in collectionView.snp.makeConstraints { make in
......
...@@ -29,35 +29,53 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -29,35 +29,53 @@ class YHSelectApplicantGroupCell: UITableViewCell {
didSet { didSet {
detailLabel.isHidden = !isShowSelectUserView selectPanelView.isHidden = !isShowSelectUserView
selectGroupView.isHidden = !isShowSelectUserView selectPanelView.snp.remakeConstraints { make in
collectionView.isHidden = !isShowSelectUserView make.top.equalTo(reAppontNameView.snp.bottom)
lineView.isHidden = !isShowSelectUserView make.left.equalTo(0)
make.right.equalTo(0)
detailLabel.text = isShowSelectUserView ? self.detailText : "" make.bottom.equalTo(optionsView.snp.top)
detailLabel.snp.updateConstraints { make in
make.top.equalTo(lineView.snp.bottom).offset(isShowSelectUserView ? 16 : 0) if !isShowSelectUserView {
make.height.equalTo(0)
}
} }
selectGroupView.snp.updateConstraints { make in reAppontNameView.snp.remakeConstraints { make in
make.top.equalTo(detailLabel.snp.bottom).offset(isShowSelectUserView ? 12 : 0) make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
if !isShowRepointNameView {
make.height.equalTo(0)
}
} }
collectionView.snp.updateConstraints { make in collectionView.snp.updateConstraints { make in
make.top.equalTo(isShowSelectUserView ? 14 : 0)
make.bottom.equalTo(isShowSelectUserView ? -14 : 0)
make.height.equalTo(isShowSelectUserView ? self.getCollectionViewHeight() : 0) make.height.equalTo(isShowSelectUserView ? self.getCollectionViewHeight() : 0)
} }
optionsView.snp.updateConstraints { make in optionsView.lineView.isHidden = (!isShowSelectUserView && !isShowRepointNameView)
make.top.equalTo(selectGroupView.snp.bottom).offset(isShowSelectUserView ? 16 : 0)
}
self.setNeedsLayout() self.setNeedsLayout()
self.layoutIfNeeded() self.layoutIfNeeded()
} }
} }
var isShowRepointNameView: Bool = false {
didSet {
reAppontNameView.snp.remakeConstraints { make in
make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
if !isShowRepointNameView {
make.height.equalTo(0)
}
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
lazy var whiteContentView: UIView = { lazy var whiteContentView: UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
...@@ -65,12 +83,6 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -65,12 +83,6 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return view return view
}() }()
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var titleLabel: UILabel = { lazy var titleLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.numberOfLines = 0 label.numberOfLines = 0
...@@ -80,7 +92,49 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -80,7 +92,49 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return label return label
}() }()
lazy var detailLabel: UILabel = { lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var selectPanelView: UIView = {
let panelView = UIView()
panelView.addSubview(selecPanelTitleLabel)
let groupBgview = UIView()
groupBgview.backgroundColor = .init(hex: 0xF8F9FB)
groupBgview.layer.cornerRadius = kCornerRadius3
groupBgview.addSubview(collectionView)
panelView.addSubview(groupBgview)
selecPanelTitleLabel.snp.makeConstraints { make in
make.top.equalTo(16)
make.left.equalTo(18)
make.right.equalTo(-18)
}
groupBgview.snp.makeConstraints { make in
make.left.equalTo(18)
make.right.equalTo(-18)
make.top.equalTo(selecPanelTitleLabel.snp.bottom).offset(12)
make.bottom.equalTo(-16)
}
collectionView.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.height.equalTo(0)
make.top.equalTo(14)
make.bottom.equalTo(-14)
}
return panelView
}()
lazy var selecPanelTitleLabel: UILabel = {
let label = UILabel() let label = UILabel()
label.numberOfLines = 0 label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14) label.font = UIFont.PFSC_R(ofSize: 14)
...@@ -89,13 +143,6 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -89,13 +143,6 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return label return label
}() }()
lazy var selectGroupView: UIView = {
let view = UIView()
view.backgroundColor = .init(hex: 0xF8F9FB)
view.layer.cornerRadius = kCornerRadius3
return view
}()
lazy var collectionView: UICollectionView = { lazy var collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout() let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical layout.scrollDirection = .vertical
...@@ -164,6 +211,7 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -164,6 +211,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
if let arr = dataModel?.placeList, arr.count > 0 { if let arr = dataModel?.placeList, arr.count > 0 {
let listView = YHSelectHKPlaceListView.listView() let listView = YHSelectHKPlaceListView.listView()
listView.listArr = arr listView.listArr = arr
listView.selectModel = dataModel?.model?.hkPlace
listView.selectBlock = { listView.selectBlock = {
[weak self] selectPlace in [weak self] selectPlace in
guard let self = self else { return } guard let self = self else { return }
...@@ -179,6 +227,45 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -179,6 +227,45 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return view return view
}() }()
lazy var reAppontNameView: UIView = {
let view = UIView()
let lineView = UIView()
lineView.backgroundColor = .separatorColor
view.addSubview(lineView)
let grayView = UIView()
grayView.backgroundColor = .init(hex: 0xF8F9FB)
grayView.addSubview(repointMembersNameLabel)
view.addSubview(grayView)
lineView.snp.makeConstraints { make in
make.left.right.top.equalTo(0)
make.height.equalTo(1)
}
grayView.snp.makeConstraints { make in
make.left.right.equalTo(0)
make.top.equalTo(lineView.snp.bottom).offset(12)
make.bottom.equalTo(-12)
}
repointMembersNameLabel.snp.makeConstraints { make in
make.left.equalTo(14)
make.right.equalTo(-14)
make.top.equalTo(14)
make.bottom.equalTo(-14)
}
return view
}()
lazy var repointMembersNameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 13)
label.textColor = .mainTextColor
label.text = "成员:"
return label
}()
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
super.init(coder: coder) super.init(coder: coder)
} }
...@@ -196,9 +283,8 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -196,9 +283,8 @@ class YHSelectApplicantGroupCell: UITableViewCell {
contentView.addSubview(whiteContentView) contentView.addSubview(whiteContentView)
whiteContentView.addSubview(titleLabel) whiteContentView.addSubview(titleLabel)
whiteContentView.addSubview(lineView) whiteContentView.addSubview(lineView)
whiteContentView.addSubview(detailLabel) whiteContentView.addSubview(reAppontNameView)
whiteContentView.addSubview(selectGroupView) whiteContentView.addSubview(selectPanelView)
selectGroupView.addSubview(collectionView)
whiteContentView.addSubview(optionsView) whiteContentView.addSubview(optionsView)
whiteContentView.addSubview(timeSelectView) whiteContentView.addSubview(timeSelectView)
whiteContentView.addSubview(locationSelectView) whiteContentView.addSubview(locationSelectView)
...@@ -218,34 +304,28 @@ class YHSelectApplicantGroupCell: UITableViewCell { ...@@ -218,34 +304,28 @@ class YHSelectApplicantGroupCell: UITableViewCell {
lineView.snp.makeConstraints { make in lineView.snp.makeConstraints { make in
make.top.equalTo(titleLabel.snp.bottom).offset(12) make.top.equalTo(titleLabel.snp.bottom).offset(12)
make.left.right.equalToSuperview() make.left.equalTo(0)
make.right.equalTo(0)
make.height.equalTo(0.5) make.height.equalTo(0.5)
} }
detailLabel.snp.makeConstraints { make in reAppontNameView.snp.makeConstraints { make in
make.top.equalTo(lineView.snp.bottom).offset(16) make.top.equalTo(lineView.snp.bottom)
make.left.equalTo(18)
make.right.equalTo(-18)
}
selectGroupView.snp.makeConstraints { make in
make.left.equalTo(18) make.left.equalTo(18)
make.right.equalTo(-18) make.right.equalTo(-18)
make.top.equalTo(detailLabel.snp.bottom).offset(12) make.height.equalTo(0)
} }
collectionView.snp.makeConstraints { make in selectPanelView.snp.makeConstraints { make in
make.left.equalTo(14) make.top.equalTo(reAppontNameView.snp.bottom)
make.right.equalTo(-14) make.left.equalTo(0)
make.height.equalTo(40+16) make.right.equalTo(0)
make.top.equalTo(14) make.bottom.equalTo(optionsView.snp.top)
make.bottom.equalTo(-14)
} }
optionsView.snp.makeConstraints { make in optionsView.snp.makeConstraints { make in
make.top.equalTo(selectGroupView.snp.bottom).offset(16)
make.left.equalTo(18) make.left.equalTo(18)
make.right.equalTo(0) make.right.equalTo(-18)
} }
timeSelectView.snp.makeConstraints { make in timeSelectView.snp.makeConstraints { make in
...@@ -317,14 +397,14 @@ private extension YHSelectApplicantGroupCell { ...@@ -317,14 +397,14 @@ private extension YHSelectApplicantGroupCell {
return return
} }
let batchNumberText = self.convertNumberToChineseText(model.itemIndex+1)
let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor)) let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor))
let b: ASAttributedString = .init("请您确认第\(model.itemIndex + 1)批赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor)) let b: ASAttributedString = .init("请您确认第\(batchNumberText)批赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor))
titleLabel.attributed.text = a+b titleLabel.attributed.text = a+b
selecPanelTitleLabel.text = "选择第\(batchNumberText)批赴港激活签证的申请人"
collectionView.reloadData() collectionView.reloadData()
let isShowSelectList = self.isShowSelectUserView
self.isShowSelectUserView = isShowSelectList
// 时间选择UI更新 // 时间选择UI更新
optionsView.selectIndex = 0 optionsView.selectIndex = 0
...@@ -332,6 +412,15 @@ private extension YHSelectApplicantGroupCell { ...@@ -332,6 +412,15 @@ private extension YHSelectApplicantGroupCell {
if let model = dataModel?.model { if let model = dataModel?.model {
let isShowSelectList = !model.isAllMembersGoHK
self.isShowSelectUserView = isShowSelectList
if model.isAllMembersGoHK {
let a: ASAttributedString = .init("*", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.failColor))
let b: ASAttributedString = .init("请您确认以下赴港信息", .font(UIFont.PFSC_M(ofSize: 17)),.foreground(UIColor.mainTextColor))
titleLabel.attributed.text = a+b
}
timeSelectView.title = model.dateTye == 0 ? "具体日期" : "具体时段" timeSelectView.title = model.dateTye == 0 ? "具体日期" : "具体时段"
if model.dateTye == 0 { // 具体时间 if model.dateTye == 0 { // 具体时间
...@@ -584,4 +673,12 @@ private extension YHSelectApplicantGroupCell { ...@@ -584,4 +673,12 @@ private extension YHSelectApplicantGroupCell {
} }
return false return false
} }
//阿拉伯数字转文字
func convertNumberToChineseText(_ number: Int) -> String {
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "zh_CN")
numberFormatter.numberStyle = .spellOut
return numberFormatter.string(from: NSNumber(value: number)) ?? ""
}
} }
...@@ -15,11 +15,29 @@ class YHSelectHKPlaceListView: UIView { ...@@ -15,11 +15,29 @@ class YHSelectHKPlaceListView: UIView {
return view return view
} }
var selectModel: YHMakeCertificatePlaceModel? = nil var selectModel: YHMakeCertificatePlaceModel? = nil {
didSet {
if let selectItem = selectModel {
for item in listArr {
item.isSelect = (selectItem.id == item.id && selectItem.name == item.name)
}
} else {
for item in listArr {
item.isSelect = false
}
}
self.tableView.reloadData()
}
}
var selectBlock: ((YHMakeCertificatePlaceModel)->())? var selectBlock: ((YHMakeCertificatePlaceModel)->())?
var listArr:[YHMakeCertificatePlaceModel] = [] { var listArr:[YHMakeCertificatePlaceModel] = [] {
didSet { didSet {
for item in listArr {
item.isSelect = false
}
self.tableView.reloadData() self.tableView.reloadData()
} }
} }
...@@ -98,10 +116,12 @@ class YHSelectHKPlaceListView: UIView { ...@@ -98,10 +116,12 @@ class YHSelectHKPlaceListView: UIView {
} }
@objc func sure() { @objc func sure() {
if let model = self.selectModel { if let model = self.selectModel, !model.isEmpty() {
selectBlock?(model) selectBlock?(model)
self.dismiss()
return
} }
self.dismiss() YHHUD.flash(message: "请选择港府办证地点")
} }
override init(frame: CGRect) { override init(frame: CGRect) {
...@@ -197,9 +217,6 @@ extension YHSelectHKPlaceListView: UITableViewDelegate, UITableViewDataSource { ...@@ -197,9 +217,6 @@ extension YHSelectHKPlaceListView: UITableViewDelegate, UITableViewDataSource {
if 0 <= indexPath.row && indexPath.row < listArr.count { if 0 <= indexPath.row && indexPath.row < listArr.count {
let model = listArr[indexPath.row] let model = listArr[indexPath.row]
selectModel = model selectModel = model
for item in listArr {
item.isSelect = (model.id == item.id)
}
self.tableView.reloadData() self.tableView.reloadData()
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment