public async Task <int?> TrySignUp(IOperation operation, CompanySignUpEntity 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 [company].[Company] ( [UserId], [Name] ) SELECT [Id], @Name FROM @UserId; SELECT [Id] FROM @UserId; ")); }
public async Task <CompanyAuthenticationProfileEntity?> TrySignUp(IOperation operation, CompanySignUpEntity entity) { if (await userAuthenticationStore.IsUserExist(operation, entity.Email)) { throw new Exception(ExceptionMessage.EmailHasAlreadyExist); } var id = await userAuthenticationStore.TrySignUp(operation, entity); return(await userAuthenticationStore.GetCompanyProfileById(operation, id ?? throw new Exception(ExceptionMessage.CompanySignUpFailedDueToInactiveUserOrUnsuitableData))); }