/// <summary> /// Reserveert een sector voor een tram. /// </summary> /// <param name="sector">De sector die gereserveerd moet worden.</param> /// <param name="tram">De tram waarvoor de reservering wordt gemaakt.</param> /// <returns>Een string met het bericht of iets is gelukt of niet.</returns> public void SpoorReserveren(Spoor spoor, Tram tram) { DatabaseController dc = new DatabaseController(); int aantalReserveringen = 0; foreach (Reservering r in GetAllReserveringen()) { if (r.Spoor.ID == spoor.ID) { aantalReserveringen++; if (r.Tram.ID == tram.ID) { throw new SpoorReserveerException("Tram is al gereserveerd!"); } } } if (aantalReserveringen < spoor.Sectoren.Count) { Reservering res = new Reservering(tram, spoor); if (!dc.AddReservering(res)) { throw new SpoorReserveerException("De reservering kon niet worden toegevoegd aan de database!"); } } else { throw new SpoorReserveerException("Er zijn al teveel reserveringen voor dit spoor waardoor er geen sectoren meer over zijn!"); } }
public List <Reservering> GetAllReservering(Remise r) { try { List <Reservering> reserveringen = new List <Reservering>(); string sql = "SELECT * FROM RESERVERING"; List <Tram> trams = GetAllTrams(r); List <Spoor> sporen = GetAllSporen(r); OracleCommand cmd = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(cmd); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1))); Spoor spoor = VerkrijgSpoor(sporen, Convert.ToInt32(reader.GetValue(2))); Reservering reservering = new Reservering(id, tram, spoor); reserveringen.Add(reservering); } return(reserveringen); } catch { return(null); } finally { verbinding.Close(); } }
/// <summary> /// Deelt de tram in op een vrij onderhoudsspoor. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInOpReservering(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { BeheerController bc = new BeheerController(); Reservering reservering = bc.GetReservering(tram); foreach (Spoor spoor in alleSporen) { if (reservering.Spoor.ID == spoor.ID) { Sector sector = spoor.GetEersteSector(); if (sector == null) { DeelTramInVolgensAlgoritme(tram, dc); return; } else { sector.PlaatsTram(tram); if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID) { spoor.Beschikbaar = false; } tram.Beschikbaar = true; dc.UpdateSpoor(spoor); dc.UpdateTram(tram); dc.UpdateSector(sector, huidigeRemise); dc.DeleteReservering(reservering.ID); } } } }
/// <summary> /// Voegt een reservering toe aan de database. /// </summary> /// <param name="res">De reservering die moet worden toegevoegd</param> /// <returns>Of de reservering is toegevoegd of niet</returns> public bool AddReservering(Reservering res) { try { //Todo nextval? string sql = "INSERT INTO RESERVERING ( Tram_ID, Spoor_ID ) VALUES ( :Tram_ID, :Spoor_ID )"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":Tram_ID", res.Tram.ID); command.Parameters.Add(":Spoor_ID", res.Spoor.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }