/// <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> /// 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> /// 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); } }
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); } } } } }