/// <summary> /// Zet elke sectoren's status op 'Locked' /// </summary> public void LockTrack() { bool occupied = false; foreach (BeheerSector sector in BeheerSectors) { if (sector.OccupyingTram != null) { occupied = true; } } if (occupied == true) { DialogResult dialogResult = MessageBox.Show("There are trams on the location you are trying to lock, are you sure?", "Warning", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { occupied = false; } } if (occupied == false) { for (int i = 0; i < Sectors.Count; i++) { BeheerSector beheerSector = Sectors[i] == null ? null : BeheerSector.ToBeheerSector(Sectors[i]); beheerSector.Lock(); Sectors[i] = beheerSector; } } }
public BeheerSector Assign(BeheerSector sector, BeheerTram tram) { sector.SetOccupyingTram(tram); repo.EditTram(tram); repo.EditSector(sector); return(sector); }
/// <summary> /// Zet alle sectoren's status op 'Open'. /// </summary> public void UnlockTrack() { for (int i = 0; i < Sectors.Count; i++) { BeheerSector beheerSector = Sectors[i] == null ? null : BeheerSector.ToBeheerSector(Sectors[i]); beheerSector.UnLock(); Sectors[i] = beheerSector; } }
public void Unlock(string tracks, string sectors) { int[] unlockSectors = { -1 }; int[] unlockTracks = { -1 }; if (sectors != "") { unlockSectors = Parse(sectors); for (int i = 0; i < unlockSectors.Length; i++) { unlockSectors[i] -= 1; } } unlockTracks = Parse(tracks); if (unlockTracks[0] != -1) { if (sectors == "") { foreach (Track track in AllTracks) { int pos = Array.IndexOf(unlockTracks, track.Number); if (pos > -1) { BeheerTrack beheerTrack = track == null ? null : BeheerTrack.ToBeheerTrack(track); beheerTrack.UnlockTrack(); repo.EditTrack(beheerTrack); } } } else { foreach (BeheerTrack track in AllTracks) { int pos = Array.IndexOf(unlockTracks, track.Number); if (pos > -1) { for (int i = 0; i < track.Sectors.Count - 1; i++) { pos = Array.IndexOf(unlockSectors, i); if (pos > -1) { BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); beheerSector.UnLock(); repo.EditSector(beheerSector); } } } } } Update(); } }
public bool MoveTram(string _tram, string _track, string _sector) { int moveTram = ToInt(_tram); int moveTrack = ToInt(_track); int moveSector = ToInt(_sector) - 1; foreach (Track track in AllTracks.Where(x => x.Number == moveTrack && x.Sectors.Count > moveSector)) { foreach (Tram tram in AllTrams.Where(x => x.Number == moveTram)) { BeheerSector beheerSector = track.Sectors[moveSector] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[moveSector]); if (beheerSector.SetOccupyingTram(tram)) { repo.WipeSectorByTramId(tram.Number); repo.EditSector(beheerSector); Update(); return(true); } } } return(false); }
public void Lock(string tracks, string sectors) { int[] lockSectors = { -1 }; int[] lockTracks = { -1 }; if (sectors != "") { lockSectors = Parse(sectors); for (int i = 0; i < lockSectors.Length; i++) { lockSectors[i] -= 1; } } lockTracks = Parse(tracks); if (lockTracks[0] != -1) { if (sectors == "") { foreach (Track track in AllTracks) { int pos = Array.IndexOf(lockTracks, track.Number); if (pos > -1) { BeheerTrack beheerTrack = track == null ? null : BeheerTrack.ToBeheerTrack(track); beheerTrack.LockTrack(); repo.EditTrack(beheerTrack); } } } else { foreach (BeheerTrack track in AllTracks) { int pos = Array.IndexOf(lockTracks, track.Number); if (pos > -1) { for (int i = 0; i < track.Sectors.Count - 1; i++) { pos = Array.IndexOf(lockSectors, i); if (pos > -1) { bool lockTrack = true; BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); if (beheerSector.OccupyingTram != null) { DialogResult dialogResult = MessageBox.Show("There are trams on the location you are trying to lock, are you sure?", "Warning", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { lockTrack = false; } } if (lockTrack == true) { beheerSector.Lock(); repo.EditSector(beheerSector); } } } } } } Update(); } }
public List <BeheerTrack> AssignTramLocation(BeheerTram tram) { tram.EditTramLocation(TramLocation.In); //With a service needed, put on the first free slot if (tram.Status == TramStatus.Cleaning || tram.Status == TramStatus.Maintenance || tram.Status == TramStatus.CleaningMaintenance) { foreach (Track track in allTracks.Where(x => x.Type == TrackType.Service)) { for (int i = 0; i < track.Sectors.Count; i++) { if (track.Sectors[i].OccupyingTram == null && track.Sectors[i].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); track.Sectors[i] = Assign(beheerSector, tram); return(allTracks); } } } } //Put tram on track thats connected to the line the tram is on foreach (BeheerTrack track in allTracks.Where(x => x.Line == tram.Line && x.Type == TrackType.Normal)) { for (int i = 0; i < track.Sectors.Count - 1; i++) { float sectorId = track.Number + track.Sectors[i].Number / 100f; if (track.Sectors[i].OccupyingTram == null && track.Sectors[i].Status == SectorStatus.Open && !OccupiedSectors.Contains(sectorId)) { BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); track.Sectors[i] = Assign(beheerSector, tram); OccupiedSectors.Add(sectorId); return(allTracks); } sectorId = track.Number + track.Sectors[i + 1].Number / 100f; if (track.Sectors[i].Status == SectorStatus.Occupied && track.Sectors[i].OccupyingTram.DepartureTime < tram.DepartureTime) { if (track.Sectors[i + 1].Status == SectorStatus.Open && !OccupiedSectors.Contains(sectorId)) { BeheerSector beheerSector = track.Sectors[i + 1] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i + 1]); track.Sectors[i + 1] = Assign(beheerSector, tram); OccupiedSectors.Add(sectorId); return(allTracks); } } } } //If not successful put tram on any other normal track (that doesn't have another line connected to it) foreach (BeheerTrack track in allTracks.Where(x => x.Type == TrackType.Normal)) { for (int i = 0; i < track.Sectors.Count - 1; i++) { if (track.Sectors[0].OccupyingTram == null && track.Sectors[0].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); track.Sectors[i] = Assign(beheerSector, tram); return(allTracks); } else if (track.Sectors[i].Status == SectorStatus.Occupied && track.Sectors[i].OccupyingTram.DepartureTime < tram.DepartureTime) { if (track.Sectors[i + 1].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i + 1] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i + 1]); track.Sectors[i + 1] = Assign(beheerSector, tram); return(allTracks); } } } } //If not successful put on an exit line foreach (BeheerTrack track in allTracks.Where(x => x.Type == TrackType.Normal)) { for (int i = 0; i < track.Sectors.Count - 1; i++) { if (track.Sectors[0].OccupyingTram == null && track.Sectors[0].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i]); track.Sectors[i] = Assign(beheerSector, tram); return(allTracks); } else if (track.Sectors[i].Status == SectorStatus.Occupied && track.Sectors[i].OccupyingTram.DepartureTime < tram.DepartureTime) { if (track.Sectors[i + 1].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i + 1] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i + 1]); track.Sectors[i + 1] = Assign(beheerSector, tram); return(allTracks); } } else if (track.Sectors[i].Status == SectorStatus.Occupied && track.Sectors[0].OccupyingTram.DepartureTime == null) { if (track.Sectors[i + 1].Status == SectorStatus.Open) { BeheerSector beheerSector = track.Sectors[i + 1] == null ? null : BeheerSector.ToBeheerSector(track.Sectors[i + 1]); track.Sectors[i + 1] = Assign(beheerSector, tram); return(allTracks); } } } } //If not successful let user place tram return(null); }