public async Task <IActionResult> Post([FromBody] ApiUserModel model)
        {
            if (model == null)
            {
                return(BadRequest("Failed: HTTP request body is required."));
            }

            if (model.Password == null)
            {
                return(BadRequest("Failed: Password is required."));
            }

            var user = new ApplicationUser {
                UserName = model.UserName, Email = model.Email
            };

            var result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.ToString()));
            }

            var token = await _signIn.GenerateJwtTokenAsync(user);

            ApiUserModel response = new ApiUserModel {
                Token = token, Email = user.Email, Id = user.Id, UserName = user.UserName
            };

            _telemetryClient.TrackEvent("User created.");

            return(Ok(response));
        }
        public async Task <IActionResult> Post([FromBody] ApiUserModel model)
        {
            if (model == null)
            {
                return(BadRequest("Failed: HTTP request body is required."));
            }

            var signIn = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, false, false);

            if (signIn.Succeeded)
            {
                var appUser = _userManager.Users.SingleOrDefault(r => r.UserName == model.UserName);

                string token = await _signIn.GenerateJwtTokenAsync(appUser);

                var result = new ApiUserModel {
                    Token = token, Id = appUser.Id, UserName = appUser.UserName, Email = appUser.Email
                };

                _telemetryClient.TrackEvent("Successful login.");

                return(Ok(result));
            }

            _telemetryClient.TrackEvent("Failed login.");

            return(Unauthorized());
        }