/// <summary>
        /// Deelt de tram in op een vrij onderhoudsspoor.
        /// </summary>
        /// <param name="tram"></param>
        /// <param name="dc"></param>
        public static void DeelTramInOpReservering(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding.
        {
            BeheerController bc          = new BeheerController();
            Reservering      reservering = bc.GetReservering(tram);

            foreach (Spoor spoor in alleSporen)
            {
                if (reservering.Spoor.ID == spoor.ID)
                {
                    Sector sector = spoor.GetEersteSector();
                    if (sector == null)
                    {
                        DeelTramInVolgensAlgoritme(tram, dc);
                        return;
                    }
                    else
                    {
                        sector.PlaatsTram(tram);
                        if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID)
                        {
                            spoor.Beschikbaar = false;
                        }
                        tram.Beschikbaar = true;
                        dc.UpdateSpoor(spoor);
                        dc.UpdateTram(tram);
                        dc.UpdateSector(sector, huidigeRemise);
                        dc.DeleteReservering(reservering.ID);
                    }
                }
            }
        }
Пример #2
0
        public List <Reservering> GetAllReservering(Remise r)
        {
            try
            {
                List <Reservering> reserveringen = new List <Reservering>();
                string             sql           = "SELECT * FROM RESERVERING";

                List <Tram>  trams  = GetAllTrams(r);
                List <Spoor> sporen = GetAllSporen(r);

                OracleCommand    cmd    = MaakOracleCommand(sql);
                OracleDataReader reader = VoerQueryUit(cmd);

                while (reader.Read())
                {
                    int   id    = Convert.ToInt32(reader.GetValue(0));
                    Tram  tram  = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(1)));
                    Spoor spoor = VerkrijgSpoor(sporen, Convert.ToInt32(reader.GetValue(2)));

                    Reservering reservering = new Reservering(id, tram, spoor);
                    reserveringen.Add(reservering);
                }

                return(reserveringen);
            }
            catch
            {
                return(null);
            }
            finally
            {
                verbinding.Close();
            }
        }
        /// <summary>
        /// Deelt de tram in op een vrij onderhoudsspoor.
        /// </summary>
        /// <param name="tram"></param>
        /// <param name="dc"></param>
        public static void DeelTramInOpOnderhoudsSpoor(Tram tram, DatabaseController dc) //ToDo: Rekening houden met verbinding.
        {
            OnderhoudController oc        = new OnderhoudController(huidigeRemise);
            Onderhoud           onderhoud = oc.GetOnderhoud(tram);
            Spoor spoor = oc.GetVrijOnderhoudsSpoor();

            if (spoor != null)
            {
                Sector sector = spoor.GetEersteSector();
                sector.PlaatsTram(tram);

                if (sector.ID == spoor.Sectoren[(spoor.Sectoren.Count - 1)].ID)
                {
                    spoor.Beschikbaar = false;
                }

                dc.UpdateSpoor(spoor);
                dc.UpdateSector(sector, huidigeRemise);
                dc.UpdateTram(sector.Tram);
            }
            else
            {
                DeelTramInVolgensAlgoritme(tram, dc);
            }
        }
Пример #4
0
        public List <Onderhoud> GetAllOnderhoud(Remise r)
        {
            try
            {
                List <Onderhoud> onderhoudList = new List <Onderhoud>();
                List <Tram>      trams         = GetAllTrams(r);
                string           sql           = "SELECT * FROM TRAM_ONDERHOUD"; // Moet nog worden ingevuld.

                OracleCommand    cmd    = MaakOracleCommand(sql);
                OracleDataReader reader = VoerQueryUit(cmd);

                while (reader.Read())
                {
                    int           id               = Convert.ToInt32(reader.GetValue(0));
                    int           adid             = Convert.ToInt32(reader.GetValue(1));
                    Tram          tram             = VerkrijgTram(trams, Convert.ToInt32(reader.GetValue(2)));
                    DateTime      tijdstip         = Convert.ToDateTime(reader.GetValue(3));
                    DateTime      beschikbaarDatum = Convert.ToDateTime(reader.GetValue(4));
                    TypeOnderhoud typeOnderhoud    = (TypeOnderhoud)Convert.ToInt32(reader.GetValue(5));

                    Onderhoud o = new Onderhoud(id, adid, tram, tijdstip, beschikbaarDatum, typeOnderhoud);
                    onderhoudList.Add(o);
                }

                return(onderhoudList);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #5
0
        /// <summary>
        /// Update alle tram waarden in de database voor het gegeven tram id.
        /// </summary>
        /// <param name="tram">De tram die moet worden geüpdate</param>
        /// <returns></returns>
        public bool UpdateTram(Tram tram)
        {
            try
            {
                string sql = "UPDATE TRAM SET Remise_ID_Standplaats = :Remise_ID, Tramtype_ID = :Tramtype_ID, Vertrektijd = :Vertrektijd, Nummer = :Nummer,"
                             + " Lengte = :Lengte, Status = :Status, Vervuild = :Vervuild, Defect = :Defect, ConducteurGeschikt = :ConducteurGeschikt, Beschikbaar = :Beschikbaar"
                             + " WHERE ID = :ID";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":Remise_ID", tram.Remise.ID);
                command.Parameters.Add(":Tramtype_ID", Convert.ToInt32(tram.TramType));
                command.Parameters.Add(":Vertrektijd", Convert.ToDateTime(tram.Vertrektijd));
                command.Parameters.Add(":Nummer", tram.TramNummer);
                command.Parameters.Add(":Lengte", tram.Lengte);
                command.Parameters.Add(":Status", tram.Opmerking);
                command.Parameters.Add(":Vervuild", Convert.ToInt32(tram.Vervuild));
                command.Parameters.Add(":Defect", Convert.ToInt32(tram.Defect));
                command.Parameters.Add(":ConducteurGeschikt", Convert.ToInt32(tram.ConducteurGeschikt));
                command.Parameters.Add(":Beschikbaar", Convert.ToInt32(tram.Beschikbaar));
                command.Parameters.Add(":ID", tram.ID);

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #6
0
        /// <summary>
        /// Voegt een nieuwe tram toe aan de database.
        /// </summary>
        /// <param name="tram">De tram die aan de database moet worden toegevoegd</param>
        /// <returns>Of de tram is toegevoegd of niet</returns>
        public bool AddTram(Tram tram)
        {
            try
            {
                string sql = "INSERT INTO TRAM (Remise_ID_Standplaats, Tramtype_ID, Vertrektijd, Nummer, Lengte, Status, Vervuild, Defect, ConducteurGeschikt, Beschikbaar) "
                             + "VALUES (:Remise_ID, :Tramtype_ID, :Vertrektijd, :Nummer, :Lengte, :Status, :Vervuild, :Defect, :ConducteurGeschikt, :Beschikbaar)";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":Remise_ID", tram.Remise.ID);
                command.Parameters.Add(":Tramtype_ID", (Convert.ToInt32(tram.TramType) + 1));
                command.Parameters.Add(":Vertrektijd", DateTime.Now); //tram.Vertrektijd
                command.Parameters.Add(":Nummer", tram.TramNummer);
                command.Parameters.Add(":Lengte", tram.Lengte);
                command.Parameters.Add(":Status", tram.Opmerking);
                command.Parameters.Add(":Vervuild", Convert.ToInt32(tram.Vervuild));
                command.Parameters.Add(":Defect", Convert.ToInt32(tram.Defect));
                command.Parameters.Add(":ConducteurGeschikt", Convert.ToInt32(tram.ConducteurGeschikt));
                command.Parameters.Add(":Beschikbaar", Convert.ToInt32(tram.Beschikbaar));

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #7
0
        /// <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 void SpoorReserveren(Spoor spoor, Tram tram)
        {
            DatabaseController dc   = new DatabaseController();
            int aantalReserveringen = 0;

            foreach (Reservering r in GetAllReserveringen())
            {
                if (r.Spoor.ID == spoor.ID)
                {
                    aantalReserveringen++;
                    if (r.Tram.ID == tram.ID)
                    {
                        throw new SpoorReserveerException("Tram is al gereserveerd!");
                    }
                }
            }

            if (aantalReserveringen < spoor.Sectoren.Count)
            {
                Reservering res = new Reservering(tram, spoor);
                if (!dc.AddReservering(res))
                {
                    throw new SpoorReserveerException("De reservering kon niet worden toegevoegd aan de database!");
                }
            }
            else
            {
                throw new SpoorReserveerException("Er zijn al teveel reserveringen voor dit spoor waardoor er geen sectoren meer over zijn!");
            }
        }
Пример #8
0
        /// <summary>
        /// Verplaats de tram naar een ander spoor of sector
        /// </summary>
        /// <param name="tram">De tram die verplaatst moet worden</param>
        /// <param name="spoorVan">Het spoor waar die tram op staat</param>
        /// <param name="sectorVan">De sector waar die tram op staat</param>
        /// <param name="spoorNaar">Het spoor waar de tram naar toe gaat</param>
        /// <param name="sectorNaar">De sector waar de tram naar toe gaat.</param>
        /// <returns>Retourneert een fout string</returns>
        public bool TramVerplaatsen(Tram tram, Spoor spoorVan, Sector sectorVan, Spoor spoorNaar, Sector sectorNaar) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen.
        {
            foreach (Sector sector in spoorVan.Sectoren)
            {
                if (sector.Tram.ID == tram.ID)
                {
                    foreach (Sector naarSector in spoorNaar.Sectoren)
                    {
                        if (naarSector.ID == sectorNaar.ID)
                        {
                            sector.VerwijderTram();
                            naarSector.VerwijderTram();
                            DatabaseController dc = new DatabaseController();
                            if (dc.UpdateSector(sector, huidigeRemise))
                            {
                                if (dc.UpdateSector(naarSector, huidigeRemise))
                                {
                                    return(true);
                                }
                                else
                                {
                                    throw new TramVerplaatsException("De sector waar de tram naar verplaatst wordt kon niet worden geüpdate in de database!");
                                }
                            }
                            else
                            {
                                throw new TramVerplaatsException("De sector waarvan de tram word verplaats kon niet worden geüpdate in de database!");
                            }
                        }
                    }
                }
            }

            throw new TramVerplaatsException("De sector waarvan de tram word verplaats of de sector waarnaar de tram wordt verplaats kon niet gevonden worden!");
        }
Пример #9
0
 public Onderhoud(int adID, Tram tram, DateTime tijdstip, DateTime beschikbaarDatum, TypeOnderhoud typeOnderhoud)
 {
     this.adid             = adID;
     this.tram             = tram;
     this.tijdstip         = tijdstip;
     this.beschikbaarDatum = beschikbaarDatum;
     this.typeOnderhoud    = typeOnderhoud;
 }
Пример #10
0
 public Sector(int id, Tram tram, int spoorID, int nummer, bool beschikbaar, bool geblokkeerd)
 {
     this.id          = id;
     this.tram        = tram;
     this.spoorID     = spoorID;
     this.nummer      = nummer;
     this.beschikbaar = beschikbaar;
     this.geblokkeerd = geblokkeerd;
 }
Пример #11
0
 /// <summary>
 /// Kijkt of een tram nog gerepareerd moet worden.
 /// </summary>
 /// <param name="tram"></param>
 /// <returns>Of een tram wel of niet moet worden gerepareerd</returns>
 public bool TramControleerOnderhoud(Tram tram)
 {
     foreach (Onderhoud o in GetAllOnderhoud())
     {
         if (o.Tram.ID == tram.ID)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #12
0
 /// <summary>
 /// Verkrijgt de reservering van een tram
 /// </summary>
 /// <param name="tram"></param>
 /// <returns></returns>
 public Reservering GetReservering(Tram tram)
 {
     foreach (Reservering reservering in GetAllReserveringen())
     {
         if (reservering.Tram.ID == tram.ID)
         {
             return(reservering);
         }
     }
     return(null);
 }
Пример #13
0
 /// <summary>
 /// Controleert of een tram een reservering heeft.
 /// </summary>
 /// <param name="tram"></param>
 /// <returns></returns>
 public bool TramControleerReservering(Tram tram)
 {
     foreach (Reservering reservering in GetAllReserveringen())
     {
         if (reservering.Tram.TramNummer == tram.TramNummer)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #14
0
        /// <summary>
        /// Veranderd de status van de tram
        /// </summary>
        /// <param name="tram">De tram die van status moet worden veranderd</param>
        /// <param name="tramStatus">De status waar de tram naar moet worden veranderd</param>
        public void TramStatusAanpassen(Tram tram, bool vervuild, bool defect) //TODO: Exception geven wanneer het niet lukt. Dit in het form afhandelen.
        {
            tram.Vervuild = vervuild;
            tram.Defect   = defect;
            DatabaseController dc = new DatabaseController();

            if (!dc.UpdateTram(tram))
            {
                throw new TramStatusException("De status van de tram kont niet worden veranderd.");
            }
        }
Пример #15
0
        public Onderhoud GetOnderhoud(Tram tram)
        {
            foreach (Onderhoud onderhoud in GetAllOnderhoud())
            {
                if (onderhoud.Tram.ID == tram.ID)
                {
                    return(onderhoud);
                }
            }

            return(null);
        }
Пример #16
0
        /// <summary>
        /// Verwijdert een tram van de database
        /// </summary>
        /// <param name="tramNummer">Welke tram verwijdert moet worden.</param>
        public bool TramVerwijderen(Tram tram)
        {
            DatabaseController dc = new DatabaseController();

            if (dc.DeleteTram(tram))
            {
                return(true);
            }
            else
            {
                throw new TramVerwijderException();
            }
        }
        /// <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.
        }
Пример #18
0
        /// <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 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;
                     }
                 }
             }
         }
     }
 }
Пример #20
0
 /// <summary>
 /// Verkrijgt de sector waar mogelijk een tram op staat.
 /// </summary>
 /// <param name="tram">De tram waarmee je de sector zoekt.</param>
 /// <returns>Retourneert de sector waar de meegegeven tram op staat</returns>
 public Sector GetSectorByTram(Tram tram)
 {
     foreach (Spoor spoor in GetAllSporen())
     {
         foreach (Sector s in spoor.Sectoren)
         {
             if (s.Tram != null)
             {
                 if (s.Tram.ID == tram.ID)
                 {
                     return(s);
                 }
             }
         }
     }
     return(null);
 }
        /// <summary>
        /// Controleer of de tram een onderhoudsbeurt nodig heeft.
        /// </summary>
        /// <param name="tram">De tram die wordt gecontroleerd</param>
        /// <returns></returns>
        public static int ControleerTram(Tram tram)
        {
            OnderhoudController oc = new OnderhoudController(huidigeRemise);
            BeheerController    bc = new BeheerController();

            if (oc.TramControleerOnderhoud(tram))
            {
                return(0);
            }
            else if (bc.TramControleerReservering(tram))
            {
                return(1);
            }
            else
            {
                return(2);
            }
        }
Пример #22
0
        /// <summary>
        /// Verwijdert een tram uit de database
        /// </summary>
        /// <param name="ID">Nummer of identifier van het tram object.</param>
        /// <returns>Of de verwijdering goed is uitgevoerd</returns>
        public bool DeleteTram(Tram tram)
        {
            try
            {
                string sql = "DELETE FROM TRAM WHERE ID = :ID";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":ID", tram.ID);

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #23
0
        public bool AddTramLijn(Lijn lijn, Tram tram)
        {
            try
            {
                string sql = "INSERT INTO TRAM_LIJN ( Tram_ID, Lijn_ID ) VALUES ( :Tram_ID, :Lijn_ID )";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":Tram_ID", tram.ID);
                command.Parameters.Add(":Lijn_ID", lijn.ID);

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #24
0
        public List <Tram> GetAllTramsFromLijn(int lijnID, Remise r)
        {
            try
            {
                List <Tram> trams   = new List <Tram>();
                List <int>  tramIds = new List <int>();

                string        sql     = "SELECT TRAM_ID FROM TRAM_LIJN WHERE LIJN_ID = :ID";
                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":ID", lijnID);

                OracleDataReader reader = VoerQueryUit(command);

                while (reader.Read())
                {
                    int tramid = Convert.ToInt32(reader.GetValue(0));
                    tramIds.Add(tramid);
                }

                List <Tram> allTrams = GetAllTrams(r);
                foreach (int id in tramIds)
                {
                    Tram tram = VerkrijgTram(allTrams, id);
                    trams.Add(tram);
                }

                return(trams);
            }
            catch
            {
                return(null);
            }
            finally
            {
                verbinding.Close();
            }
        }
Пример #25
0
 public void VerwijderTram()
 {
     this.tram   = null;
     beschikbaar = true;
 }
Пример #26
0
 // Constructors
 public Reservering(Tram tram, Spoor spoor)
 {
     this.tram  = tram;
     this.spoor = spoor;
 }
Пример #27
0
 public void PlaatsTram(Tram tram)
 {
     this.tram        = tram;
     tram.Beschikbaar = true;
     beschikbaar      = false;
 }
Пример #28
0
 public Reservering(int id, Tram tram, Spoor spoor)
 {
     this.id    = id;
     this.tram  = tram;
     this.spoor = spoor;
 }