Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        // 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);
            }
        }