//
|
// MatchDetailVC.swift
|
// WanPai
|
//
|
// Created by 无故事王国 on 2024/2/29.
|
//
|
|
import UIKit
|
import JQTools
|
import HandyJSON
|
|
class MatchDetailVC: BaseVC {
|
|
@IBOutlet weak var view_red1: UIView!
|
@IBOutlet weak var view_red1Img: UIImageView!
|
@IBOutlet weak var view_red2: UIView!
|
@IBOutlet weak var view_red2Img: UIImageView!
|
@IBOutlet weak var view_red3: UIView!
|
@IBOutlet weak var view_red3Img: UIImageView!
|
|
@IBOutlet weak var view_blue1: UIView!
|
@IBOutlet weak var view_blue1Img: UIImageView!
|
@IBOutlet weak var view_blue2: UIView!
|
@IBOutlet weak var view_blue2Img: UIImageView!
|
@IBOutlet weak var view_blue3: UIView!
|
@IBOutlet weak var view_blue3Img: UIImageView!
|
|
@IBOutlet weak var view_device: UIView!
|
@IBOutlet weak var label_deviceTitle: UILabel!
|
@IBOutlet weak var label_matchPoint: UILabel!
|
@IBOutlet weak var label_mathYard: UILabel!
|
|
@IBOutlet weak var redStackView: UIStackView!
|
@IBOutlet weak var blueStackView: UIStackView!
|
@IBOutlet weak var btn_handle: UIButton!
|
|
private var redTeamItems = [WorldCupPeopleModel]()
|
private var blueTeamItems = [WorldCupPeopleModel]()
|
private var model:WorldCupJudgeModel!
|
private var deviceModel:ActivityDetailStoreModel?
|
private var deviceQRCode:String?
|
private var startModel:SimpleModel?
|
|
required init(model:WorldCupJudgeModel) {
|
super.init(nibName: nil, bundle: nil)
|
self.model = model
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = model.name
|
view.backgroundColor = .white
|
if model.type == 2{
|
self.btn_handle.setTitle("开启比赛", for: .normal)
|
}
|
}
|
|
override func setUI() {
|
view_red1.isHidden = true
|
view_red2.isHidden = true
|
view_red3.isHidden = true
|
|
view_blue1.isHidden = true
|
view_blue2.isHidden = true
|
view_blue3.isHidden = true
|
|
label_deviceTitle.isHidden = true
|
label_matchPoint.isHidden = true
|
label_mathYard.isHidden = true
|
}
|
|
@IBAction func addRedTeam(_ sender: UIButton) {
|
|
|
if redTeamItems.count > 5 {
|
alert(msg: "红队已满员");return
|
}
|
|
let scan = CommonScanQRCodeVC {[weak self] text, status in
|
guard let weakSelf = self else { return }
|
if status{
|
if let _ = WorldCupUserInfoQRCodel.deserialize(from: text){
|
Services.getWorldCupPeople(code: text, worldCupId: weakSelf.model.id).subscribe(onNext: {data in
|
if let model = data.data{
|
if weakSelf.checkMutable(model: model){
|
weakSelf.redTeamItems.append(model)
|
weakSelf.updateUserView()
|
}
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}else{
|
alert(msg: "无效二维码")
|
}
|
}
|
}
|
present(scan, animated: true)
|
}
|
|
@IBAction func addBlueTeam(_ sender: UIButton) {
|
// guard blueTeamItems.count < 3 else {
|
//
|
// }
|
if blueTeamItems.count > 5 {
|
alert(msg: "蓝队已满员");return
|
}
|
|
let scan = CommonScanQRCodeVC {[weak self] text, status in
|
guard let weakSelf = self else { return }
|
if status{
|
if let _ = WorldCupUserInfoQRCodel.deserialize(from: text){
|
Services.getWorldCupPeople(code: text, worldCupId: weakSelf.model.id).subscribe(onNext: {data in
|
if let model = data.data{
|
if weakSelf.checkMutable(model: model){
|
weakSelf.blueTeamItems.append(model)
|
weakSelf.updateUserView()
|
}
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}else{
|
alert(msg: "无效二维码")
|
}
|
}
|
}
|
present(scan, animated: true)
|
}
|
|
@IBAction func deleRedUserAction(_ sender: UIButton) {
|
let index = sender.tag - 10
|
|
if index > redTeamItems.count{
|
redTeamItems.removeLast()
|
}else if redTeamItems.count == 1{
|
redTeamItems.removeAll()
|
}else{
|
redTeamItems.remove(at: index)
|
}
|
if index == 0{
|
view_red1.isHidden = true
|
}
|
if index == 1{
|
view_red2.isHidden = true
|
}
|
if index == 2{
|
view_red3.isHidden = true
|
}
|
|
}
|
|
@IBAction func deleBlueUserAction(_ sender: UIButton) {
|
let index = sender.tag - 20
|
if index > blueTeamItems.count{
|
blueTeamItems.removeLast()
|
}else if redTeamItems.count == 1{
|
blueTeamItems.removeAll()
|
}else{
|
blueTeamItems.remove(at: index)
|
}
|
if index == 0{
|
view_blue1.isHidden = true
|
}
|
if index == 1{
|
view_blue2.isHidden = true
|
}
|
if index == 2{
|
view_blue3.isHidden = true
|
}
|
}
|
|
private func updateUserView(){
|
|
view_red1.isHidden = true
|
view_red2.isHidden = true
|
view_red3.isHidden = true
|
view_blue1.isHidden = true
|
view_blue2.isHidden = true
|
view_blue3.isHidden = true
|
|
for (index,item) in redTeamItems.enumerated() {
|
if index == 0{
|
view_red1.isHidden = false
|
view_red1Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
if index == 1{
|
view_red2.isHidden = false
|
view_red2Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
|
if index == 2{
|
view_red3.isHidden = false
|
view_red3Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
}
|
|
for (index,item) in blueTeamItems.enumerated() {
|
if index == 0{
|
view_blue1.isHidden = false
|
view_blue1Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
if index == 1{
|
view_blue2.isHidden = false
|
view_blue2Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
|
if index == 2{
|
view_blue3.isHidden = false
|
view_blue3Img.sd_setImage(with: URL(string: item.avatar))
|
}
|
}
|
if model.type != 2 {
|
btn_handle.isSelected = deviceModel != nil
|
}else {
|
btn_handle.isSelected = false
|
}
|
|
}
|
|
private func checkMutable(model:WorldCupPeopleModel)->Bool{
|
let red = redTeamItems.contains(where: {$0.id == model.id})
|
let blue = blueTeamItems.contains(where: {$0.id == model.id})
|
|
if red{
|
alert(msg: "红队已存在")
|
return false
|
}
|
|
if blue{
|
alert(msg: "蓝队已存在")
|
return false
|
}
|
return true
|
}
|
|
@IBAction func handleAction(_ sender: UIButton) {
|
|
|
|
if sender.titleLabel?.text == "结束比赛" {
|
EndGameAlertView.show {[weak self] red, blue in
|
guard let weakSelf = self else { return }
|
if let array = weakSelf.startModel?.ids {
|
Services.endWorldCup(blueScore: blue, custom: array.map { String($0) }.joined(separator: ","), redScore: red).subscribe(onNext: {[weak self] data in
|
guard let weakSelfC = self else { return }
|
if let _ = data.data {
|
alert(msg: "比赛结束")
|
weakSelfC.navigationController?.popViewController(animated: true)
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}
|
|
}
|
return
|
}
|
|
//非智慧赛事以及设备不等于空
|
if deviceModel != nil || model.type == 2 {
|
// guard redTeamItems.count == 3 else{alert(msg: "红队人数不足");return}
|
// guard blueTeamItems.count == 3 else{alert(msg: "蓝队人数不足");return}
|
if redTeamItems.count == 0 {
|
alert(msg: "红队人数不足");return
|
}
|
if blueTeamItems.count == 0 {
|
alert(msg: "蓝队人数不足");return
|
}
|
var devCode = ""
|
if model.type != 2 {
|
guard let code = deviceQRCode else{alert(msg: "请扫描设备二维码");return}
|
devCode = code
|
}
|
|
|
struct TempModel:HandyJSON{
|
var id = 0
|
var participantType = 0
|
var type = ""
|
}
|
|
var tempArray = [Dictionary<String,Any>]()
|
|
for red in redTeamItems {
|
tempArray.append(TempModel(id: red.id, participantType: red.participantType, type: "red").toJSON()!)
|
}
|
|
for blue in blueTeamItems {
|
tempArray.append(TempModel(id: blue.id, participantType: blue.participantType, type: "blue").toJSON()!)
|
}
|
|
CommonAlertView.show(title: "提示", content: "确认开启当前比赛吗?",cancelStr: "关闭") {[weak self] status in
|
guard let weakSelf = self else { return }
|
if status{
|
Services.startWorldCup(code: devCode, people: tempArray.jq_toJson1(), worldCupId: weakSelf.model.id).subscribe(onNext: {data in
|
if let _ = data.data{
|
let m = JSONDeserializer<SimpleModel>.deserializeFrom(json: data.data)
|
weakSelf.startModel = m
|
alert(msg: "比赛开始")
|
sender.isSelected = true
|
weakSelf.redTeamItems.removeAll()
|
weakSelf.blueTeamItems.removeAll()
|
|
weakSelf.updateUserView()
|
if weakSelf.model.type == 2{
|
weakSelf.btn_handle.setTitle("结束比赛", for: .normal)
|
}
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}
|
}
|
|
|
}else{
|
let scan = CommonScanQRCodeVC {[weak self] text, status in
|
guard let weakSelf = self else { return }
|
if status{
|
Services.getDeviceInformation(text: text).subscribe(onNext: {data in
|
if let model = data.data{
|
sender.isSelected = true
|
weakSelf.deviceQRCode = text
|
weakSelf.label_deviceTitle.isHidden = false
|
weakSelf.label_matchPoint.isHidden = false
|
weakSelf.label_mathYard.isHidden = false
|
weakSelf.label_matchPoint.text = "所属赛点:" + model.name
|
weakSelf.label_mathYard.text = "所属场地:" + model.address
|
weakSelf.deviceModel = model
|
}
|
}).disposed(by: weakSelf.disposeBag)
|
}
|
}
|
present(scan, animated: true)
|
}
|
}
|
|
}
|