/// <summary> /// Voegt een tram toe aan de database /// </summary> /// <param name="tramNummer">Het nummer van de tram die je wilt toevoegen</param> /// <param name="vertrektijd">De vertrektijd van de tram die je wilt toevoegen</param> /// <param name="type">Het soort tram dat je wilt toevoegen</param> public bool TramToevoegen(int tramNummer, DateTime vertrektijd, TramType type) { DatabaseController dc = new DatabaseController(); Tram tram = new Tram(huidigeRemise, type, vertrektijd, tramNummer, 1, "", false, false, true, false); if (dc.AddTram(tram)) { return(true); } else { throw new TramToevoegException(); } }
/// <summary> /// Deelt de tram in op het spoor. /// </summary> /// <param name="tram"></param> public static void DeelTramInBeter(Tram tram) { if (tram == null) { throw new InUitRijException("U probeert een leeg tram object in te delen"); } DatabaseController dc = new DatabaseController(); //Maakt een verbinding met de database via de databaseklasse. alleSporen = dc.GetAllSporen(huidigeRemise); //Verkrijgt alle sporen. DeelTramIn deelTramIn = IndelingMethodes[ControleerTram(tram)]; //Voegt een methode toe aan de delegate afhankelijk van de stauts van de tram. deelTramIn(tram, dc); //Voert DeelTramInOpOnderhoudsSpoor of DeelTramInVolgensAlgoritme afhankelijk van de status van de Tram. }
/// <summary> /// Blokeert/deblokkeert een sector. /// </summary> /// <param name="spoorNummer"></param> /// <param name="sectorNummer"></param> public void ToggleSector(Sector sector) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen. { if (sector.Tram != null) { throw new ToggleSectorException("Er staat nog een tram op de sector."); } sector.Geblokkeerd = !sector.Geblokkeerd; sector.Beschikbaar = !sector.Beschikbaar; DatabaseController dc = new DatabaseController(); if (!dc.UpdateSector(sector, huidigeRemise)) { throw new ToggleSectorException("De sector kon niet worden geblokkeerd/gedeblokkeerd!"); } }
/// <summary> /// Haalt een lijst op van alle trams die niet defect zijn. /// </summary> /// <returns>Retourneert een lijst met niet defecte trams.</returns> public List <Tram> GetNietDefecteTrams() { DatabaseController dc = new DatabaseController(); List <Tram> trams = dc.GetAllTrams(huidigeRemise); foreach (Onderhoud o in GetAllOnderhoud()) { foreach (Tram tram in trams.ToList()) { if (o.Tram.TramNummer == tram.TramNummer && (o.TypeOnderhoud == TypeOnderhoud.KleineServiceBeurt || o.TypeOnderhoud == TypeOnderhoud.GroteServiceBeurt)) { trams.Remove(tram); } } } return(trams); }
/// <summary> /// Deelt de tram in volgens het normaal algrotime. /// </summary> /// <param name="tram"></param> /// <param name="dc"></param> public static void DeelTramInVolgensAlgoritme(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding. { for (int x = 0; x < alleSporen.Count; x++) { if (alleSporen[x].Beschikbaar && alleSporen[x].SpoorType == SpoorType.Normaal) //TODO: spoor op niet beschikbaar zetten wanneer de laatste sector word gewijzigt naar niet beschikbaar of geblokkeerd. { for (int i = 0; i < alleSporen[x].Sectoren.Count; i++) { if (alleSporen[x].Sectoren[i].Beschikbaar && !alleSporen[x].Sectoren[i].Geblokkeerd && alleSporen[x].GenoegVrijeSporen()) { //Kijken of vertrektijd met vorige kan //Kijken of vertrektijd met reservering kan if (i - 1 != -1 && alleSporen[x].Sectoren[i - 1].Tram != null) { if (alleSporen[x].Sectoren[i - 1].Tram.Vertrektijd <= tram.Vertrektijd) { //plaats tram, TODO: Aparte MEthode volgende stuk alleSporen[x].Sectoren[i].PlaatsTram(tram); if (alleSporen[x].Sectoren[i].ID == alleSporen[x].Sectoren[(alleSporen[x].Sectoren.Count - 1)].ID) { alleSporen[x].Beschikbaar = false; } dc.UpdateSpoor(alleSporen[x]); dc.UpdateSector(alleSporen[x].Sectoren[i], huidigeRemise); dc.UpdateTram(alleSporen[x].Sectoren[i].Tram); return; } } else if (i - 1 == -1) { //plaats tram, TODO: Aparte MEthode volgende stuk alleSporen[x].Sectoren[i].PlaatsTram(tram); if (alleSporen[x].Sectoren[i].ID == alleSporen[x].Sectoren[(alleSporen[x].Sectoren.Count - 1)].ID) { alleSporen[x].Beschikbaar = false; } dc.UpdateSpoor(alleSporen[x]); dc.UpdateSector(alleSporen[x].Sectoren[i], huidigeRemise); dc.UpdateTram(alleSporen[x].Sectoren[i].Tram); return; } } } } } }
/// <summary> /// Haalt alle trams op die in schoonmaak zijn. /// </summary> /// <returns></returns> public List <Tram> GetViezeTrams() { DatabaseController dc = new DatabaseController(); List <Tram> trams = dc.GetAllTrams(huidigeRemise); List <Tram> viezeTrams = new List <Tram>(); foreach (Onderhoud o in GetAllOnderhoud()) { foreach (Tram tram in trams) { if (o.Tram.TramNummer == tram.TramNummer && (o.TypeOnderhoud == TypeOnderhoud.KleineSchoonmaakBeurt || o.TypeOnderhoud == TypeOnderhoud.GroteSchoonmaakBeurt)) { viezeTrams.Add(tram); } } } return(viezeTrams); }
public bool GenoegVrijeSporen() { List <Reservering> reserveringen = new DatabaseController().GetAllReservering(remise); int aantalReserveringen = 0; foreach (Reservering r in reserveringen) { if (r.Spoor.ID == ID) { aantalReserveringen++; } } if (GetLegeSectoren().Count > aantalReserveringen) { return(true); } else { return(false); } }
/// <summary> /// Rond reparatie af/ verwijderd tram uit reparatie in database /// </summary> /// <param name="nummer"></param> /// <returns></returns> public void OnderhoudAfronden(int onderhoudsID) { DatabaseController dc = new DatabaseController(); dc.DeleteOnderhoud(onderhoudsID); }
public BeheerController() { DatabaseController dc = new DatabaseController(); huidigeRemise = dc.GetAllRemise()[0]; }
static IUcontroller() { DatabaseController dc = new DatabaseController(); huidigeRemise = dc.GetAllRemise()[0]; }