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))); }