/// <inheritdoc/>
        public async Task <HostBasePartAuthUser> GetCurrentUser(HostBasePartAuthJobCurrentUserGetInput input)
        {
            HostBasePartAuthUser result;

            var principal = input.Principal;

            if (principal == null || !principal.Identity.IsAuthenticated)
            {
                result = new HostBasePartAuthUser()
                {
                    UserName = "******",
                    FullName = "Unknown user"
                };
            }
            else
            {
                var userManager = input.UserManager;

                result = await GetUserByName(principal.Identity.Name, userManager)
                         .CoreBaseExtTaskWithCurrentCulture(false);
            }

            if (result == null)
            {
                throw new HostBasePartAuthJobCurrentUserGetException();
            }

            return(result);
        }
            ) BuildActionCurrentUserGet(HostBasePartAuthJobCurrentUserGetInput input)
        {
            input.UserManager = ExtUserManager;

            var job = AppJobCurrentUserGet;

            Task <HostBasePartAuthUser> execute() => job.Execute(input);

            void onSuccess(HostBasePartAuthJobCurrentUserGetResult result)
            {
                job.OnSuccess(ExtLogger, result, input);
            }

            void onError(Exception ex, HostBasePartAuthJobCurrentUserGetResult result)
            {
                job.OnError(ex, ExtLogger, result);
            }

            return(execute, onSuccess, onError);
        }
        public async Task <IActionResult> CurrentUserGet([FromQuery] HostBasePartAuthJobCurrentUserGetInput input)
        {
            var result = new HostBasePartAuthJobCurrentUserGetResult();

            input.Principal = User;

            var(execute, onSuccess, onError) = MyModel.BuildActionCurrentUserGet(input);

            try
            {
                result.Data = await execute().CoreBaseExtTaskWithCurrentCulture(false);

                onSuccess(result);
            }
            catch (Exception ex)
            {
                onError(ex, result);
            }

            return(Ok(result));
        }