/// <summary> /// Crée les éditions des tournois disputés dans une année. /// L'intégration manuelle des nouveaux tournois (ou ceux mis à jour) doit être réalisée au préalable. /// Les données relatives à la coupe Davis sont ignorées. /// </summary> public void IntegrateEditionOfTournaments() { string insertEditionQuery = SqlTools.BuildInsertQuery("editions", new Dictionary <string, string>() { { "tournament_ID", "@id" }, { "year", "@year" }, { "draw_size", "@drawsize" }, { "date_begin", "@bdate" }, { "date_end", "@edate" }, { "surface_ID", "@surface" }, { "slot_order", "@slot" }, { "is_indoor", "@indoor" }, { "level_ID", "@level" }, { "substitute_ID", "@substitute" }, { "name", "@name" }, { "city", "@city" } }); List <string> uniqueTournamentList = new List <string>(); foreach (Dictionary <string, string> match in _matchs) { if (!uniqueTournamentList.Contains(match["tourney_id"])) { uniqueTournamentList.Add(match["tourney_id"]); string baseCode = match["tourney_id"].Substring(5); using (DataTableReader reader = SqlTools.ExecuteReader("select * from tournaments where original_code in (@code2, @code1)", new SqlParam("@code1", DbType.String, baseCode), new SqlParam("@code2", DbType.String, GetGenericTournamentCode(baseCode)))) { if (reader.Read()) { DateTime dateBegin = Tools.FormatCsvDateTime(match["tourney_date"]); // Pas le vrai type SQL, mais san importance int drawSize = Convert.ToInt32(match["draw_size"]); // TODO : système de préparation de la requête SQL SqlTools.ExecuteNonQuery(insertEditionQuery, new SqlParam("@id", DbType.UInt32, reader.GetUint64("ID")), new SqlParam("@year", DbType.UInt32, _year), new SqlParam("@drawsize", DbType.UInt16, drawSize), new SqlParam("@bdate", DbType.DateTime, dateBegin.ToString("yyyy-MM-dd")), new SqlParam("@edate", DbType.DateTime, ComputeEditionEndDate(dateBegin, drawSize).ToString("yyyy-MM-dd")), new SqlParam("@surface", DbType.Byte, reader.GetByte("surface_ID")), new SqlParam("@slot", DbType.Byte, reader.GetByteNull("slot_order")), new SqlParam("@indoor", DbType.Boolean, reader.GetByte("is_indoor") == 1), new SqlParam("@level", DbType.Byte, reader.GetByte("level_ID")), new SqlParam("@substitute", DbType.UInt32, reader.GetUint64Null("substitute_ID")), new SqlParam("@name", DbType.String, reader.GetString("name")), new SqlParam("@city", DbType.String, reader.GetString("city"))); } else { Tools.WriteLog(string.Format("Le tournoi {0} a été ignoré. C'est une erreur s'il ne s'agit pas d'un match de coupe Davis.", match["tourney_id"])); } } } } }