public async Task <JwtForClientDto> CreateJwtForClient(string responseString, int?referralCode)
        {
            var userFrom0Auth       = JsonConvert.DeserializeObject <UserFromAuth0Dto>(responseString);
            var userFromGoogle0Auth = _mapper.Map <User>(userFrom0Auth);

            if (!await _repo.UserExists(userFromGoogle0Auth.Email))
            {
                var newUser = userFromGoogle0Auth;
                newUser.QRCodeUrl = await _qRCodeGeneration.CreateQrCode(newUser.Id.ToString());

                newUser.Role = Constants.Roles[0];
                newUser      = await _repo.Register(newUser);

                int referral = referralCode ?? default(int);
                if (referralCode != null)
                {
                    await _ambRepo.ApplyReferralCode(newUser.Id, referral);
                }
            }

            User user = await _repo.GetUser(userFromGoogle0Auth.Email);

            var jwtForClient = new JwtForClientDto();
            var jwtKey       = Encoding.ASCII.GetBytes(_env.AccessToken);

            jwtForClient.AccessToken = CreateAccessTokenFromUser(user, jwtKey);
            var claims = new List <Claim>()
            {
                new Claim("user_id", user.Id.ToString()),
                new Claim("email", user.Email)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_env.RefreshToken));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddYears(1),
                SigningCredentials = creds,
                Issuer             = _env.Issuer
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            jwtForClient.RefreshToken = tokenHandler.WriteToken(token);
            return(jwtForClient);
        }
        public async Task <string> CreateQrCode(string ExcelId)
        {
            string qRCodeUrl = await _qRCodeGeneration.CreateQrCode(ExcelId);

            return(qRCodeUrl);
        }