Allowing company to connect to multiple users
This commit is contained in:
@@ -178,5 +178,5 @@ public class GepafinConstant {
|
|||||||
public static final String INVALID_EMAIL = "invalid.email";
|
public static final String INVALID_EMAIL = "invalid.email";
|
||||||
public static final String UNAUTHORIZED = "UNAUTHORIZED";
|
public static final String UNAUTHORIZED = "UNAUTHORIZED";
|
||||||
public static final String COMPANY_ID_MANDATORY = "company.id.mandatory";
|
public static final String COMPANY_ID_MANDATORY = "company.id.mandatory";
|
||||||
|
public static final String USER_ALREADY_CONNECTED_TO_COMPANY = "user.already.connected.to.company";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,13 +34,27 @@ public class CompanyDao {
|
|||||||
private UserWithCompanyRepository userWithCompanyRepository;
|
private UserWithCompanyRepository userWithCompanyRepository;
|
||||||
|
|
||||||
public CompanyResponse createCompany(UserEntity userEntity, CompanyRequest companyRequest) {
|
public CompanyResponse createCompany(UserEntity userEntity, CompanyRequest companyRequest) {
|
||||||
validateCompany(companyRequest);
|
CompanyEntity existingCompany = companyRepository.findByVatNumber(companyRequest.getVatNumber());
|
||||||
CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(companyRequest);
|
if (existingCompany != null) {
|
||||||
companyRepository.save(companyEntity);
|
UserWithCompanyEntity existingRelation = userWithCompanyRepository.findByUserIdAndCompanyId(userEntity.getId(), existingCompany.getId())
|
||||||
createUserWithCompanyRelation(userEntity, companyEntity);
|
.orElse(null);
|
||||||
return convertCompanyEntityToCompanyResponse(companyEntity);
|
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) {
|
private void validateCompany(CompanyRequest companyRequest) {
|
||||||
|
|
||||||
if (Boolean.FALSE.equals(StringUtils.isEmpty(companyRequest.getEmail()))
|
if (Boolean.FALSE.equals(StringUtils.isEmpty(companyRequest.getEmail()))
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ public interface CompanyRepository extends JpaRepository<CompanyEntity, Long> {
|
|||||||
List<CompanyEntity> findByIdIn(List<Long> companyIds);
|
List<CompanyEntity> findByIdIn(List<Long> companyIds);
|
||||||
|
|
||||||
Boolean existsByVatNumber(String vatNumber);
|
Boolean existsByVatNumber(String vatNumber);
|
||||||
|
CompanyEntity findByVatNumber(String vatNumber);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,3 +205,4 @@ vatnumber.mandatory=VatNumber is mandatory.
|
|||||||
vatnumber.already.exists=VatNumber already exists.
|
vatnumber.already.exists=VatNumber already exists.
|
||||||
invalid.email=Invalid email.
|
invalid.email=Invalid email.
|
||||||
company.id.mandatory=Company id is mandatory.
|
company.id.mandatory=Company id is mandatory.
|
||||||
|
user.already.connected.to.company=The user is already connected to this company.
|
||||||
|
|||||||
@@ -198,3 +198,4 @@ vatnumber.mandatory=Il numero di partita IVA
|
|||||||
vatnumber.already.exists=Il numero di partita IVA esiste già.
|
vatnumber.already.exists=Il numero di partita IVA esiste già.
|
||||||
invalid.email=Email non valida.
|
invalid.email=Email non valida.
|
||||||
company.id.mandatory=L'ID dell'azienda è obbligatorio.
|
company.id.mandatory=L'ID dell'azienda è obbligatorio.
|
||||||
|
user.already.connected.to.company=L'utente è già collegato a questa azienda.
|
||||||
|
|||||||
Reference in New Issue
Block a user