public async Task <int?> TrySignUp(IOperation operation, ClientSignUpEntity entity)
        {
            return(await operation.QuerySingleOrDefaultAsync <int?>(entity, @"
                DECLARE @InternalUserId TABLE ([Id] INT);
                DECLARE @UserId TABLE ([Id] INT);

                INSERT INTO [authentication].[InternalUser] (
                    [Email],
                    [Password]
                )
                OUTPUT INSERTED.[Id] INTO @InternalUserId
                VALUES (
                    @Email,
                    @Password
                );

                INSERT INTO [authentication].[User] ([InternalUserId])
                OUTPUT INSERTED.[Id] INTO @UserId
                SELECT [Id]
                FROM @InternalUserId;

                INSERT INTO [client].[Client] (
                    [UserId],
                    [FirstName],
                    [LastName]
                )
                SELECT
                    [Id],
                    @FirstName,
                    @LastName
                FROM @UserId;

                SELECT [Id] FROM @UserId;
            "));
        }
        public async Task <ClientAuthenticationProfileEntity?> TrySignUp(IOperation operation, ClientSignUpEntity entity)
        {
            if (await userAuthenticationStore.IsUserExist(operation, entity.Email))
            {
                throw new Exception(ExceptionMessage.EmailHasAlreadyExist);
            }
            var id = await userAuthenticationStore.TrySignUp(operation, entity);

            return(await userAuthenticationStore.GetClientProfileById(operation,
                                                                      id ?? throw new Exception(ExceptionMessage.ClientSignUpFailedDueToInactiveUserOrUnsuitableData)));
        }