public async Task SendTelemetry([Microsoft.AspNetCore.Mvc.FromBody] TelemetrySendViewModel model) // Activity ID
        {
            if (!Program.UseShSend || !ModelState.IsValid)
            {
                return;
            }

            var imageUrl           = "";
            var telemetrySendModel = model;
            var blobStorage        = new BlobManager(_configuration["StorageConnectionString"]);

            if (telemetrySendModel.Image.Length > 0)
            {
                var imageData = Convert.FromBase64String(FixBase64(telemetrySendModel.Image));
                imageUrl = blobStorage.UploadByteBlob(
                    blobStorage.GetContainerReference(_configuration["BlobContainerName"]),
                    $"{telemetrySendModel.IdActivity}/{telemetrySendModel.IdUser}/{DateTime.Now}_{new Random().Next(0, 20)}.png",
                    "image/png",
                    imageData
                    ).GetAwaiter().GetResult();
            }


            _telemetryRepository.Insert(new Telemetry()
            {
                //      Id = 0,
                Longitude  = telemetrySendModel.Longitude,
                Latitude   = telemetrySendModel.Latitude,
                IdActivity = telemetrySendModel.IdActivity,
                IdUser     = telemetrySendModel.IdUser,
                ImageUrl   = imageUrl,
                Instant    = telemetrySendModel.Instant
            });
        }
        public async Task <object> Create([FromRoute] int id, [FromBody] TelemetrySendViewModel model)
        {
            var activityId = id;

            if (!ModelState.IsValid)
            {
                return(new { error = "Bad request." });
            }

            var user = await _userManager.GetUserAsync(HttpContext.User);

            var userData = _userRepository.GetUserByIdentity(user.Id);

            var userId = userData.Id;

            model.IdUser     = userId;
            model.IdActivity = activityId;

            // This should be changed in real code to prevent extra queries
            var activityInfo = _activityRepository.Get(model.IdActivity);
            var runnerAdded  = (activityInfo.Type == 1 || _activityRepository.IsRunnerAdded(model.IdActivity, userData.Id));

            if (userData.IsOrganizer || activityInfo.Status != 1 || !runnerAdded) // Not allowed or closed
            {
                return(new { error = "Unauthorized." });
            }

            // Known format of URL
            if (activityInfo.RaceUrl.Length > 0)
            {
                var newId = 0;
                int.TryParse(activityInfo.RaceUrl.Substring(activityInfo.RaceUrl.LastIndexOf("/") + 1), out newId);
                model.IdActivityOrganizer = newId;
            }

            await _eventHub.SendMessage(new QueueElement <TelemetrySendViewModel>
            {
                Type = "TelemetrySend",
                Data = model,
            });

            return(new
            {
                coords = new
                {
                    latitude = model.Latitude,
                    longitude = model.Longitude,
                },
                imageUrl = model.Image,
            });
        }