public IActionResult Create([FromQuery] string code, [FromBody] string callbackUri)
        {
            if (code == null)
            {
                return(BadRequest());
            }
            if (callbackUri == null)
            {
                return(BadRequest());
            }

            AccessToken accessToken = ObtainAccessToken(code, callbackUri).Result;
            bimsyncUser bsUser      = GetCurrentUser(accessToken).Result;
            //BCFToken bcfAccessToken = ObtainBCFToken(codeBCF).Result;

            var user = _context.Users.FirstOrDefault(t => t.bimsync_id == bsUser.id);

            if (user == null)
            {
                user = new User
                {
                    Id            = System.Guid.NewGuid().ToString(),
                    Name          = bsUser.name,
                    bimsync_id    = bsUser.id,
                    PowerBiSecret = System.Guid.NewGuid().ToString(),
                    AccessToken   = accessToken.access_token,
                    TokenExpireIn = accessToken.expires_in,
                    RefreshDate   = System.DateTime.Now + new System.TimeSpan(0, 0, accessToken.expires_in),
                    TokenType     = accessToken.token_type,
                    RefreshToken  = accessToken.refresh_token,
                    BCFToken      = ""
                };

                _context.Users.Add(user);
                _context.SaveChanges();
            }
            else
            {
                user.AccessToken   = accessToken.access_token;
                user.TokenExpireIn = accessToken.expires_in;
                user.RefreshDate   = System.DateTime.Now + new System.TimeSpan(0, 0, accessToken.expires_in - 60);
                user.TokenType     = accessToken.token_type;
                user.RefreshToken  = accessToken.refresh_token;

                _context.Users.Update(user);
                _context.SaveChanges();
            }

            return(CreatedAtRoute("GetUser", new { id = user.Id }, user));
        }
        private async Task <bimsyncUser> GetCurrentUser(AccessToken accessToken)
        {
            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Clear();
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken.access_token);

            HttpResponseMessage response = await client.GetAsync("https://api.bimsync.com/v2/user");

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(bimsyncUser));

            //response.EnsureSuccessStatusCode();

            Stream responseStream = await response.Content.ReadAsStreamAsync();

            bimsyncUser bimsyncUser = serializer.ReadObject(responseStream) as bimsyncUser;

            return(bimsyncUser);
        }