fix april 2024 issue

fix format C issue
fix goalaverage issue
fix search issue
multistore
Razmig Sarkissian 2 years ago
parent 15323dbb4a
commit e01198fdc9
  1. 29
      PadelClub/Data/Coredata/Persistence.swift
  2. 11
      PadelClub/Data/GroupStage.swift
  3. 6
      PadelClub/Data/Match.swift
  4. 9
      PadelClub/Extensions/String+Extensions.swift
  5. 2
      PadelClub/ViewModel/SearchViewModel.swift
  6. 2
      PadelClub/Views/Score/SetInputView.swift

@ -99,6 +99,7 @@ class PersistenceController: NSObject {
func batchInsertPlayers(_ importedPlayers: [FederalPlayer], importingDate: Date) async {
guard !importedPlayers.isEmpty else { return }
let context = newTaskContext()
context.performAndWait {
context.transactionAuthor = PersistenceController.remoteDataImportAuthorName
@ -121,6 +122,15 @@ class PersistenceController: NSObject {
// 1
var index = 0
let total = imported.count
let replacements: [(Character, Character)] = [("Á", "ç"), ("", "à"), ("Ù", "ô"), ("Ë", "è"), ("Ó", "î"), ("Î", "ë"), ("", "É"), ("Ô", "ï"), ("È", "é"), ("«", "Ç"), ("»", "È")]
let replacementsCharacters = replacements
var fixApril2024 = false
//april 04-2024 bug with accent characters / adobe / fft
if URL.importDateFormatter.string(from: importingDate) == "04-2024" {
fixApril2024 = true
}
// 2
let batchInsert = NSBatchInsertRequest(
@ -133,15 +143,34 @@ class PersistenceController: NSObject {
let data = imported[index]
importedPlayer.license = data.license
importedPlayer.ligueName = data.ligue
if fixApril2024 {
importedPlayer.ligueName?.replace(characters: replacementsCharacters)
}
importedPlayer.rank = Int64(data.rank)
importedPlayer.points = data.points ?? 0
importedPlayer.assimilation = data.assimilation
importedPlayer.country = data.country
if fixApril2024 {
importedPlayer.country?.replace(characters: replacementsCharacters)
}
importedPlayer.tournamentCount = Int64(data.tournamentCount ?? 0)
importedPlayer.lastName = data.lastName
if fixApril2024 {
importedPlayer.lastName?.replace(characters: replacementsCharacters)
}
importedPlayer.firstName = data.firstName
if fixApril2024 {
importedPlayer.firstName?.replace(characters: replacementsCharacters)
}
importedPlayer.fullName = data.firstName + " " + data.lastName
if fixApril2024 {
importedPlayer.fullName?.replace(characters: replacementsCharacters)
}
importedPlayer.clubName = data.club
if fixApril2024 {
importedPlayer.clubName?.replace(characters: replacementsCharacters)
}
importedPlayer.clubCode = data.clubCode.replaceCharactersFromSet(characterSet: .whitespaces)
importedPlayer.male = data.isMale
importedPlayer.importDate = importingDate

@ -98,7 +98,16 @@ class GroupStage: ModelObject, Storable {
func scoreLabel(forGroupStagePosition groupStagePosition: Int) -> String? {
if let scoreData = _score(forGroupStagePosition: groupStagePosition) {
return "\(scoreData.wins)/\(scoreData.loses) " + scoreData.setDifference.formatted(.number.sign(strategy: .always(includingZero: false)))
let hideGameDifference = matchFormat.setsToWin == 1
let setDifference = scoreData.setDifference.formatted(.number.sign(strategy: .always(includingZero: false)))
let gameDifference = scoreData.gameDifference.formatted(.number.sign(strategy: .always(includingZero: false)))
var differenceAsString = "\n" + gameDifference + " jeux"
if hideGameDifference == false {
differenceAsString = "\n" + setDifference + " sets" + differenceAsString
} else {
differenceAsString = setDifference
}
return "\(scoreData.wins)/\(scoreData.loses) " + differenceAsString
} else {
return nil
}

@ -423,12 +423,12 @@ class Match: ModelObject, Storable {
let endedSetsOne = teamScoreTeam.score?.components(separatedBy: ",").compactMap({ Int($0) }) ?? matchFormat.defaultWalkOutScore(teamScoreTeam.isWalkOut())
let endedSetsTwo = teamScoreOtherTeam.score?.components(separatedBy: ",").compactMap({ Int($0) }) ?? matchFormat.defaultWalkOutScore(teamScoreOtherTeam.isWalkOut())
var setDifference : Int = 0
if endedSetsOne.count == 1 {
let zip = zip(endedSetsOne, endedSetsTwo)
if matchFormat.setsToWin == 1 {
setDifference = endedSetsOne[0] - endedSetsTwo[0]
} else {
setDifference = endedSetsOne.filter { $0 == matchFormat.setFormat.scoreToWin }.count - endedSetsTwo.filter { $0 == matchFormat.setFormat.scoreToWin }.count
setDifference = zip.filter { $0 > $1 }.count - zip.filter { $1 > $0 }.count
}
let zip = zip(endedSetsOne, endedSetsTwo)
let gameDifference = zip.map { ($0, $1) }.map { $0.0 - $0.1 }.reduce(0,+)
return (setDifference * reverseValue, gameDifference * reverseValue)
}

@ -141,3 +141,12 @@ extension String {
extension LosslessStringConvertible {
var string: String { .init(self) }
}
extension String {
//april 04-2024 bug with accent characters / adobe / fft
mutating func replace(characters: [(Character, Character)]) {
for (targetChar, replacementChar) in characters {
self = String(self.map { $0 == targetChar ? replacementChar : $0 })
}
}
}

@ -118,7 +118,7 @@ class SearchViewModel: ObservableObject, Identifiable {
}
func wordsPredicates() -> NSPredicate? {
let words = words().filter({ $0.isEmpty })
let words = words().filter({ $0.isEmpty == false })
switch words.count {
case 2:
let predicates = [

@ -95,7 +95,7 @@ struct SetInputView: View {
return [6,5]
}
if valueTeamOne == 5 && setFormat == .four {
return [3,2]
return [4,3]
}
}
return setFormat.possibleValues

Loading…
Cancel
Save