From 7bb48f39440abd56cacff9216279dc5485c9378f Mon Sep 17 00:00:00 2001 From: vladp Date: Thu, 5 Feb 2026 17:16:16 +0700 Subject: [PATCH] dev add test find by searchapo --- .../soune/nocopy/dto/register/RegRequest.java | 2 ++ .../nocopy/service/register/AuthService.java | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/soune/nocopy/dto/register/RegRequest.java b/src/main/java/ru/soune/nocopy/dto/register/RegRequest.java index 28e042d..d9b630b 100644 --- a/src/main/java/ru/soune/nocopy/dto/register/RegRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/register/RegRequest.java @@ -27,4 +27,6 @@ public class RegRequest { @NotBlank(message = "Password is required") @Size(min = 8, message = "Password must be at least 8 characters") private String password; + + private String authToken; } diff --git a/src/main/java/ru/soune/nocopy/service/register/AuthService.java b/src/main/java/ru/soune/nocopy/service/register/AuthService.java index e6e50bf..a980f96 100644 --- a/src/main/java/ru/soune/nocopy/service/register/AuthService.java +++ b/src/main/java/ru/soune/nocopy/service/register/AuthService.java @@ -62,8 +62,10 @@ public class AuthService { if (accountType == AccountType.B2B && registerRequest.getCompanyName() != null) { createCompanyAccount(registerRequest, user); - } else { + } else if (accountType == AccountType.B2C && registerRequest.getCompanyName() == null) { createIndividualAccount(user); + } else { + createIndividualCompanyAccount(registerRequest, user); } if (registerRequest.getPhone() != null) { @@ -169,4 +171,25 @@ public class AuthService { user.setPersonalTariffInfo(personalTariff); user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS); } + + + private void createIndividualCompanyAccount(RegRequest request, User user) { + String authToken = request.getAuthToken(); + Long userIdByToken = authTokenRepository.findUserIdByToken(authToken); + User companyUser = userRepository.findById(userIdByToken).orElseThrow(); + + Company company = companyUser.getCompany(); + TariffInfo tariffInfo = company.getTariffInfo(); + + Long maxUsers = tariffInfo.getTariff().getMaxUsers(); + long currentCountUsers = userRepository.findByCompanyId(company.getId()).size(); + + //TODO add exception + if (maxUsers < currentCountUsers) { + throw new RuntimeException(); + } + + user.setCompany(companyUser.getCompany()); + user.grantPermission(Permission.DEFAULT_USER_PERMISSIONS); + } }