예제 #1
0
        public void AddTram(Tram tram)
        {
            Segment segment = tram.Segment;
            int index = dataGridViewTrams.Rows.Add(tram.Type, tram.Nummer, tram.Status.ToString(), segment != null ? segment.Spoor.Nummer.ToString() : "");

            dataGridViewTrams.Rows[index].Tag = tram;
        }
예제 #2
0
파일: Tram.cs 프로젝트: Tomickescape/TVS
        // haal een tram op aan de hand van het ID nummer
        public static Tram GetById(int parId)
        {
            Tram tram = null;

            Database db = new Database();

            try
            {
                db.CreateCommand("SELECT * FROM tram WHERE id = :id");
                db.AddParameter("id", parId);
                db.Open();
                db.Execute();
                OracleDataReader dr = db.DataReader;

                while (dr.Read())
                {
                    Status status;
                    string StringStatus = dr.GetValueByColumn<string>("status");

                    if (StringStatus == "Defect")
                    {
                        status = Status.Defect;
                    }
                    else if (StringStatus == "Onderhoud")
                    {
                        status = Status.Onderhoud;
                    }
                    else
                    {
                        status = Status.Gereed;
                    }
                    int id = (dr.GetValueByColumn<int>("id"));
                    string type = (dr.GetValueByColumn<string>("type"));
                    int nummer = (dr.GetValueByColumn<int>("nummer"));
                    string rfidcode = (dr.GetValueByColumn<string>("rfidcode"));
                    int remiseId = (dr.GetValueByColumn<int>("remise_id"));
                    int segmentId = (dr.GetValueByColumn<int>("segment_id"));
                    tram = new Tram(id, type, nummer, status, rfidcode, remiseId, segmentId);

                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                db.Close();
            }

            return tram;
        }
예제 #3
0
파일: Segment.cs 프로젝트: Tomickescape/TVS
        public bool CheckUitrij(Tram parTram)
        {
            if (Special == "uitrijding")
            {
                int nummer = Spoor.Nummer;
                List<Spoor> sporen = new List<Spoor>();

                Spoor spoor1 = TVS.Spoor.GetBySpoornummer(nummer - 1);
                Spoor spoor2 = TVS.Spoor.GetBySpoornummer(nummer + 1);

                if (spoor1 != null)
                {
                    sporen.Add(spoor1);
                }
                if (spoor2 != null)
                {
                    sporen.Add(spoor2);
                }

                foreach (Spoor spoor in sporen)
                {
                    if (spoor != null)
                    {
                        Segment segment = spoor.Segments.Find(x => x.Nummer == Nummer);
                        //Loopt alle segmenten van dit spoor na en kijkt of het nummer overeen komt met het nummer van deze instantie

                        if (segment != null)
                        {
                            Tram tram = segment.Tram;

                            // kijkt of er een tram op het segment staat
                            if (tram == null)
                            {
                                return false;
                            }
                            // kijkt of het tram niet identiek is aan de huidige tram die op dat segment staat
                            else if (parTram != null && parTram.Nummer == tram.Nummer)
                            {
                                return false;
                            }
                        }
                    }
                }
            }
            return true;
        }
예제 #4
0
파일: Segment.cs 프로젝트: Tomickescape/TVS
        //zet een andere tram op het segment
        public void ChangeTram(Tram tram)
        {
            Database db = new Database();

            try
            {
                //haal de bestaande tram van het segment af
                if (Tram != null)
                {
                    Tram.ChangeSegment(null);
                }
                //zet de nieuwe tram op het huidige segment
                if (tram != null)
                {
                    tram.ChangeSegment(this);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                db.Close();
            }
        }
예제 #5
0
파일: Spoor.cs 프로젝트: Tomickescape/TVS
        public Segment FirstSegmentAvailableForTram(Tram tram)
        {
            Segment eersteSegment = null;

            if (tram.Lijnen.Count > 0)
            {
                //hij gaat kijken of een tram op een vaste lijn moet ja of nee en vervolgens of hij wel op dat spoor mag staan.
                if (tram.Lijnen.Find(x => x == Lijnnummer1) == 0 && tram.Lijnen.Find(x => x == Lijnnummer2) == 0)
                {
                    return null;
                }
            }

            foreach (Segment segment in Segments)
            {
                //is het segment geblokkeerd en is hij wel of niet permanent en kijkt of het wel of geen uitrijsegment is
                if (!segment.Geblokkeerd && segment.Special != "permanent" && segment.CheckUitrij(tram))
                {
                    if (segment.Tram == null || (segment.Tram.Id == tram.Id))
                    {
                        //zorgt ervoor dat altijd het eerste segment wordt gevuld
                        if (eersteSegment == null || segment.Nummer < eersteSegment.Nummer)
                        {
                            eersteSegment = segment;
                        }
                    }
                }
            }
            return eersteSegment;
        }
예제 #6
0
        private void PlaceTram(Segment segment, Tram tram)
        {
            //checked of de tram in de lijst van reserveringen staat, zoja verwijderd de tram uit de lijst
            foreach (ListViewItem item in listViewReservations.Items)
            {
                if (item.SubItems[0].Text == tram.Nummer.ToString())
                {
                    item.Remove();
                }
            }

            Output("Tram: " + tram.Nummer + "(" + tram.Type + ") op " + segment.Spoor.Nummer + " . " + segment.Nummer);
            segment.ChangeTram(tram);
            RefreshInterface();
        }
예제 #7
0
        private Segment GetRandomSegment(List<ButtonSpoor> buttons, Tram tram)
        {
            Segment selectedSegment = null;
            Random rand = new Random();

            //kijkt op welke lijnen hij mag en voegt alleen de juiste lijnen toe
            if (tram.Lijnen.Count > 0)
            {
                foreach (ButtonSpoor button in new List<ButtonSpoor>(buttons))
                {
                    Spoor spoor = button.Spoor;
                    if (tram.Lijnen.Find(x => x == spoor.Lijnnummer1) == 0 &&
                        tram.Lijnen.Find(x => x == spoor.Lijnnummer2) == 0)
                    {
                        buttons.Remove(button);
                    }
                }
            }

            while (selectedSegment == null)
            {
                if (buttons.Count == 0)
                {
                    return null;
                }

                int buttonIndex = rand.Next(buttons.Count - 1);

                selectedSegment = buttons[buttonIndex].Spoor.FirstSegmentAvailableForTram(tram);

                buttons.RemoveAt(buttonIndex);
            }

            return selectedSegment;
        }