Example #1
0
        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);
        }