//
|
// ExperienceCourseVC.swift
|
// WanPai
|
//
|
// Created by 无故事王国 on 2023/9/19.
|
//
|
|
import UIKit
|
import JQTools
|
|
class ExperienceCourseVC: BaseVC {
|
|
@IBOutlet weak var label_name: UILabel!
|
@IBOutlet weak var label_num: UILabel!
|
@IBOutlet weak var label_week: UILabel!
|
@IBOutlet weak var label_times: UILabel!
|
@IBOutlet weak var collectionView: UICollectionView!
|
@IBOutlet weak var cons_collectionHei: NSLayoutConstraint!
|
@IBOutlet weak var label_needNum: UILabel!
|
@IBOutlet weak var hei_cons: NSLayoutConstraint!
|
|
private var courseId:Int!
|
private var experienceCourseModel:ExperienceCourseModel?
|
private var cellW:Double = 0
|
private var cellH:Double = 0
|
private var selectIndexs = Set<Int>()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "体验购课"
|
cellW = ((view.width - 40.0) - 11.0 * 3) / 4
|
cellH = cellW * 0.439
|
|
collectionView.delegate = self
|
collectionView.dataSource = self
|
collectionView.isScrollEnabled = false
|
collectionView.register(UINib(nibName: "Common_1_CCell", bundle: nil), forCellWithReuseIdentifier: "_Common_1_CCell")
|
collectionView.contentInset = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 14)
|
|
Services.payCourseInfo(courseId: courseId).subscribe(onNext: {[weak self] data in
|
guard let weakSelf = self else { return }
|
if let model = data.data{
|
self?.label_name.text = model.name
|
self?.label_num.text = "\(model.num)课时"
|
self?.label_week.text = "每" + model.week
|
self?.label_times.text = model.time.joined(separator: "|")
|
self?.experienceCourseModel = model
|
self?.collectionView.reloadData()
|
let h = ceil(Double(model.day.count) / 4) * weakSelf.cellH + floor(Double(model.day.count) / 4) * 11
|
self?.cons_collectionHei.constant = h
|
}
|
}) { error in
|
|
}.disposed(by: disposeBag)
|
}
|
|
init(courseId:Int) {
|
super.init(nibName: nil, bundle: nil)
|
self.courseId = courseId
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
@IBAction func paymenAction(_ sender: UIButton) {
|
guard selectIndexs.count > 0 else {alert(msg: "请选择上课时间");return}
|
let n = (experienceCourseModel?.num ?? 0) * (experienceCourseModel?.time.count ?? 0) * selectIndexs.count
|
if let storeStr = UserDefaults.standard.object(forKey: "CurrentStore") as? String{
|
if let deserModel = HomeStoreModel.deserialize(from: storeStr){
|
PaymentCourseView.show(storeId: deserModel.storeId, number: n) {[weak self] s in
|
guard let weakSelf = self else { return }
|
|
var t = [String]()
|
for selectIndex in weakSelf.selectIndexs {
|
t.append(weakSelf.experienceCourseModel!.day[selectIndex])
|
}
|
Services.payCourse(courseId: weakSelf.courseId, num: n, oldCourseId: s, time: t).subscribe(onNext: {data in
|
let vc = PaymentResultVC(result: .success, objType: .courseApply, handleVC: nil, courseConfigId: nil, againClouse: nil)
|
weakSelf.push(vc: vc)
|
}) { error in
|
let vc = PaymentResultVC(result: .fail("购买失败", 0), objType: .courseApply, handleVC: nil, courseConfigId: nil, againClouse: nil)
|
weakSelf.push(vc: vc)
|
}.disposed(by: weakSelf.disposeBag)
|
}
|
}
|
}
|
}
|
}
|
|
extension ExperienceCourseVC:UICollectionViewDelegate{
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
if selectIndexs.contains(indexPath.row){
|
if indexPath.row == 0 || (indexPath.row == (experienceCourseModel!.day.count - 1)){
|
selectIndexs.remove(indexPath.row)
|
}else if selectIndexs.contains(indexPath.row + 1) && selectIndexs.contains(indexPath.row - 1){
|
alert(msg: "必须连续选择")
|
}else{
|
selectIndexs.remove(indexPath.row)
|
}
|
}else{
|
if selectIndexs.count != 0{
|
if selectIndexs.contains(indexPath.row - 1) || selectIndexs.contains(indexPath.row + 1){
|
selectIndexs.insert(indexPath.row)
|
}else{
|
alert(msg: "必须连续选择")
|
}
|
}else{
|
selectIndexs.insert(indexPath.row)
|
}
|
}
|
let n = (experienceCourseModel?.num ?? 0) * (experienceCourseModel?.time.count ?? 0) * selectIndexs.count
|
label_needNum.text = "\(n)"
|
collectionView.reloadData()
|
}
|
}
|
|
extension ExperienceCourseVC:UICollectionViewDataSource{
|
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
return experienceCourseModel?.day.count ?? 0
|
}
|
|
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Common_1_CCell", for: indexPath) as! Common_1_CCell
|
let isSelected = selectIndexs.contains(indexPath.row)
|
cell.label_content.text = experienceCourseModel!.day[indexPath.row]
|
cell.label_content.backgroundColor = isSelected ? Def_ThemeColor : .white
|
cell.label_content.textColor = isSelected ? .white : UIColor(hexStr: "#898989")
|
cell.label_content.borderWidth = isSelected ? 0:1
|
cell.label_content.borderColor = UIColor(hexStr: "#F2E9E9")
|
return cell
|
}
|
}
|
|
extension ExperienceCourseVC:UICollectionViewDelegateFlowLayout{
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
return 11
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
return 13
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
return CGSizeMake(cellW, cellH)
|
}
|
}
|