add option to import 2 by 2 in custom import

sync2
Raz 1 year ago
parent ca1a3a87f4
commit 91426c9990
  1. 16
      PadelClub/Utils/FileImportManager.swift
  2. 16
      PadelClub/Views/Tournament/FileImportView.swift

@ -178,7 +178,7 @@ class FileImportManager {
static let FFT_ASSIMILATION_WOMAN_IN_MAN = "A calculer selon la pondération en vigueur"
func createTeams(from fileContent: String, tournament: Tournament, fileProvider: FileProvider = .frenchFederation, checkingCategoryDisabled: Bool) async throws -> [TeamHolder] {
func createTeams(from fileContent: String, tournament: Tournament, fileProvider: FileProvider = .frenchFederation, checkingCategoryDisabled: Bool, chunkByParameter: Bool) async throws -> [TeamHolder] {
switch fileProvider {
case .frenchFederation:
@ -186,9 +186,9 @@ class FileImportManager {
case .padelClub:
return await _getPadelClubTeams(from: fileContent, tournament: tournament)
case .custom:
return await _getPadelBusinessLeagueTeams(from: fileContent, autoSearch: false, tournament: tournament)
return await _getPadelBusinessLeagueTeams(from: fileContent, chunkByParameter: chunkByParameter, autoSearch: false, tournament: tournament)
case .customAutoSearch:
return await _getPadelBusinessLeagueTeams(from: fileContent, autoSearch: true, tournament: tournament)
return await _getPadelBusinessLeagueTeams(from: fileContent, chunkByParameter: chunkByParameter, autoSearch: true, tournament: tournament)
}
}
@ -424,7 +424,7 @@ class FileImportManager {
return results
}
private func _getPadelBusinessLeagueTeams(from fileContent: String, autoSearch: Bool, tournament: Tournament) async -> [TeamHolder] {
private func _getPadelBusinessLeagueTeams(from fileContent: String, chunkByParameter: Bool, autoSearch: Bool, tournament: Tournament) async -> [TeamHolder] {
let lines = fileContent.replacingOccurrences(of: "\"", with: "").components(separatedBy: "\n")
guard let firstLine = lines.first else { return [] }
var separator = ","
@ -434,7 +434,13 @@ class FileImportManager {
let fetchRequest = ImportedPlayer.fetchRequest()
let federalContext = PersistenceController.shared.localContainer.viewContext
let results: [TeamHolder] = lines.chunked(byParameterAt: 1).map { team in
var chunks: [[String]] = []
if chunkByParameter {
chunks = lines.chunked(byParameterAt: 1)
} else {
chunks = lines.chunked(into: 2)
}
let results = chunks.map { team in
var teamName: String? = nil
let players = team.map { player in
let data = player.components(separatedBy: separator)

@ -84,6 +84,7 @@ struct FileImportView: View {
@State private var multiImport: Bool = false
@State private var presentFormatHelperView: Bool = false
@State private var validatedTournamentIds: Set<String> = Set()
@State private var chunkByParameter: Bool = true
init(defaultFileProvider: FileImportManager.FileProvider = .frenchFederation) {
_fileProvider = .init(wrappedValue: defaultFileProvider)
@ -139,6 +140,17 @@ struct FileImportView: View {
Text("Padel Club essaiera de chercher les joueurs dans la base fédérale automatiquement")
}
if fileProvider == .custom || fileProvider == .customAutoSearch {
Toggle(isOn: $chunkByParameter) {
Text("Détection des équipes")
if chunkByParameter {
Text("via le nom de l'équipe")
} else {
Text("couple de deux lignes")
}
}
}
RowButtonView("Démarrer l'importation") {
if let fileContent {
do {
@ -523,7 +535,7 @@ struct FileImportView: View {
for someTournament in event.tournaments {
let combinedCategory = CombinedCategory(tournamentCategory: someTournament.tournamentCategory, federalTournamentAge: someTournament.federalTournamentAge)
if categoriesDone.contains(combinedCategory) == false {
let _teams = try await FileImportManager.shared.createTeams(from: fileContent, tournament: someTournament, fileProvider: fileProvider, checkingCategoryDisabled: false)
let _teams = try await FileImportManager.shared.createTeams(from: fileContent, tournament: someTournament, fileProvider: fileProvider, checkingCategoryDisabled: false, chunkByParameter: chunkByParameter)
self.teams += _teams
categoriesDone.append(combinedCategory)
} else {
@ -531,7 +543,7 @@ struct FileImportView: View {
}
}
} else {
self.teams = try await FileImportManager.shared.createTeams(from: fileContent, tournament: tournament, fileProvider: fileProvider, checkingCategoryDisabled: true)
self.teams = try await FileImportManager.shared.createTeams(from: fileContent, tournament: tournament, fileProvider: fileProvider, checkingCategoryDisabled: true, chunkByParameter: chunkByParameter)
}
await MainActor.run {

Loading…
Cancel
Save