/// <summary> /// Update alle tram waarden in de database voor het gegeven tram id. /// </summary> /// <param name="tram">De tram die moet worden geüpdate</param> /// <returns></returns> public bool UpdateTram(Tram tram) //Moet nog worden getest { try { string sql = "UPDATE TRAM SET TRA_TYPE = :tramType, TRAMNUMMER = :tramNummer, VERTREKTIJD = :vertrekTijd, STATUS = :status, STATUS_OPMERKING = :statusOpmerking" + " WHERE ID = :ID"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":tramType", Convert.ToInt32(tram.Type)); command.Parameters.Add(":tramNummer", tram.TramNummer); command.Parameters.Add(":vertrekTijd", tram.VertrekTijd); command.Parameters.Add(":status", Convert.ToInt32(tram.Status)); command.Parameters.Add(":statusOpmerking", tram.StatusOpmerking); command.Parameters.Add(":ID", tram.ID); return(VoerNonQueryUit(command)); } catch { return(false); } finally { verbinding.Close(); } }
//private Tram binnenrijdendeTram; /* public void deelTramIn(Tram tram) * { * DatabaseController dc = new DatabaseController(); * * alleSporen = dc.GetAllSporen(); * * int spoorCounter = 0; * * foreach (Spoor spoor in alleSporen) * { * foreach (Sector sector in spoor.Sectoren) * { * if(sector.Status == SectorStatus.bezet) * { * // Als een spoor bezet is dan +1 * spoorCounter += 1; * } * } * } * * if(spoorCounter == 0) * { * //Alle sporen zijn leeg * tram.Status = 2; * dc.UpdateTram(tram); * alleSporen.First().Sectoren.First().Tram = tram; * alleSporen.First().Sectoren.First().Status = SectorStatus.bezet; * dc.UpdateSector(alleSporen.First().Sectoren.First()); * alleSporen.First().SpoorStatus = true; * dc.UpdateSpoor(alleSporen.First()); * return; * } * else * { * foreach (Spoor spoor in alleSporen) * { * //spoorStatus = true, spoor is bezet * // TODO: er zijn geen sporen die bezet zijn waar de tram op geplaatst kan worden, plaats m op een leeg spoor. * if(spoor.SpoorStatus == true) * { * foreach (Sector sector in spoor.Sectoren) * { * int sectorIndex = spoor.Sectoren.IndexOf(sector); * if(sector.Status == SectorStatus.bezet) * { * if (Convert.ToInt32(sector.Tram.VertrekTijd) >= Convert.ToInt32(tram.VertrekTijd)) * { * //De tram vertrekt eerder en kan er dus voor geplaatst worden * if (spoor.Sectoren.Count > (sectorIndex + 1)) * { * if (spoor.Sectoren[sectorIndex + 1].Status != SectorStatus.bezet) * { * tram.Status = 2; * dc.UpdateTram(tram); * spoor.Sectoren[sectorIndex + 1].Tram = tram; * spoor.Sectoren[sectorIndex + 1].Status = SectorStatus.bezet; * dc.UpdateSector(spoor.Sectoren[sectorIndex + 1]); * return; * } * } * else * { * sectorIndex = 0; * } * } * //De tram vertrekt later dan de tram die er al staat, zoek een ander spoor * } * } * } * } * * foreach (Spoor spoor in alleSporen) * { * if(spoor.SpoorStatus == false) * { * spoor.Sectoren.First().Status = SectorStatus.bezet; * tram.Status = 2; * dc.UpdateTram(tram); * spoor.Sectoren.First().Tram = tram; * dc.UpdateSector(spoor.Sectoren.First()); * spoor.SpoorStatus = true; * dc.UpdateSpoor(spoor); * return; * } * } * } * }*/ /// <summary> /// Deelt de tram in op het spoor. /// </summary> /// <param name="tram"></param> public void DeelTramInBeter(Tram tram) { DatabaseController dc = new DatabaseController(); //Maakt een verbinding met de database via de databaseklasse. alleSporen = dc.GetAllSporen(); //Verkrijgt alle sporen. int controleer = ControleerTram(tram); //Controlleert of de tram nog moet worden schoongemaakt of gerepareerd. if (controleer == 2) //indien de tram nog moet worden gerepareert deel de tram dan in op het repartatiespoor. { DeelTramInOpReparatieSpoor(tram, dc); } else if (controleer == 1) //indien de tram nog moet worden schoongemaakt deel de tram dan in op een schoonmaakspoor. { DeelTramInOpSchoonmaakSpoor(tram, dc); } else if (controleer == 0) //Deelt de tram in op het spoor volgens ons indelingsalgoritme. { DeelTramInVolgensAlgoritme(tram, dc); } else if (controleer == 3) { DeelTramInOpReservering(tram, dc); } }
/// <summary> /// Verkrijgt alle reserveringen. /// </summary> /// <returns>Retourneert een lijst met reserveringen</returns> public List <Reservering> GetAllReservering() { try { List <Tram> trams = GetAllTrams(); List <Sector> sectoren = GetAllSectoren(); List <Reservering> reserveringen = new List <Reservering>(); string sql = "SELECT * FROM RESERVERING"; OracleCommand command = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(command); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1))); Sector sector = VerkrijgSector(sectoren, Convert.ToInt32(reader.GetValue(2))); reserveringen.Add(new Reservering(id, tram, sector)); } return(reserveringen); } catch { return(null); } finally { verbinding.Close(); } }
/// <summary> /// Veranderd de status van de tram /// </summary> /// <param name="tram">De tram die van status moet worden veranderd</param> /// <param name="tramStatus">De status waar de tram naar moet worden veranderd</param> public string TramStatusAanpassen(Tram tram, TramStatus tramStatus) //TODO: wanneer de tram naar indienst wordt verzet en op het eerste spoor staat dan verdwijnt die uit de { DatabaseController dc = new DatabaseController(); if (tramStatus == TramStatus.InDienst) { Spoor spoor = GetSpoorByTram(tram); Sector sector = GetSectorByTram(tram); if (spoor.Sectoren[0].Id == sector.Id) { sector.Tram = null; sector.Status = SectorStatus.leeg; dc.UpdateSector(sector); } else { return("De tram wordt geblokkeerd door een andere tram op het spoor, hierdoorm kan de tram nog niet naar indienst worden gezet."); } } else { tram.Status = tramStatus; //TODO: tram naar onderhouds of normaal spoor sturen wanneer die van status is veranderd. (kan volgens mij met algoritme) } if (dc.UpdateTram(tram)) { return("Gelukt! Tramstatus van tram " + tram.TramNummer + " is nu " + tramStatus.ToString() + "."); } else { return("Kon de tramstatus van tram " + tram.TramNummer + " niet aanpassen."); } }
/// <summary> /// Controleer of de tram een onderhoudsbeurt nodig heeft. /// </summary> /// <param name="tram">De tram die wordt gecontroleerd</param> /// <returns></returns> public int ControleerTram(Tram tram) { ReparatieController rc = new ReparatieController(); SchoonmaakController sc = new SchoonmaakController(); BeheerController bc = new BeheerController(); if (rc.TramControleerReparatie(tram)) //indien er nog een tram moet worden gerepareerd retourneer dan 2. { return(2); /* * if (sc.TramControleerSchoonmaak(tram)) * { * return 3; * }*/ } else if (sc.TramControleerSchoonmaak(tram)) //wanneer er nog een tram moet worden schoongemaakt retourneer dan 1. { return(1); } else if (bc.TramControleerReservering(tram)) { return(3); } else //wanneer de tram geen onderhousbeurt nodig heeft retourneer dan 0. { return(0); } }
public Onderhoud(Tram tram, string opmerking, DateTime datum, bool bevestigd) { this.tram = tram; this.opmerking = opmerking; this.datum = datum; this.bevestigd = bevestigd; }
//constructor public Sector(int id, Tram tram, int spoornummer, SectorStatus status) { this.id = id; spoorNummer = spoornummer; this.tram = tram; this.status = status; }
public Schoonmaak(Tram tram, string opmerking, DateTime datum, bool bevestigd, SchoonmaakType schoonmaakType) : base(tram, opmerking, datum, bevestigd) { this.Tram = tram; this.Opmerking = opmerking; this.Datum = datum; this.Bevestigd = bevestigd; this.schoonmaakType = schoonmaakType; }
public Reparatie(ReparatieType reparatieType, Tram tram, string opmerking, DateTime datum, bool bevestigd) : base(tram, opmerking, datum, bevestigd) { this.reparatieType = reparatieType; this.Tram = tram; this.Opmerking = opmerking; this.Datum = datum; this.Bevestigd = bevestigd; }
public Schoonmaak(int id, Tram tram, string opmerking, DateTime datum, bool bevestigd, SchoonmaakType schoonmaakType) : base(id, tram, opmerking, datum, bevestigd) { /* * this.ID = id; * this.Tram = tram; * this.Opmerking = opmerking; * this.Datum = datum; * this.Bevestigd = bevestigd;*/ this.schoonmaakType = schoonmaakType; }
public bool TramControleerReservering(Tram tram) { foreach (Reservering reservering in GetAllReserveringen()) { if (reservering.Tram.TramNummer == tram.TramNummer) { return(true); } } return(false); }
/// <summary> /// Voegt schoonmaak toe aan de database. /// </summary> /// <param name="tram"></param> /// <param name="opmerking"></param> /// <param name="date"></param> /// <param name="bevestigd"></param> /// <param name="st"></param> /// <returns></returns> public string AddSchoonmaak(Tram tram, string opmerking, DateTime date, bool bevestigd, SchoonmaakType st) { DatabaseController dc = new DatabaseController(); if (dc.AddSchoonmaak(new Schoonmaak(tram, opmerking, date, bevestigd, st))) { return("Schoonmaak " + tram.TramNummer + " succesvol toegevoegd!"); } else { return("Kon Schoonmaak " + tram.TramNummer + " niet toevoegen. Probeer het later opnieuw"); } }
/// <summary> /// Voegt een reparatie toe aan de database. /// </summary> /// <param name="reparatie"></param> /// <param name="tram"></param> /// <param name="opmerking"></param> /// <param name="date"></param> /// <param name="bevestigd"></param> /// <returns></returns> public string AddReparatie(ReparatieType reparatie, Tram tram, string opmerking, DateTime date, bool bevestigd) { DatabaseController dc = new DatabaseController(); if (dc.AddReparatie(new Reparatie(reparatie, tram, opmerking, date, false))) { return("Reparatie " + tram.TramNummer + " succesvol toegevoegd!"); } else { return("Kon Reparatie " + tram.TramNummer + " niet toevoegen. Probeer het later opnieuw"); } }
/// <summary> /// Kijkt of een tram nog gerepareerd moet worden. /// </summary> /// <param name="tram"></param> /// <returns>Of een tram wel of niet moet worden gerepareerd</returns> public bool TramControleerReparatie(Tram tram) { DatabaseController dc = new DatabaseController(); reparatie = dc.GetAllReparatie(); foreach (Reparatie r in reparatie) { if (r.Tram.ID == tram.ID) { return(true); } } return(false); }
/// <summary> /// Controleert of een tram schoongemaakt moet worden /// </summary> /// <param name="tram">Tram die gecontroleert moet worden</param> /// <returns></returns> public bool TramControleerSchoonmaak(Tram tram) { DatabaseController dc = new DatabaseController(); schoonmaak = dc.GetAllSchoonmaak(); foreach (Schoonmaak s in schoonmaak) { if (s.Tram.ID == tram.ID) { return(true); } } return(false); }
/// <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 string SectorReserveren(Sector sector, Tram tram) //TODO optimaliseren/verkleinen, we hebben hiervoor al methodes in deze klassen zitten. { Reservering r = new Reservering(tram, sector); if (dc.AddReservering(r)) { Spoor spoor = GetSpoorByNummer(sector.SpoorNummer); spoor.SpoorStatus = SpoorStatus.InGebruik; dc.UpdateSpoor(spoor); return("Reservering voor tramnummer " + tram.TramNummer + " toegevoegd op sector met ID " + sector.Id); } else { return("Kon reservering voor tramnummer " + tram.TramNummer + " niet toevoegen op sector met ID " + sector.Id); } }
/// <summary> /// Verkrijgt de sector waar mogelijk een tram op staat. /// </summary> /// <param name="tram">De tram waarmee je de sector zoekt.</param> /// <returns>Retourneert de sector waar de meegegeven tram op staat</returns> public Sector GetSectorByTram(Tram tram) { foreach (Spoor spoor in GetAllSporen()) { foreach (Sector s in spoor.Sectoren) { if (s.Tram != null) { if (s.Tram.TramNummer == tram.TramNummer) { return(s); } } } } return(null); }
/// <summary> /// Deelt de tram in op een leeg reparatiespoor. /// </summary> /// <param name="tram">De tram die ingedeelt moet worden.</param> /// <param name="dc">De databasecontroller die verbinding maakt met de database</param> public void DeelTramInOpReparatieSpoor(Tram tram, DatabaseController dc) { Spoor repSpoor = VerkrijgVrijReparatieSpoor(); //Verkrijgt een leeg reparatie spoor. Sector legeSector = repSpoor.VerkrijgEerstLegeSector(); //Verkrijgt een lege sector op het verkregen schoonmaakspoor. if (legeSector != null) //indien legesector bestaat deel de tram dan in op die sector. { legeSector.Tram = tram; legeSector.Status = SectorStatus.bezet; dc.UpdateSector(legeSector); tram.Status = TramStatus.Geparkeerd; dc.UpdateTram(tram); } else //wanneer legesector niet bestaat deel de tram dan in volgens het normaal indelingsalgoritme. { DeelTramInVolgensAlgoritme(tram, dc); } }
/// <summary> /// Deelt de tram in op een spoor dat voldoet aan de eisen van ons algoritme. /// </summary> /// <param name="tram">De tram die ingedeelt moet worden</param> /// <param name="dc">De databasecontroller die aangemaakt wordt in de DeelTramBeterIn methode</param> public void DeelTramInVolgensAlgoritme(Tram tram, DatabaseController dc) { for (int x = 0; x < alleSporen.Count; x++) //doorloopt alle sporen. { if (alleSporen[x].SpoorStatus == SpoorStatus.InGebruik) //wanneer het spoor in gebruik is. { for (int i = 0; i < alleSporen[x].Sectoren.Count; i++) //doorloopt alle sectoren van het spoor. { if (alleSporen[x].Sectoren[i].Status == SectorStatus.leeg && alleSporen[x].Sectoren[i].IsGereserveerdCheck(dc.GetAllReservering()) == false) //indien er nog een sector vrij is. { if (i - 1 != -1 && alleSporen[x].Sectoren[i - 1].Tram != null) { if (Convert.ToInt32(alleSporen[x].Sectoren[i - 1].Tram.VertrekTijd) <= Convert.ToInt32(tram.VertrekTijd)) //indien de vertrektijd van de laatste tram op het spoor vroeger is dan van de parameter tram. { alleSporen[x].Sectoren[i].Status = SectorStatus.bezet; alleSporen[x].Sectoren[i].Tram = tram; dc.UpdateSector(alleSporen[x].Sectoren[i]); //de sector wordt geÜpdate tram.Status = TramStatus.Geparkeerd; dc.UpdateTram(tram); //de tram word geüpdate. return; } else { break; } } } } } else { alleSporen[x].SpoorStatus = SpoorStatus.InGebruik; dc.UpdateSpoor(alleSporen[x]); //spoor wordt geüpdate. alleSporen[x].Sectoren.First().Status = SectorStatus.bezet; alleSporen[x].Sectoren.First().Tram = tram; dc.UpdateSector(alleSporen[x].Sectoren.First()); //de sector wordt geÜpdate tram.Status = TramStatus.Geparkeerd; dc.UpdateTram(tram); //de tram word geüpdate. return; } } }
/// <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 string TramVerplaatsen(Tram tram, Spoor spoorVan, Sector sectorVan, Spoor spoorNaar, Sector sectorNaar) { //Todo: Als spoorVan en sectorVan niet null zijn dan moet er nog worden gekeken of de tram überhaupt wel verplaatst mag worden. string result = " "; if (sectorVan != null && spoorVan != null) { if (sectorVan.Tram.TramNummer == tram.TramNummer) { if (spoorVan.Sectoren[0].SpoorNummer == sectorVan.SpoorNummer) { spoorVan.VeranderSectorStatus(sectorVan, SectorStatus.leeg); sectorVan.Status = SectorStatus.leeg; spoorVan.ZetSpoorStatus(); dc.UpdateSector(sectorVan); dc.UpdateSpoor(spoorVan); } else { return("tram kan niet verplaatst worden omdat die niet op de eerste sector staat!"); } } } if (spoorNaar != null && sectorNaar != null) { if (spoorNaar.HeeftSector(sectorNaar)) { sectorNaar.Status = SectorStatus.bezet; sectorNaar.Tram = tram; spoorNaar.SpoorStatus = SpoorStatus.InGebruik; dc.UpdateSector(sectorNaar); dc.UpdateSpoor(spoorNaar); } else { return("Sector niet gevonden bij gegeven spoor!"); } } return(result); }
public void DeelTramInOpReservering(Tram tram, DatabaseController dc) { foreach (Reservering reservering in dc.GetAllReservering()) { if (reservering.Tram.TramNummer == tram.TramNummer) { foreach (Spoor spoor in alleSporen) { if (reservering.Sector.SpoorNummer == spoor.SpoorNummer && reservering.Sector.Status == SectorStatus.leeg) { spoor.SpoorStatus = SpoorStatus.InGebruik; dc.UpdateSpoor(spoor); reservering.Sector.Status = SectorStatus.bezet; reservering.Sector.Tram = tram; dc.UpdateSector(reservering.Sector); tram.Status = TramStatus.Geparkeerd; dc.UpdateTram(tram); } } } } }
/// <summary> /// Verkrijgt een lijst met alle trams die moeten worden schoongemaakt. /// </summary> public List <Schoonmaak> GetAllSchoonmaak() { try { List <Tram> trams = GetAllTrams(); List <Schoonmaak> schoonmaak = new List <Schoonmaak>(); string sql = "SELECT * FROM ONDERHOUD WHERE TypeOnderhoud = '" + "Schoonmaak " + "'"; OracleCommand command = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(command); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1))); SchoonmaakType s = (SchoonmaakType)Convert.ToInt32(reader.GetValue(3)); string opmerking = Convert.ToString(reader.GetValue(4)); DateTime invoerDatum = DateTime.Now; //Convert.ToDateTime(reader.GetValue(5)); bool bevestigd = Convert.ToBoolean(reader.GetValue(6)); schoonmaak.Add(new Schoonmaak(id, tram, opmerking, invoerDatum, bevestigd, s)); } return(schoonmaak); } catch { return(null); } finally { verbinding.Close(); } }
public List <Reparatie> GetAllReparatie() { try { List <Tram> trams = GetAllTrams(); List <Reparatie> reparatie = new List <Reparatie>(); string sql = "SELECT * FROM ONDERHOUD WHERE SOORT = 1"; OracleCommand command = MaakOracleCommand(sql); OracleDataReader reader = VoerQueryUit(command); while (reader.Read()) { int id = Convert.ToInt32(reader.GetValue(0)); Tram tram = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1))); ReparatieType s = (ReparatieType)Convert.ToInt32(reader.GetValue(3)); string opmerking = Convert.ToString(reader.GetValue(4)); DateTime invoerDatum = DateTime.Now; //Convert.ToDateTime(reader.GetValue(5)); bool bevestigd = Convert.ToBoolean(reader.GetValue(6)); reparatie.Add(new Reparatie(s, tram, opmerking, invoerDatum, bevestigd)); } return(reparatie); } catch { return(null); } finally { verbinding.Close(); } }
public bool AddTram(Tram tram) { try { /* * string sql = "INSERT INTO TRAM ( ID, TRA_ID, SPO_NUMMER) VALUES ( RESERVERING_SEQ, :tramID, :spoorNummer )"; * * OracleCommand command = MaakOracleCommand(sql); * * command.Parameters.Add(":tramID", tram.ID); * command.Parameters.Add(":spoorNummer", tram.Status); * * return VoerNonQueryUit(command); */ return(true); } catch { return(false); } finally { verbinding.Close(); } }
/// <summary> /// /// </summary> /// <param name="spoorNummer"></param> /// <param name="sectorNummer"></param> public void TramPlaatsen(Tram tram, Spoor spoor, Sector sector) { }
public Reservering(int id, Tram tram, Sector sector) { this.id = id; this.tram = tram; this.sector = sector; }
// Constructors public Reservering(Tram tram, Sector sector) { this.tram = tram; this.sector = sector; }