/// <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> * /// * /// </summary> * /// <param name="tramNummer"></param> * /// <param name="spoorNummer"></param> * /// <param name="sectorNummer"></param> * public string TramVerplaatsen(int tramnummer, int spoornummer, int sectorID_naar) //TODO optimaliseren/verkleinen, we hebben daarvoor al methodes in deze klassen zitten. * { * Sector van = null; * Spoor spoorvan = null; * * foreach (Spoor spoor in sporen) * { * foreach (Sector sector in spoor.Sectoren) * { * if (sector.Tram == null) * { * continue;//to next foreach loop, aka skip the next if-statement * } * if (sector.Tram.TramNummer == tramnummer) * { * van = sector; * spoorvan = spoor; * van.Status = SectorStatus.leeg; * } * } * } * * if (van == null) * { * return "Sector 'van' kon niet gevonden worden aan de hand van dit tramnummer.\r\nWaarschijnlijk staat deze tram niet op een sector momenteel."; * } * * if (spoorvan == null) * { * return "Kon spoorvan niet vinden."; * } * * Sector naar = null; * * foreach (Spoor spoor in sporen) * { * foreach (Sector sector in spoor.Sectoren) * { * if (sector.Id == sectorID_naar) * { * naar = sector; * naar.Status = SectorStatus.bezet; * } * } * } * * if (naar == null) * { * return "Sector 'naar' kon niet gevonden worden."; * } * * string result = ""; * * * van.Tram = null; * if (dc.UpdateSector(van)) * { * result += "Updaten van de oude sector is gelukt. "; * } * else * { * result += "Kon de oude sector niet updaten. "; * } * * Tram t = null; * foreach (Tram tram in trams) * { * if (tram.TramNummer == tramnummer) * { * t = tram; * } * } * if (t == null) * { * return "Kon tram met tramnummer " + tramnummer + " niet vinden."; * } * * naar.Tram = t; * if (dc.UpdateSector(naar)) * { * result += "Updaten van de nieuwe sector is gelukt."; * } * else * { * result += "Kon de nieuwe sector niet updaten."; * } * * Spoor spoor_naar = null; * * foreach (Spoor spoor in sporen) * { * if (spoor.SpoorNummer == spoornummer) * { * spoor_naar = spoor; * } * } * * spoorvan.SpoorStatus = SpoorStatus.Leeg; * * foreach (Sector sector in spoorvan.Sectoren) * { * if (sector.Status == SectorStatus.bezet) * { * spoorvan.SpoorStatus = SpoorStatus.InGebruik; * } * } * * spoor_naar.SpoorStatus = SpoorStatus.InGebruik; * * dc.UpdateSector(naar); * dc.UpdateSector(van); * dc.UpdateSpoor(spoorvan); * dc.UpdateSpoor(spoor_naar); * * return result; * } */ /// <summary> /// /// </summary> /// <param name="spoorNummer"></param> public string ToggleSpoor(Spoor spoor) //TODO: kan nog geoptimaliseerd/verkleint worden. In plaats van spoornummer Spoor parameter zelf en de GetSpoorByID method aanroepen met tramnummer. { string p_result; // Als de sector niet gevonden is, return error if (spoor == null) { return("Error, kon sector niet vinden"); } // Toggle het spoor if (spoor.SpoorStatus == SpoorStatus.InGebruik) { p_result = "leeg"; spoor.SpoorStatus = SpoorStatus.Leeg; } else { p_result = "in gebruik"; spoor.SpoorStatus = SpoorStatus.InGebruik; } if (dc.UpdateSpoor(spoor)) { return("Spoorstatus is nu " + p_result); } else { return("Kon spoor niet updaten."); } }
/// <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) { Update(); foreach (Sector s in spoor.Sectoren) { if (s.Id == sectorID) { return(s); } } return(null); }
/// <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> /// 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> /// 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); }
/// <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) //Moet nog worden getest { try { string sql = "UPDATE SPOOR SET STATUS = :status, TYPE = :type" + " WHERE NUMMER = :nummer"; OracleCommand command = MaakOracleCommand(sql); command.Parameters.Add(":status", Convert.ToInt32(spoor.SpoorStatus)); command.Parameters.Add(":tramType", Convert.ToInt32(spoor.SpoorType)); command.Parameters.Add(":nummer", spoor.SpoorNummer); return(VoerNonQueryUit(command)); } 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) { }