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> /// Update alle spoor waarden in de database voor het gegeven spoor id. /// </summary> /// <param name="spoor">Het spoor dat moet worden geüpdate</param> /// <returns></returns> public bool UpdateSpoor(Spoor spoor) { try { string sql = "UPDATE SPOOR SET Remise_ID = :Remise_ID, Nummer = :Nummer, Lengte = :Lengte, Beschikbaar = :Beschikbaar, InUitRijspoor = :InUitRijspoor" + " WHERE ID = :ID"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":Remise_ID", spoor.Remise.ID); command.Parameters.Add(":Nummer", spoor.Nummer); command.Parameters.Add(":Lengte", spoor.Lengte); command.Parameters.Add(":Beschikbaar", Convert.ToInt32(spoor.Beschikbaar)); command.Parameters.Add(":InUitRijspoor", Convert.ToInt32(spoor.SpoorType)); command.Parameters.Add(":ID", spoor.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
/// <summary> /// Verplaats de tram naar een ander spoor of sector /// </summary> /// <param name="tram">De tram die verplaatst moet worden</param> /// <param name="spoorVan">Het spoor waar die tram op staat</param> /// <param name="sectorVan">De sector waar die tram op staat</param> /// <param name="spoorNaar">Het spoor waar de tram naar toe gaat</param> /// <param name="sectorNaar">De sector waar de tram naar toe gaat.</param> /// <returns>Retourneert een fout string</returns> public bool TramVerplaatsen(Tram tram, Spoor spoorVan, Sector sectorVan, Spoor spoorNaar, Sector sectorNaar) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen. { foreach (Sector sector in spoorVan.Sectoren) { if (sector.Tram.ID == tram.ID) { foreach (Sector naarSector in spoorNaar.Sectoren) { if (naarSector.ID == sectorNaar.ID) { sector.VerwijderTram(); naarSector.VerwijderTram(); DatabaseController dc = new DatabaseController(); if (dc.UpdateSector(sector, huidigeRemise)) { if (dc.UpdateSector(naarSector, huidigeRemise)) { return(true); } else { throw new TramVerplaatsException("De sector waar de tram naar verplaatst wordt kon niet worden geüpdate in de database!"); } } else { throw new TramVerplaatsException("De sector waarvan de tram word verplaats kon niet worden geüpdate in de database!"); } } } } } throw new TramVerplaatsException("De sector waarvan de tram word verplaats of de sector waarnaar de tram wordt verplaats kon niet gevonden worden!"); }
/// <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!"); } }
/// <summary> /// Deelt de tram in op een vrij onderhoudsspoor. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInOpOnderhoudsSpoor(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { OnderhoudController oc = new OnderhoudController(huidigeRemise); Onderhoud onderhoud = oc.GetOnderhoud(tram); Spoor spoor = oc.GetVrijOnderhoudsSpoor(); if (spoor != null) { Sector sector = spoor.GetEersteSector(); sector.PlaatsTram(tram); if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID) { spoor.Beschikbaar = false; } dc.UpdateSpoor(spoor); dc.UpdateSector(sector, huidigeRemise); dc.UpdateTram(sector.Tram); } else { DeelTramInVolgensAlgoritme(tram, dc); } }
/// <summary> /// Verkrijgt een sector van een specifiek spoor. /// </summary> /// <param name="spoor">Het spoor waar de sector zich in moet bevinden</param> /// <param name="sectorID">Het id van de sector die gevonden moet worden</param> /// <returns>Retourneert een sector wanneer die gevonden is op het gegeven spoor.</returns> public Sector GetSectorByID(Spoor spoor, int sectorID) { foreach (Sector s in spoor.Sectoren) { if (s.ID == sectorID) { return(s); } } return(null); }
/// <summary> /// Deze methode verkrijgt een lijst met alle sporen, van ieder spoor krijgen we ook de sectoren. /// </summary> /// <returns></returns> public List <Spoor> GetAllSporen(Remise r) { try { List <Spoor> sporen = new List <Spoor>(); List <Sector> sectoren = GetAllSectoren(r); string sql = "SELECT * FROM SPOOR WHERE REMISE_ID = :Remise_ID"; OracleCommand cmd = MaakOracleCommand(sql); cmd.Parameters.Add(":Remise_ID", r.ID); OracleDataReader reader = VoerQueryUit(cmd); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); int nummer = Convert.ToInt32(reader.GetValue(2)); int lengte = Convert.ToInt32(reader.GetValue(3)); bool beschikbaar = Convert.ToBoolean(reader.GetValue(4)); SpoorType type = (SpoorType)Convert.ToInt32(reader.GetValue(5)); Spoor spoor = new Spoor(id, r, nummer, lengte, beschikbaar, type); foreach (Sector s in sectoren) { if (spoor.ID == s.SpoorID) { spoor.SectorToevoegen(s); } } sporen.Add(spoor); } return(sporen); } catch { throw new NoSporenFoundException("Geen sporen gevonden in DatabaseController: GetAllSporen"); } finally { verbinding.Close(); } }
public Reservering(int id, Tram tram, Spoor spoor) { this.id = id; this.tram = tram; this.spoor = spoor; }
// Constructors public Reservering(Tram tram, Spoor spoor) { this.tram = tram; this.spoor = spoor; }