public async Task <double> Handle(CreateAndCalculateDistanceCommand request, CancellationToken cancellationToken)
        {
            double R = 6371; // km

            double sLat1 = Math.Sin(ToRadians(request.Lat1));
            double sLat2 = Math.Sin(ToRadians(request.Lat2));
            double cLat1 = Math.Cos(ToRadians(request.Lat1));
            double cLat2 = Math.Cos(ToRadians(request.Lat2));
            double cLon  = Math.Cos(ToRadians(request.Lon1) - ToRadians(request.Lon2));

            double cosD = sLat1 * sLat2 + cLat1 * cLat2 * cLon;

            double d = Math.Acos(cosD);

            double dist = R * d;

            var entity = new UserDistance
            {
                FromPoint = new Domain.Location
                {
                    Latitude  = request.Lat1,
                    Longitude = request.Lon1
                },
                ToPoint = new Domain.Location
                {
                    Latitude  = request.Lat2,
                    Longitude = request.Lon2,
                },
                Distance = dist,

                UserId       = _currentUserService.UserId,
                Created      = DateTime.Now,
                LastModified = DateTime.Now,
            };

            _db.UserDistances.Add(entity);
            await _db.SaveChangesAsync(cancellationToken);

            return(dist);
        }