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 { func batchInsertPlayers(_ importedPlayers: [FederalPlayer], importingDate: Date) async {
guard !importedPlayers.isEmpty else { return } guard !importedPlayers.isEmpty else { return }
let context = newTaskContext() let context = newTaskContext()
context.performAndWait { context.performAndWait {
context.transactionAuthor = PersistenceController.remoteDataImportAuthorName context.transactionAuthor = PersistenceController.remoteDataImportAuthorName
@ -121,6 +122,15 @@ class PersistenceController: NSObject {
// 1 // 1
var index = 0 var index = 0
let total = imported.count 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 // 2
let batchInsert = NSBatchInsertRequest( let batchInsert = NSBatchInsertRequest(
@ -133,15 +143,34 @@ class PersistenceController: NSObject {
let data = imported[index] let data = imported[index]
importedPlayer.license = data.license importedPlayer.license = data.license
importedPlayer.ligueName = data.ligue importedPlayer.ligueName = data.ligue
if fixApril2024 {
importedPlayer.ligueName?.replace(characters: replacementsCharacters)
}
importedPlayer.rank = Int64(data.rank) importedPlayer.rank = Int64(data.rank)
importedPlayer.points = data.points ?? 0 importedPlayer.points = data.points ?? 0
importedPlayer.assimilation = data.assimilation importedPlayer.assimilation = data.assimilation
importedPlayer.country = data.country importedPlayer.country = data.country
if fixApril2024 {
importedPlayer.country?.replace(characters: replacementsCharacters)
}
importedPlayer.tournamentCount = Int64(data.tournamentCount ?? 0) importedPlayer.tournamentCount = Int64(data.tournamentCount ?? 0)
importedPlayer.lastName = data.lastName importedPlayer.lastName = data.lastName
if fixApril2024 {
importedPlayer.lastName?.replace(characters: replacementsCharacters)
}
importedPlayer.firstName = data.firstName importedPlayer.firstName = data.firstName
if fixApril2024 {
importedPlayer.firstName?.replace(characters: replacementsCharacters)
}
importedPlayer.fullName = data.firstName + " " + data.lastName importedPlayer.fullName = data.firstName + " " + data.lastName
if fixApril2024 {
importedPlayer.fullName?.replace(characters: replacementsCharacters)
}
importedPlayer.clubName = data.club importedPlayer.clubName = data.club
if fixApril2024 {
importedPlayer.clubName?.replace(characters: replacementsCharacters)
}
importedPlayer.clubCode = data.clubCode.replaceCharactersFromSet(characterSet: .whitespaces) importedPlayer.clubCode = data.clubCode.replaceCharactersFromSet(characterSet: .whitespaces)
importedPlayer.male = data.isMale importedPlayer.male = data.isMale
importedPlayer.importDate = importingDate importedPlayer.importDate = importingDate

@ -98,7 +98,16 @@ class GroupStage: ModelObject, Storable {
func scoreLabel(forGroupStagePosition groupStagePosition: Int) -> String? { func scoreLabel(forGroupStagePosition groupStagePosition: Int) -> String? {
if let scoreData = _score(forGroupStagePosition: groupStagePosition) { 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 { } else {
return nil return nil
} }

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

@ -141,3 +141,12 @@ extension String {
extension LosslessStringConvertible { extension LosslessStringConvertible {
var string: String { .init(self) } 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? { func wordsPredicates() -> NSPredicate? {
let words = words().filter({ $0.isEmpty }) let words = words().filter({ $0.isEmpty == false })
switch words.count { switch words.count {
case 2: case 2:
let predicates = [ let predicates = [

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

Loading…
Cancel
Save