Exemple #1
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();
            }
        }
Exemple #2
0
        /// <summary>
        /// Update alle spoor waarden in de database voor het gegeven spoor id.
        /// </summary>
        /// <param name="spoor">Het spoor dat moet worden geüpdate</param>
        /// <returns></returns>
        public bool UpdateSpoor(Spoor spoor)
        {
            try
            {
                string sql = "UPDATE SPOOR SET Remise_ID = :Remise_ID, Nummer = :Nummer, Lengte = :Lengte, Beschikbaar = :Beschikbaar, InUitRijspoor = :InUitRijspoor"
                             + " WHERE ID = :ID";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":Remise_ID", spoor.Remise.ID);
                command.Parameters.Add(":Nummer", spoor.Nummer);
                command.Parameters.Add(":Lengte", spoor.Lengte);
                command.Parameters.Add(":Beschikbaar", Convert.ToInt32(spoor.Beschikbaar));
                command.Parameters.Add(":InUitRijspoor", Convert.ToInt32(spoor.SpoorType));
                command.Parameters.Add(":ID", spoor.ID);

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }
Exemple #3
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!");
        }
Exemple #4
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!");
            }
        }
        /// <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);
            }
        }
Exemple #6
0
 /// <summary>
 /// Verkrijgt een sector van een specifiek spoor.
 /// </summary>
 /// <param name="spoor">Het spoor waar de sector zich in moet bevinden</param>
 /// <param name="sectorID">Het id van de sector die gevonden moet worden</param>
 /// <returns>Retourneert een sector wanneer die gevonden is op het gegeven spoor.</returns>
 public Sector GetSectorByID(Spoor spoor, int sectorID)
 {
     foreach (Sector s in spoor.Sectoren)
     {
         if (s.ID == sectorID)
         {
             return(s);
         }
     }
     return(null);
 }
Exemple #7
0
        /// <summary>
        /// Deze methode verkrijgt een lijst met alle sporen, van ieder spoor krijgen we ook de sectoren.
        /// </summary>
        /// <returns></returns>
        public List <Spoor> GetAllSporen(Remise r)
        {
            try
            {
                List <Spoor>  sporen   = new List <Spoor>();
                List <Sector> sectoren = GetAllSectoren(r);

                string sql = "SELECT * FROM SPOOR WHERE REMISE_ID = :Remise_ID";

                OracleCommand cmd = MaakOracleCommand(sql);

                cmd.Parameters.Add(":Remise_ID", r.ID);

                OracleDataReader reader = VoerQueryUit(cmd);

                while (reader.Read())
                {
                    int       id          = Convert.ToInt32(reader.GetValue(0));
                    int       nummer      = Convert.ToInt32(reader.GetValue(2));
                    int       lengte      = Convert.ToInt32(reader.GetValue(3));
                    bool      beschikbaar = Convert.ToBoolean(reader.GetValue(4));
                    SpoorType type        = (SpoorType)Convert.ToInt32(reader.GetValue(5));

                    Spoor spoor = new Spoor(id, r, nummer, lengte, beschikbaar, type);
                    foreach (Sector s in sectoren)
                    {
                        if (spoor.ID == s.SpoorID)
                        {
                            spoor.SectorToevoegen(s);
                        }
                    }

                    sporen.Add(spoor);
                }

                return(sporen);
            }
            catch
            {
                throw new NoSporenFoundException("Geen sporen gevonden in DatabaseController: GetAllSporen");
            }
            finally
            {
                verbinding.Close();
            }
        }
Exemple #8
0
 public Reservering(int id, Tram tram, Spoor spoor)
 {
     this.id    = id;
     this.tram  = tram;
     this.spoor = spoor;
 }
Exemple #9
0
 // Constructors
 public Reservering(Tram tram, Spoor spoor)
 {
     this.tram  = tram;
     this.spoor = spoor;
 }