public static void SaveRaceTabToDb(Classes.RaceTab rt) { string connectionString = Constants.connectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand command = conn.CreateCommand()) { command.CommandText = "INSERT INTO RaceTab VALUES (" + "@TrackId, @CustomLaps1, @CustomLaps2, @Compound, @CT, @Temp, @Hum, @Rain " + ")"; command.Parameters.Clear(); command.Parameters.AddWithValue("@TrackId", rt.SeasonTrackIndex); command.Parameters.AddWithValue("@CustomLaps1", rt.CustomLap1); command.Parameters.AddWithValue("@CustomLaps2", rt.CustomLap2); command.Parameters.AddWithValue("@Compound", rt.Compound); command.Parameters.AddWithValue("@CT", rt.CT); command.Parameters.AddWithValue("@Temp", rt.Temp); command.Parameters.AddWithValue("@Hum", rt.Hum); command.Parameters.AddWithValue("@Rain", rt.Rain); conn.Open(); command.ExecuteNonQuery(); conn.Close(); } } }
public static void UpdateRaceTabToDb(Classes.RaceTab rt) { string connectionString = Constants.connectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand command = conn.CreateCommand()) { //command.CommandText = "UPDATE Cars SET ChassisLevel=4, ChassisWear=44 WHERE Id=1"; command.CommandText = "UPDATE RaceTab SET " + "TrackId = @TrackId, CustomLaps1 = @CustomLaps1, CustomLaps2 = @CustomLaps2, " + "Compound = @Compound, CT = @CT, " + "Temp = @Temp, Hum = @Hum, Rain = @Rain " + "WHERE Id = @Id"; command.Parameters.Clear(); command.Parameters.AddWithValue("@TrackId", rt.SeasonTrackIndex); command.Parameters.AddWithValue("@CustomLaps1", rt.CustomLap1); command.Parameters.AddWithValue("@CustomLaps2", rt.CustomLap2); command.Parameters.AddWithValue("@Compound", rt.Compound); command.Parameters.AddWithValue("@CT", rt.CT); command.Parameters.AddWithValue("@Temp", rt.Temp); command.Parameters.AddWithValue("@Hum", rt.Hum); command.Parameters.AddWithValue("@Rain", rt.Rain); command.Parameters.AddWithValue("@Id", 1); conn.Open(); command.ExecuteNonQuery(); conn.Close(); } } }
public static Classes.RaceTab ReadRaceTabFromDB() { string connectionString = Constants.connectionString; Classes.RaceTab rt = new Classes.RaceTab(); string query = "SELECT * FROM RaceTab WHERE Id=1"; using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(query, conn)) { conn.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { rt.Id = int.Parse(reader[0].ToString()); rt.SeasonTrackIndex = int.Parse(reader[1].ToString()); rt.CustomLap1 = int.Parse(reader[2].ToString()); rt.CustomLap2 = int.Parse(reader[3].ToString()); rt.Compound = int.Parse(reader[4].ToString()); rt.CT = int.Parse(reader[5].ToString()); rt.Temp = int.Parse(reader[6].ToString()); rt.Hum = int.Parse(reader[7].ToString()); rt.Rain = bool.Parse(reader[8].ToString()); } conn.Close(); } } return(rt); }
static internal SeasonPlannerFullLine ProcessSeasonPlanner(SeasonPlannerFullLine spFull) { #region Initial Values Classes.RaceTab rt = spFull.spOptimizer.raceTab; Classes.SeasonPlannerForDataTable spForDataTable = spFull.spTable; //null. Filled later Classes.TechnicalDirector td = spFull.spOptimizer.technicalDirector; Classes.Car car = (Classes.Car)spFull.spOptimizer.car.Clone(); Classes.Car carAfterRace = (Classes.Car)car.Clone(); Classes.Driver driver = spFull.spOptimizer.driver; int trackId = DB.SeasonTrack.GetTrackId(spFull.spTable.SeasonRaceNumber); Classes.Track track = DB.Track.ReadTrackFromDB(trackId); Classes.StaffFacilities sf = spFull.spOptimizer.staffFacilities; Classes.TyresSupplier tyre = DB.Tyres.ReadActiveTyreSupplierFromDB(); int seasonRaceNumber = rt.SeasonTrackIndex; //float balanceM = spFull.spTab.StartingBalanceM; float balanceM = spFull.spTable.BalanceAfterRaceM; int[] carPartsBought = new int[11]; Divisions division = (Divisions)spFull.spTab.Division; int trainning = (int)spFull.spDecisions.Training; bool testing = spFull.spDecisions.Testing; int targetCarLevel = spFull.spDecisions.TargetCarLevelEngBra; int targetCarLevel2 = spFull.spDecisions.TargetCarLevelOthers; int ct = spFull.spDecisions.CT; #endregion #region Process carAfterRace.UpdateCarWearAfterRace(track, driver, ct); if (testing) { carAfterRace.DoTesting(td, track, sf); } carPartsBought = GetWhichCarPartsChange(car, carAfterRace, targetCarLevel, targetCarLevel2); carAfterRace = (Classes.Car)car.Clone(); carAfterRace = GetCarAfterPartsChangeAndWear(car, testing, track, driver, td, sf, ct, carPartsBought); int qualPosition = SpHelper.GetQualPosition(driver, car, division); int racePosition = SpHelper.GetRacePosition(driver, car, division, ct); int racePoints = SpHelper.GetPoints(racePosition); //Expenses processing float balanceAfterRaceM = ((balanceM * 1000000) + GetAfterRaceBalance(driver, td, sf, testing, tyre, car, division, qualPosition, racePosition, trainning, carPartsBought)) / 1000000f; #endregion #region Output SeasonPlannerDecision spDecisionsNext = new SeasonPlannerDecision(); spDecisionsNext = (Classes.SeasonPlannerDecision)spFull.spDecisions.Clone(); SeasonPlannerForDataTable spTableNext = new SeasonPlannerForDataTable(); spTableNext.SeasonRaceNumber = spFull.spTable.SeasonRaceNumber + 1; spTableNext.BalanceAfterRaceM = balanceAfterRaceM; spTableNext.CarPartsChanged = carPartsBought; spTableNext.CarWearAfterRace = carAfterRace.GetWears(); spTableNext.QualPosition = qualPosition; spTableNext.RacePosition = racePosition; SeasonPlannerForOptimizer spOptimizerNext = new SeasonPlannerForOptimizer(); spOptimizerNext.car = (Classes.Car)carAfterRace.Clone(); driver.DoTrainning((DriverTrainning)trainning); driver.DriverUpdateAfterRace(racePosition); spOptimizerNext.driver = driver; spOptimizerNext.Id = spFull.spOptimizer.Id + 1; spOptimizerNext.raceTab = rt; //How to update trackId? spOptimizerNext.staffFacilities = sf; //To Do: Update sf after races (convert levels to float type) spOptimizerNext.technicalDirector = td; SeasonPlannerTab spTabNext = new SeasonPlannerTab(); spTabNext.CurrentPoints = spFull.spTab.CurrentPoints + racePoints; spTabNext.Division = spFull.spTab.Division; spTabNext.StartingBalanceM = balanceAfterRaceM; spTabNext.TargetPoints = spFull.spTab.TargetPoints; SeasonPlannerFullLine spFullNext = new SeasonPlannerFullLine(spDecisionsNext, spTableNext, spOptimizerNext, spTabNext); return(spFullNext); #endregion }