public bool insertBestilling(Handlevogn hv) { var db = new DBContext(); try { var nyBestilling = new Bestillinger() { KundeId = hv.kunde.id }; List <Ordrelinjer> nyOrdrelinjer = new List <Ordrelinjer>(); foreach (HandlevognItem h in hv.varer) { Ordrelinjer tmpOrdrelinje = new Ordrelinjer() { ID = h.id, ProduktId = h.Vare.id, Vare = db.Varer.FirstOrDefault(k => k.ID == h.Vare.id), Kvantitet = h.Antall, Bestillingsnr = nyBestilling.ID, Bestilling = nyBestilling }; nyOrdrelinjer.Add(tmpOrdrelinje); db.Ordrelinjer.Add(tmpOrdrelinje); } nyBestilling.Ordrelinjer = nyOrdrelinjer; hv.calculateSumTotal(); nyBestilling.PrisTotal = hv.prisTotal; nyBestilling.OrderDate = DateTime.Now; db.Bestillinger.Add(nyBestilling); db.SaveChanges(); return(true); } catch (Exception feil) { 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); } }