protected async Task<string> GenerateQR(string codeName, string codeData)
        {
            string qrCodeUrl = "qrCodes/" + codeName + ".png";
            Bitmap qrCode = ServerUtils.GenerateQRCode(codeData, true);
            CloudBlobContainer appContainer = ServerUtils.GetCloudBlobContainer();
            CloudBlockBlob blob = appContainer.GetBlockBlobReference(qrCodeUrl);
            using (MemoryStream stream = new MemoryStream())
            {
                qrCode.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                blob.Properties.ContentType = "image/png";
                stream.Seek(0, SeekOrigin.Begin);
                await blob.UploadFromStreamAsync(stream);
            }

            return qrCodeUrl;
        }