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; }
// 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; }
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; }
//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(); } }
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; }
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(); }
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; }