Esempio n. 1
0
        /// <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;
                }
            }
        }
Esempio n. 2
0
 public BeheerSector Assign(BeheerSector sector, BeheerTram tram)
 {
     sector.SetOccupyingTram(tram);
     repo.EditTram(tram);
     repo.EditSector(sector);
     return(sector);
 }
Esempio n. 3
0
 /// <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;
     }
 }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
            }
        }
Esempio n. 7
0
        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);
        }