/// <summary> /// Zoekt vrije sectors waar de tram (qua lengte) op kan staan /// </summary> /// <param name="spoor">spoor waarin sectoren gezocht moeten worden</param> /// <param name="tram">tram die geplaatst moet worden</param> /// <returns></returns> private List <Sector> vrijeSectoren(Spoor spoor, Tram tram, int beginsectornummer, bool reverse) { List <Sector> spoorSectors = RemiseManager.sectorenVanSpoor(spoor.Id); List <Sector> sectors = new List <Sector>(); if (reverse) { spoorSectors.Reverse(); // Reverse list, zodat de tram eerst op de achterste sectoren v/h spoor komt te staan } foreach (Sector s in spoorSectors) { if (s.Blokkade) { sectors.Clear(); } if (sectors.Count < tram.lengte) { if (s.Beschikbaar && !s.Blokkade && s.Tram == null && s.Nummer >= beginsectornummer) { sectors.Add(s); } else { sectors.Clear(); } } } return(sectors); }
public Sector(int id, int spoorNummer, Tram tram, int nummer, bool beschikbaar, bool blokkade) { this.Id = id; this.SpoorNummer = spoorNummer; this.Nummer = nummer; this.Tram = tram; this.Beschikbaar = beschikbaar; this.Blokkade = blokkade; }
public string DeelTramInOpSector(Tram tram, Sector sector) { List <Sector> vrijeSpoorSectors = null; List <Sector> ingedeeldeSectors = new List <Sector>(); Sector beginSector = sector; Spoor spoorvanSector = RemiseManager.spoorViaId(sector.SpoorNummer); if (beginSector != null) { if (!beginSector.Blokkade) { if (beginSector.Beschikbaar) { if (spoorvanSector.SectorList.Count() - beginSector.Nummer >= tram.lengte) { //Ok up to here vrijeSpoorSectors = vrijeSectoren(spoorvanSector, tram, beginSector.Nummer, true); foreach (Sector s in vrijeSpoorSectors) { if (s.Nummer >= sector.Nummer) { ingedeeldeSectors.Add(s); } } foreach (Sector s in ingedeeldeSectors) { if (s.Nummer < 30) { ingedeeldeSectors = null; return("Sector is schoonmaak of reparatie-sector."); } } if (ingedeeldeSectors.Count() < tram.lengte) { ingedeeldeSectors = null; return("niet genoeg vrije sectoren"); } if (ingedeeldeSectors != null && ingedeeldeSectors.Any()) { voegTramAanSectorsToe(ingedeeldeSectors, tram, true); return("Tram toegevoegd."); } } else { return("niet genoeg sectoren op spoor."); } } } else { return("Sector geblokkeerd"); } } return("Sector niet gevonden"); }
public Tramonderhoud(Medewerker medewerker, Tram tram, DateTime beschikbaarDatum, DateTime datumTijdstip, TypeOnderhoud typeOnderhoud, string opmerking) { Medewerker = medewerker; Tram = tram; BeschikbaarDatum = beschikbaarDatum; DatumTijdstip = datumTijdstip; TypeOnderhoud = typeOnderhoud; Opmerking = opmerking; }
public static Sector sectorViaTram(Tram tram) { foreach (Sector sector in Sectors) { if (sector.Tram == tram) { return(sector); } } return(null); }
/// <summary> /// Functie met algoritme waarmee de tram ingedeeld wordt op een spoor(/op sectoren) /// </summary> /// <param name="tram">tram die ingedeeld moet worden</param> /// <returns>Lijst met sectoren waarop de tram is ingedeeld</returns> public List <Sector> DeelTramIn(Tram tram) { /* if (tram.nummer == 834) * { * //breakpoint * } */ VerwijderSchoonmaakReparatieSporen(); List <Sector> ingedeeldeSectors = null; bool sectorFound = false; while (!sectorFound) { if (sporenOp) { return(null); // anders ingedeeldesectors = null en sectorFound = true; } Spoor ingedeeldSpoor = krijgEerstVolgendeSpoor(); if (ingedeeldSpoor != null) { if (isSpoorBeschikbaar(ingedeeldSpoor)) { if (isSpoorLangGenoeg(ingedeeldSpoor, tram.lengte)) { ingedeeldeSectors = vrijeSectoren(ingedeeldSpoor, tram, 1, true); if (ingedeeldeSectors.Count() < tram.lengte) { ingedeeldeSectors = null; } if (ingedeeldeSectors != null && ingedeeldeSectors.Any()) { sectorFound = true; voegTramAanSectorsToe(ingedeeldeSectors, tram, false); } } else { spoorTeller++; increaseTeller = true; } } } } if (increaseTeller) { spoorTeller = 0; } return(ingedeeldeSectors); }
/// <summary> /// Functie om een tram toe te voegen aan sectoren. /// </summary> /// <param name="sectorlist">lijst met sectoren waarop de tram komt te staan</param> /// <param name="tram">tram die aan de sectoren wordt toegevoegd</param> private void voegTramAanSectorsToe(List <Sector> sectorlist, Tram tram, bool opslaan) { foreach (Sector s in RemiseManager.Sectors) { foreach (Sector se in sectorlist) { if (s.Id == se.Id) { s.VoegTramToe(tram); if (opslaan) { DatabaseManager.registreerSectorStatus(se); } } } } }
public static List <Sector> LaadSectoren() { List <Sector> sectoren = new List <Sector>(); try { if (connection.State != ConnectionState.Open) { connection.Open(); } OracleCommand command = new OracleCommand("SELECT * FROM SECTOR"); command.CommandType = CommandType.Text; command.Connection = connection; OracleDataReader reader = command.ExecuteReader(); if (!reader.HasRows) { return(sectoren); } else { while (reader.Read()) { int id = Convert.ToInt32(reader["ID"]); int spoorNummer = Convert.ToInt32(reader["Spoor_ID"]);//Spoor-ID != spoor-nummer Tram tram = TramManager.tramViaId(Convert.ToInt32(reader["Tram_ID"])); int nummer = Convert.ToInt32(reader["Nummer"]); bool beschikbaar = convertBool(Convert.ToString(reader["Beschikbaar"])); bool blokkade = convertBool(Convert.ToString(reader["Blokkade"])); sectoren.Add(new Sector(id, spoorNummer, tram, nummer, beschikbaar, blokkade)); } } } catch (Exception) { throw; } finally { connection.Close(); } return(sectoren); }
public static List <Tramonderhoud> LaadTramonderhoud() { List <Tramonderhoud> onderhoudsBeurten = new List <Tramonderhoud>(); try { connection.Open(); OracleCommand command = new OracleCommand("SELECT * FROM TRAM_ONDERHOUD WHERE Voltooid = 0"); command.CommandType = CommandType.Text; command.Connection = connection; OracleDataReader reader = command.ExecuteReader(); if (!reader.HasRows) { return(onderhoudsBeurten); } else { while (reader.Read()) { int id = Convert.ToInt32(reader["ID"]); Medewerker medewerker = RemiseManager.medewerkerViaId(Convert.ToInt32(reader["Medewerker_ID"])); Tram tram = TramManager.tramViaId(Convert.ToInt32(reader["Tram_ID"])); DateTime beschikbaarDatum = Convert.ToDateTime(reader["BeschikbaarDatum"]); DateTime datumTijd = Convert.ToDateTime(reader["DatumTijdStip"]); TypeOnderhoud typeOnderhoud = (TypeOnderhoud)Convert.ToInt32(reader["TypeOnderhoud"]) - 1; string opmerking = Convert.ToString(reader["Notitie"]); onderhoudsBeurten.Add(new Tramonderhoud(id, medewerker, tram, beschikbaarDatum, datumTijd, typeOnderhoud, opmerking)); } } } catch (Exception) { throw; } finally { connection.Close(); } return(onderhoudsBeurten); }
public static void registreerTramStatus(Tram tram) { try { connection.Open(); OracleCommand command = new OracleCommand("UPDATE TRAM SET Status = :status, Beschikbaar = :beschikbaar WHERE ID = :tram_ID"); command.CommandType = CommandType.Text; command.Connection = connection; command.Parameters.Add(":tram_ID", tram.Id); command.Parameters.Add(":status", tram.status); command.Parameters.Add(":beschikbaar", convertBool(tram.beschikbaar)); command.ExecuteNonQuery(); } catch (Exception) { throw; } finally { connection.Close(); } }
public void VoegTramToe(Tram tram) { this.Tram = tram; }
public Reservering(int id, Tram tram, Spoor spoor) { Id = id; Tram = tram; Spoor = spoor; }