Example #1
0
 private EksternDeltakerPosisjon TilEksternDeltakerPosisjon(DeltakerPosisjon posisjon)
 {
     return new EksternDeltakerPosisjon
     {
         DeltakerId = posisjon.DeltakerId,
         LagId = posisjon.LagId,
         Latitude = posisjon.Latitude,
         Longitude = posisjon.Longitude,
         Tidspunkt = posisjon.Tidspunkt
     };
 }
Example #2
0
        private void LagrePosisjonTilDatabasen(DeltakerPosisjon posisjon)
        {
            if (LagretPosisjon.ContainsKey(posisjon.DeltakerId) &&
                ErForKortEllerHyppig(LagretPosisjon[posisjon.DeltakerId], posisjon))
                return;

            // Oppdater før skriving til databasen - eventual consistent, men strammer inn muligheten for å smette forbi under lagring
            LagretPosisjon[posisjon.DeltakerId] = TilEksternDeltakerPosisjon(posisjon);

            Lagre(posisjon);
        }
Example #3
0
        private bool ErForKortEllerHyppig(EksternDeltakerPosisjon forrige, DeltakerPosisjon posisjon)
        {
            var avstandIMeter = DistanseKalkulator.MeterMellom(forrige.Latitude, forrige.Longitude, posisjon.Latitude, posisjon.Longitude);
            var avstandISekunder = posisjon.Tidspunkt.Subtract(forrige.Tidspunkt).TotalSeconds;

            if (avstandISekunder < _appSettings.MinstTidMellomPosisjoner)
                return true;

            return avstandIMeter < _appSettings.MinstAvstandMellomPosisjoner;
        }
Example #4
0
 protected virtual void Lagre(DeltakerPosisjon posisjon)
 {
     using (var context = _dataContextFactory.Create())
     {
         context.DeltakerPosisjoner.Add(posisjon);
         context.SaveChanges();
     }
 }
Example #5
0
        public DeltakerPosisjon RegistrerPosisjon(string lagId, string deltakerId, double latitude, double longitude)
        {
            var deltakerPosisjon = new DeltakerPosisjon
            {
                DeltakerId = deltakerId,
                LagId = lagId,
                Latitude = latitude,
                Longitude = longitude,
                Tidspunkt = TimeService.Now
            };

            LagrePosisjonTilDatabasen(deltakerPosisjon);

            GjeldendePosisjon[deltakerId] = TilEksternDeltakerPosisjon(deltakerPosisjon);
            return deltakerPosisjon;
        }
 protected override void Lagre(DeltakerPosisjon posisjon)
 {
 }