public RuteStopp NyttRuteStopp(string[] argumenter) { Console.WriteLine(argumenter[0]); Console.WriteLine(argumenter[1]); Console.WriteLine(argumenter[2]); string holdeplassNavn = argumenter[0]; string ruteNavn = argumenter[1]; int minutterEtterAvgang = int.Parse(argumenter[2]); TimeSpan stoppTid = TimeSpan.FromMinutes(minutterEtterAvgang); Holdeplass holdeplass = _db.Holdeplasser.Where(h => h.Sted == holdeplassNavn).FirstOrDefault(); Rute rute = _db.Ruter.Where(r => r.Navn == ruteNavn).FirstOrDefault(); if (holdeplass != null && rute != null) { RuteStopp nyttRuteStopp = new RuteStopp(); nyttRuteStopp.Rute = rute; nyttRuteStopp.Holdeplass = holdeplass; nyttRuteStopp.StoppTid = stoppTid; _db.Rutestopp.Add(nyttRuteStopp); _db.SaveChanges(); return(nyttRuteStopp); } Log.Information("Nytt rutestopp lagt til."); return(null); }
public async Task HentRuteStoppLoggetInn() { var oslo = new Holdeplass { Sted = "Oslo", Sone = 1 }; var OsloStavanger = new Rute { Navn = "Oslo-Stavanger" }; var RuteOsloStavangerStoppOslo = new RuteStopp { Holdeplass = oslo, Rute = OsloStavanger, StoppTid = TimeSpan.FromMinutes(0) }; var liste = new List <RuteStopp>(); liste.Add(RuteOsloStavangerStoppOslo); mockRep.Setup(k => k.HentRuteStopp()).ReturnsAsync(liste); var bestillingController = new AdminController(mockRep.Object); mockSession[_loggetInn] = _loggetInn; mockHttpContext.Setup(s => s.Session).Returns(mockSession); bestillingController.ControllerContext.HttpContext = mockHttpContext.Object; var resultat = await bestillingController.HentRuteStopp() as OkObjectResult; Assert.Equal((int)HttpStatusCode.OK, resultat.StatusCode); Assert.Equal <List <RuteStopp> >((List <RuteStopp>)resultat.Value, liste); }
public async Task <bool> EndreRS(RuteStopp endreRS) { try { var etRS = await _db.Rutestopp.FindAsync(endreRS.ID); if (!etRS.Holdeplass.Sted.Equals(endreRS.Holdeplass.Sted)) { var sjekkHoldeplass = _db.Holdeplasser.Where(s => s.Sted.Contains(etRS.Holdeplass.Sted)); if (sjekkHoldeplass == null) { var holdeplassRad = new Holdeplass(); holdeplassRad.Sted = endreRS.Holdeplass.Sted; holdeplassRad.Sone = endreRS.Holdeplass.Sone; etRS.Holdeplass = holdeplassRad; } else { etRS.Holdeplass = endreRS.Holdeplass; } } etRS.StoppTid = endreRS.StoppTid; await _db.SaveChangesAsync(); Log.Information("Rutestopp id: {id} endret.", endreRS.ID); return(true); } catch (Exception e) { Log.Error("Error i EndreRS: {error}", e); return(false); } }
public async Task EndreRSLoggetInnFeilInput() { var oslo = new Holdeplass { Sted = "", Sone = 1 }; var OsloStavanger = new Rute { Navn = "Oslo-Stavanger" }; var RuteOsloStavangerStoppOslo = new RuteStopp { Holdeplass = oslo, Rute = OsloStavanger, StoppTid = TimeSpan.FromMinutes(0) }; mockRep.Setup(k => k.EndreRS(RuteOsloStavangerStoppOslo)).ReturnsAsync(true); var bestillingController = new AdminController(mockRep.Object); bestillingController.ModelState.AddModelError("Holdeplass", "Feil i inputvalidering på server"); mockSession[_loggetInn] = _loggetInn; mockHttpContext.Setup(s => s.Session).Returns(mockSession); bestillingController.ControllerContext.HttpContext = mockHttpContext.Object; var resultat = await bestillingController.EndreRS(It.IsAny <RuteStopp>()) as BadRequestObjectResult; Assert.Equal((int)HttpStatusCode.BadRequest, resultat.StatusCode); Assert.Equal("Feil i inputvalidering på server", resultat.Value); }
public async Task <bool> FjernRuteStopp(int Id) { try { // Fjerner aktuelt RuteStopp RuteStopp ruteStoppTilFjerning = await _db.RuteStopp.FindAsync(Id); _db.Remove(ruteStoppTilFjerning); int stoppNummer = ruteStoppTilFjerning.StoppNummer; string linjekode = ruteStoppTilFjerning.Rute.Linjekode; // Henter alle RuteStopp fra samme rute som har likt eller høyre stoppnummer enn det som ble fjernet List <RuteStopp> endreStoppNummer = await LiktEllerSenereStoppNummer(stoppNummer, linjekode); // Subtraherer alle med stoppnummer som er større eller lik det fjernede rutestoppet med 1 foreach (RuteStopp rs in endreStoppNummer) { rs.StoppNummer--; } await _db.SaveChangesAsync(); return(true); } catch (Exception e) { _log.LogInformation(e.Message); return(false); } }
public async Task <bool> SlettRS(int id) { try { RuteStopp etRS = await _db.Rutestopp.FindAsync(id); _db.Rutestopp.Remove(etRS); await _db.SaveChangesAsync(); Log.Information("Rutestopp id: {id} slettet.", id); return(true); } catch (Exception e) { Log.Error("Error i SLettRS: {error}", e); return(false); } }
// Hjelpemetode som finner stoppnummeret til et spesifikt stopp i en spesifikk rute public async Task <int> FinnStoppNummer(Stopp stopp, Ruter fellesRute) { try { RuteStopp ruteStopp = await _db.RuteStopp .FirstOrDefaultAsync(rs => rs.Stopp == stopp && rs.Rute == fellesRute); if (ruteStopp == null) { _log.LogInformation("Stoppet er ikke på ruten"); return(-1); } return(ruteStopp.StoppNummer); } catch (Exception e) { _log.LogInformation(e.Message); return(-1); } }
public async Task <ActionResult> LagreRS(RuteStopp innRS) { if (string.IsNullOrEmpty(HttpContext.Session.GetString(_loggetInn))) { return(Unauthorized("Ikke logget inn")); } if (ModelState.IsValid) { bool returOK = await _db.LagreRS(innRS); if (!returOK) { Log.Information("Lagring av RuteStopp kunne ikke utføres"); return(NotFound("Lagring av RuteStopp kunne ikke utføres")); } return(Ok("Rutestopp lagret")); } Log.Information("Feil i inputvalidering"); return(BadRequest("Feil i inputvalidering på server")); }
public async Task <ActionResult> EtRuteStopp(int id) { if (string.IsNullOrEmpty(HttpContext.Session.GetString(_loggetInn))) { return(Unauthorized()); } if (ModelState.IsValid) { RuteStopp etRS = await _db.EtRuteStopp(id); if (etRS == null) { Log.Information("Fant ikke rutestopp"); return(NotFound("Fant ikke rutestopp")); } return(Ok(etRS)); } Log.Information("Feil i inputvalidering"); return(BadRequest("Feil i inputvalidering på server")); }
public async Task <NyRuteStopp> HentEtRuteStopp(int id) { try { RuteStopp ruteStopp = await _db.RuteStopp.FindAsync(id); NyRuteStopp utRuteStopp = new NyRuteStopp { Stoppnavn = ruteStopp.Stopp.Navn, StoppNummer = ruteStopp.StoppNummer, MinutterTilNesteStopp = ruteStopp.MinutterTilNesteStopp, Linjekode = ruteStopp.Rute.Linjekode }; return(utRuteStopp); } catch (Exception e) { _log.LogInformation(e.Message); return(null); } }
public async Task <RuteStopp> EtRuteStopp(int id) { try { RuteStopp etRS = await _db.Rutestopp.FindAsync(id); Holdeplass holdeplass = await _db.Holdeplasser.FindAsync(etRS.Holdeplass.ID); var hentetRS = new RuteStopp() { ID = etRS.ID, StoppTid = etRS.StoppTid, Holdeplass = holdeplass }; return(hentetRS); } catch (Exception e) { Log.Error("Error i EtRuteStopp: {error}", e); return(null); } }
public async Task <bool> LagreRS(RuteStopp innRS) { try { var nyRS = new RuteStopp(); nyRS.StoppTid = innRS.StoppTid; // sjekker om holdeplass allerede ligger i databasen, legger til ny dersom den ikke gjør det var sjekkHoldeplass = _db.Holdeplasser.Where(navn => navn.Sted.Contains(innRS.Holdeplass.Sted)); if (sjekkHoldeplass == null) { // oppretter en ny holdeplass var nyHoldeplass = new Holdeplass(); nyHoldeplass.Sted = innRS.Holdeplass.Sted; nyHoldeplass.Sone = innRS.Holdeplass.Sone; nyRS.Holdeplass = nyHoldeplass; } else { nyRS.Holdeplass.Sted = innRS.Holdeplass.Sted; nyRS.Holdeplass.Sone = innRS.Holdeplass.Sone; } _db.Rutestopp.Add(nyRS); await _db.SaveChangesAsync(); Log.Information("Rutestopp lagret."); return(true); } catch (Exception e) { Log.Error("Error i LagreRS: {error}", e); return(false); } }
public async Task <bool> NyRuteStopp(NyRuteStopp innRuteStopp) { try { // Returnerer false hvis nyttStoppNummer er mindre enn det minste eller større en det største som allerede eksisterer int antallRuteStopp = await _db.RuteStopp.Where(rs => rs.Rute.Linjekode == innRuteStopp.Linjekode).CountAsync(); int nyttStoppNummer = innRuteStopp.StoppNummer; if (nyttStoppNummer > antallRuteStopp + 1 || nyttStoppNummer <= 0) { return(false); } // Henter alle RuteStopp fra samme rute som har likt eller høyre stoppnummer enn det nye stoppet List <RuteStopp> endreStoppNummer = await LiktEllerSenereStoppNummer(innRuteStopp.StoppNummer, innRuteStopp.Linjekode); // Adderer alle med stoppnummer som er større eller lik det nye rutestoppet med 1 foreach (RuteStopp rs in endreStoppNummer) { rs.StoppNummer++; } // Henter ruten til det nye RuteStopp-objektet Ruter rute = await _db.Ruter.FindAsync(innRuteStopp.Linjekode); // Nytt RuteStopp-objekt RuteStopp nyttRuteStopp = new RuteStopp { Id = innRuteStopp.Id, StoppNummer = innRuteStopp.StoppNummer, MinutterTilNesteStopp = innRuteStopp.MinutterTilNesteStopp, Rute = rute }; // Sjekker om det allerede eksisterer et stopp med tilsvarende navn i DB Stopp eksisterendeStopp = await _db.Stopp .Where(s => s.Navn == innRuteStopp.Stoppnavn).SingleOrDefaultAsync(); // Hvis det eksiterer blir dette Stopp-objektet brukt if (eksisterendeStopp != null) { nyttRuteStopp.Stopp = eksisterendeStopp; } // Hvis det ikke eksiterer blir et nytt Stopp-okbjekt lagt til else { Stopp nyttStopp = new Stopp { Navn = innRuteStopp.Stoppnavn }; nyttRuteStopp.Stopp = nyttStopp; } _db.RuteStopp.Add(nyttRuteStopp); await _db.SaveChangesAsync(); return(true); } catch (Exception e) { _log.LogInformation(e.Message); return(false); } }