//private Tram binnenrijdendeTram;


        /* public void deelTramIn(Tram tram)
         * {
         *   DatabaseController dc = new DatabaseController();
         *
         *   alleSporen = dc.GetAllSporen();
         *
         *   int spoorCounter = 0;
         *
         *   foreach (Spoor spoor in alleSporen)
         *   {
         *       foreach (Sector sector in spoor.Sectoren)
         *       {
         *           if(sector.Status == SectorStatus.bezet)
         *           {
         *               // Als een spoor bezet is dan +1
         *               spoorCounter += 1;
         *           }
         *       }
         *   }
         *
         *   if(spoorCounter == 0)
         *   {
         *       //Alle sporen zijn leeg
         *       tram.Status = 2;
         *       dc.UpdateTram(tram);
         *       alleSporen.First().Sectoren.First().Tram = tram;
         *       alleSporen.First().Sectoren.First().Status = SectorStatus.bezet;
         *       dc.UpdateSector(alleSporen.First().Sectoren.First());
         *       alleSporen.First().SpoorStatus = true;
         *       dc.UpdateSpoor(alleSporen.First());
         *       return;
         *   }
         *   else
         *   {
         *       foreach (Spoor spoor in alleSporen)
         *       {
         *           //spoorStatus = true, spoor is bezet
         *           // TODO: er zijn geen sporen die bezet zijn waar de tram op geplaatst kan worden, plaats m op een leeg spoor.
         *           if(spoor.SpoorStatus == true)
         *           {
         *               foreach (Sector sector in spoor.Sectoren)
         *               {
         *                   int sectorIndex = spoor.Sectoren.IndexOf(sector);
         *                   if(sector.Status == SectorStatus.bezet)
         *                   {
         *                       if (Convert.ToInt32(sector.Tram.VertrekTijd) >= Convert.ToInt32(tram.VertrekTijd))
         *                       {
         *                           //De tram vertrekt eerder en kan er dus voor geplaatst worden
         *                           if (spoor.Sectoren.Count > (sectorIndex + 1))
         *                           {
         *                               if (spoor.Sectoren[sectorIndex + 1].Status != SectorStatus.bezet)
         *                               {
         *                                   tram.Status = 2;
         *                                   dc.UpdateTram(tram);
         *                                   spoor.Sectoren[sectorIndex + 1].Tram = tram;
         *                                   spoor.Sectoren[sectorIndex + 1].Status = SectorStatus.bezet;
         *                                   dc.UpdateSector(spoor.Sectoren[sectorIndex + 1]);
         *                                   return;
         *                               }
         *                           }
         *                           else
         *                           {
         *                               sectorIndex = 0;
         *                           }
         *                       }
         *                       //De tram vertrekt later dan de tram die er al staat, zoek een ander spoor
         *                   }
         *               }
         *           }
         *       }
         *
         *       foreach (Spoor spoor in alleSporen)
         *       {
         *               if(spoor.SpoorStatus == false)
         *               {
         *                   spoor.Sectoren.First().Status = SectorStatus.bezet;
         *                   tram.Status = 2;
         *                   dc.UpdateTram(tram);
         *                   spoor.Sectoren.First().Tram = tram;
         *                   dc.UpdateSector(spoor.Sectoren.First());
         *                   spoor.SpoorStatus = true;
         *                   dc.UpdateSpoor(spoor);
         *                   return;
         *               }
         *       }
         *   }
         * }*/

        /// <summary>
        /// Deelt de tram in op het spoor.
        /// </summary>
        /// <param name="tram"></param>
        public void DeelTramInBeter(Tram tram)
        {
            DatabaseController dc = new DatabaseController(); //Maakt een verbinding met de database via de databaseklasse.

            alleSporen = dc.GetAllSporen();                   //Verkrijgt alle sporen.

            int controleer = ControleerTram(tram);            //Controlleert of de tram nog moet worden schoongemaakt of gerepareerd.

            if (controleer == 2)                              //indien de tram nog moet worden gerepareert deel de tram dan in op het repartatiespoor.
            {
                DeelTramInOpReparatieSpoor(tram, dc);
            }
            else if (controleer == 1) //indien de tram nog moet worden schoongemaakt deel de tram dan in op een schoonmaakspoor.
            {
                DeelTramInOpSchoonmaakSpoor(tram, dc);
            }
            else if (controleer == 0) //Deelt de tram in op het spoor volgens ons indelingsalgoritme.
            {
                DeelTramInVolgensAlgoritme(tram, dc);
            }
            else if (controleer == 3)
            {
                DeelTramInOpReservering(tram, dc);
            }
        }
        /// <summary>
        /// Verkrijgt alle sporen
        /// </summary>
        /// <returns>Een lijst met alle sporen</returns>
        public List <Spoor> GetAllSporen()
        {
            DatabaseController dc = new DatabaseController();

            sporen = dc.GetAllSporen();
            return(sporen);
        }
        /// <summary>
        /// Verkrijgt een vrij spoor waar een tram op schoongemaakt kan worden.
        /// </summary>
        /// <returns>Retourneert een leeg schoonmaak spoor</returns>
        public Spoor VerkrijgVrijSchoonmaakSpoor()
        {
            DatabaseController dc = new DatabaseController();

            foreach (Spoor s in dc.GetAllSporen())
            {
                if (s.SpoorStatus == SpoorStatus.Leeg && s.spoorType == SpoorType.Schoonmaak && !s.SectorGeblokkeerd()) //Wanneer een spoor leeg is, er geen sector op geblokeerd wordt en het spoor van het type schoonmaak is, retourneer dan dat spoor.
                {
                    return(s);
                }
            }
            return(null);
        }