/// <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 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 schoonmaakspoor. /// </summary> /// <param name="tram">De tram die ingedeeld moet worden</param> /// <param name="dc">De databasecontroller</param> public void DeelTramInOpSchoonmaakSpoor(Tram tram, DatabaseController dc) { Spoor repSpoor = VerkrijgVrijSchoonmaakSpoor(); //Verkrijgt een leeg schoonmaakspoor 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); repSpoor.SpoorStatus = SpoorStatus.InGebruik; dc.UpdateSpoor(repSpoor); 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); } } } } }