public async Task <IActionResult> DeleteUser(string id)
        {
            var user = await _accountManager.GetUserByIdAsync(id);

            if (user == null)
            {
                return(NotFound());
            }

            if (!(await _authorizationService.AuthorizeAsync(this.User, user, UserAccountAuthorizationRequirements.Delete)).Succeeded)
            {
                return(Forbid());
            }

            if (!await _accountManager.TestCanDeleteUserAsync(id))
            {
                return(BadRequest("User cannot be deleted. Delete all orders associated with this user and try again"));
            }

            UserDto         userVM  = null;
            ApplicationUser appUser = await this._accountManager.GetUserByIdAsync(id);

            if (appUser != null)
            {
                userVM = await GetUserViewModelHelper(appUser.Id);
            }

            if (userVM == null)
            {
                return(NotFound(id));
            }

            var result = await this._accountManager.DeleteUserAsync(appUser);

            if (!result.Item1)
            {
                throw new Exception("The following errors occurred whilst deleting user: "******", ", result.Item2));
            }

            // FIXME: should be NoContent, but what if Web UI for user management depends on it returning OK?
            return(Ok(userVM));
        }