Allowing company to connect to multiple users

This commit is contained in:
harish
2024-10-01 19:15:22 +05:30
parent 4e7ee29ea0
commit e335da3225
5 changed files with 23 additions and 6 deletions

View File

@@ -178,5 +178,5 @@ public class GepafinConstant {
public static final String INVALID_EMAIL = "invalid.email";
public static final String UNAUTHORIZED = "UNAUTHORIZED";
public static final String COMPANY_ID_MANDATORY = "company.id.mandatory";
public static final String USER_ALREADY_CONNECTED_TO_COMPANY = "user.already.connected.to.company";
}

View File

@@ -34,13 +34,27 @@ public class CompanyDao {
private UserWithCompanyRepository userWithCompanyRepository;
public CompanyResponse createCompany(UserEntity userEntity, CompanyRequest companyRequest) {
validateCompany(companyRequest);
CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(companyRequest);
companyRepository.save(companyEntity);
createUserWithCompanyRelation(userEntity, companyEntity);
return convertCompanyEntityToCompanyResponse(companyEntity);
CompanyEntity existingCompany = companyRepository.findByVatNumber(companyRequest.getVatNumber());
if (existingCompany != null) {
UserWithCompanyEntity existingRelation = userWithCompanyRepository.findByUserIdAndCompanyId(userEntity.getId(), existingCompany.getId())
.orElse(null);
if (existingRelation == null) {
createUserWithCompanyRelation(userEntity, existingCompany);
} else {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.USER_ALREADY_CONNECTED_TO_COMPANY));
}
return convertCompanyEntityToCompanyResponse(existingCompany);
} else {
validateCompany(companyRequest);
CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(companyRequest);
companyRepository.save(companyEntity);
createUserWithCompanyRelation(userEntity, companyEntity);
return convertCompanyEntityToCompanyResponse(companyEntity);
}
}
private void validateCompany(CompanyRequest companyRequest) {
if (Boolean.FALSE.equals(StringUtils.isEmpty(companyRequest.getEmail()))

View File

@@ -13,5 +13,6 @@ public interface CompanyRepository extends JpaRepository<CompanyEntity, Long> {
List<CompanyEntity> findByIdIn(List<Long> companyIds);
Boolean existsByVatNumber(String vatNumber);
CompanyEntity findByVatNumber(String vatNumber);
}

View File

@@ -205,3 +205,4 @@ vatnumber.mandatory=VatNumber is mandatory.
vatnumber.already.exists=VatNumber already exists.
invalid.email=Invalid email.
company.id.mandatory=Company id is mandatory.
user.already.connected.to.company=The user is already connected to this company.

View File

@@ -198,3 +198,4 @@ vatnumber.mandatory=Il numero di partita IVA
vatnumber.already.exists=Il numero di partita IVA esiste già.
invalid.email=Email non valida.
company.id.mandatory=L'ID dell'azienda è obbligatorio.
user.already.connected.to.company=L'utente è già collegato a questa azienda.