Esempio n. 1
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!");
            }
        }
Esempio n. 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 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);
                    }
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Voegt een reservering toe aan de database.
        /// </summary>
        /// <param name="res">De reservering die moet worden toegevoegd</param>
        /// <returns>Of de reservering is toegevoegd of niet</returns>
        public bool AddReservering(Reservering res)
        {
            try
            {
                //Todo nextval?
                string sql = "INSERT INTO RESERVERING ( Tram_ID, Spoor_ID ) VALUES ( :Tram_ID, :Spoor_ID )";

                OracleCommand command = MaakOracleCommand(sql);

                command.Parameters.Add(":Tram_ID", res.Tram.ID);
                command.Parameters.Add(":Spoor_ID", res.Spoor.ID);

                return(VoerNonQueryUit(command));
            }
            catch
            {
                return(false);
            }
            finally
            {
                verbinding.Close();
            }
        }