private JournalLocation AddJournalLocation(DataContext db, JournalLocation lastLocation, SyncLocationModel model, DateTime date) { bool addNewLocation = true; if (lastLocation == null) { var journal = db.DBModel.Journals.Include(x => x.JournalLocations).FirstOrDefault(x => x.Id == model.JournalId); lastLocation = journal.JournalLocations.Count() > 0 ? journal.JournalLocations.LastOrDefault() : null; if (lastLocation != null) { var distance = Geolocation.CalcDistance(model.Latitude, model.Longitude, lastLocation.Latitude, lastLocation.Longitude); if (distance < Constants.AcceptedDistance) { lastLocation.StopCount += model.StopCount; lastLocation.LastUpdatedTS = date; if (!string.IsNullOrEmpty(model.Address)) { lastLocation.Address = model.Address; } addNewLocation = false; } } } if (addNewLocation) { JournalLocation location = new JournalLocation { Accuracy = model.Accuracy, Latitude = model.Latitude, Longitude = model.Longitude, CreatedTS = date, LastUpdatedTS = date, UserId = model.DriverId, JournalId = model.JournalId, TruckId = model.TruckId, StopCount = model.StopCount, Address = model.Address, }; db.DBModel.JournalLocations.Add(location); lastLocation = location; } return(lastLocation); }