public async Task <bool> FjernRute(string linjekode) { try { // Heter Ruter-objektet og tilhørende RuteStopp, Ordre og Avganger fra DB Ruter rute = await _db.Ruter.FindAsync(linjekode); List <RuteStopp> ruteStopp = await _db.RuteStopp.Where(rs => rs.Rute == rute).ToListAsync(); List <Ordre> ordre = await _db.Ordre.Where(o => o.Rute == rute).ToListAsync(); List <Avganger> avganger = await _db.Avganger.Where(a => a.Rute == rute).ToListAsync(); // Fjerner alle tilhørende rutestopp fra DB foreach (var rs in ruteStopp) { _db.RuteStopp.Remove(rs); } // Fjerner alle tilhørende ordre og ordrelinjer fra DB foreach (var o in ordre) { List <Ordrelinjer> ordrelinjer = await _db.Ordrelinjer.Where(ol => ol.Ordre == o).ToListAsync(); foreach (Ordrelinjer ol in ordrelinjer) { _db.Ordrelinjer.Remove(ol); } _db.Ordre.Remove(o); } // Fjerner alle tilhørende avganer fra DB foreach (var a in avganger) { _db.Avganger.Remove(a); } // Fjerner ruten, lagrer endringen og returnere true hvis alt gikk fint _db.Ruter.Remove(rute); _db.SaveChanges(); return(true); } catch (Exception e) { _log.LogInformation(e.Message); return(false); } }
// Fullfør ordre public async Task <bool> FullforOrdre(NyOrdre ordreModel) { try { // Henter ut ruten som tilhører OrdreModel Ruter rute = await _db.Ruter.FirstOrDefaultAsync(r => r.Linjekode == ordreModel.Linjekode); // Henter Avgangens Id Avganger avgang = await _db.Avganger.FirstOrDefaultAsync(a => a.Id == ordreModel.AvgangId); // Finner startStopp, og finner stoppnummeret i ruten Stopp startStopp = await _db.Stopp.FirstOrDefaultAsync(s => s.Navn == ordreModel.StartStopp); int stoppNummer1 = await _hjelp.FinnStoppNummer(startStopp, rute); // Finner sluttStopp, og finner stoppnummeret i ruten Stopp sluttStopp = await _db.Stopp.FirstOrDefaultAsync(s => s.Navn == ordreModel.SluttStopp); int stoppNummer2 = await _hjelp.FinnStoppNummer(sluttStopp, rute); // Regner ut antall stopp int antallStopp = stoppNummer2 - stoppNummer1; // Finner summen for reisen // antallStopp, rute, liste med billettype int sum = await _hjelp.BeregnPris(rute, antallStopp, ordreModel.Billettyper); // Lager en ordre basert på ordreModel, rute og avgang var ordre = new Ordre { Epost = ordreModel.Epost, StartStopp = startStopp, SluttStopp = sluttStopp, Sum = sum, Rute = rute, Avgang = avgang }; // Legger ordren til i databasen _db.Ordre.Add(ordre); // Raden til spesifisert avgang Avganger dbAvgang = _db.Avganger.Find(avgang.Id); // Går gjennom listen med billettyper foreach (string billettype in ordreModel.Billettyper) { // Henter ut en billettype i listen Billettyper billettypeObjekt = await _db.Billettyper.FirstOrDefaultAsync(a => a.Billettype == billettype); // Lager en ordrelinje var ordrelinje = new Ordrelinjer { Billettype = billettypeObjekt, Ordre = ordre }; // Legger denne ordrelinjen til databasen _db.Ordrelinjer.Add(ordrelinje); // Øker antalll solgte billetter med 1 dbAvgang.SolgteBilletter++; } // Lagrer alt som er blitt lagt til i databasen _db.SaveChanges(); return(true); } catch (Exception e) { _log.LogInformation(e.Message); return(false); } }