public Trip AddTrip(Trip trip) {
            trip.User = _applicationUser;

            trip.Date = trip.Date.ToUniversalTime();

            trip.AddressOrigin = trip.ResolveAddress(_dbContext, _applicationUser.Id, trip.AddressOrigin);
            trip.AddressDestination = trip.ResolveAddress(_dbContext, _applicationUser.Id, trip.AddressDestination);
            trip.Car = trip.ResolveCar(_dbContext, _applicationUser.Id, trip.Car);
            if (trip.AddressOrigin != null && trip.AddressDestination != null) {
                trip.DistanceInKm = _distanceCalculatorService.GetDistance(trip.AddressOrigin, trip.AddressDestination, Mode.Driving, Units.Metric);   
            }

            _dbContext.Trips.Add(trip);
            _dbContext.SaveChanges();

            return trip;
        }
        public Trip UpdateTrip(Trip trip) {
            var existingTrip = _dbContext.Trips.SingleOrDefault(t => t.User.Id == _applicationUser.Id && t.Id == trip.Id);
            if (existingTrip == null) {
                throw new ObjectNotFoundException();   
            }

            existingTrip.Date = trip.Date.ToUniversalTime();
            existingTrip.AddressOrigin = trip.ResolveAddress(_dbContext, _applicationUser.Id, trip.AddressOrigin);
            existingTrip.AddressDestination = trip.ResolveAddress(_dbContext, _applicationUser.Id, trip.AddressDestination);
            existingTrip.Car = trip.ResolveCar(_dbContext, _applicationUser.Id, trip.Car);
            existingTrip.Remarks = trip.Remarks;
            if (existingTrip.AddressOrigin != null && existingTrip.AddressDestination != null) {
                existingTrip.DistanceInKm = _distanceCalculatorService.GetDistance(existingTrip.AddressOrigin, existingTrip.AddressDestination, Mode.Driving, Units.Metric);
            }
            existingTrip.Remarks = trip.Remarks;

            _dbContext.SaveChanges();

            return existingTrip;
        }