Skip to content

Commit ac45e34

Browse files
[SELC-5318] feat: add contacts to CreateInstitutionRaw and update institution if it already exists (#22)
1 parent bfaeb3f commit ac45e34

File tree

4 files changed

+30
-20
lines changed

4 files changed

+30
-20
lines changed

apps/institution-ms/core/src/main/java/it/pagopa/selfcare/mscore/core/InstitutionServiceImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ public Institution createInstitution(Institution institution) {
141141
.subunitType(Optional.ofNullable(institution.getSubunitType())
142142
.map(InstitutionPaSubunitType::valueOf)
143143
.orElse(null))
144+
.supportEmail(institution.getSupportEmail())
145+
.supportPhone(institution.getSupportPhone())
144146
.build());
145147
}
146148

apps/institution-ms/core/src/main/java/it/pagopa/selfcare/mscore/core/strategy/CreateInstitutionStrategyCommon.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import java.time.OffsetDateTime;
1212
import java.util.List;
1313

14-
import static it.pagopa.selfcare.mscore.constant.CustomError.CREATE_INSTITUTION_ORIGIN_CONFLICT;
15-
1614
@Slf4j
1715
@Component
1816
public class CreateInstitutionStrategyCommon {
@@ -30,14 +28,6 @@ protected void checkIfAlreadyExistsByTaxCodeAndSubunitCode(String taxCode, Strin
3028
CustomError.CREATE_INSTITUTION_CONFLICT.getCode());
3129
}
3230

33-
protected void checkIfAlreadyExistByOriginAndOriginId(String origin, String originId) {
34-
List<Institution> institutions = institutionConnector.findByOriginAndOriginId(origin, originId);
35-
if (!institutions.isEmpty())
36-
throw new ResourceConflictException(String.format(
37-
CREATE_INSTITUTION_ORIGIN_CONFLICT.getMessage(), origin, originId),
38-
CREATE_INSTITUTION_ORIGIN_CONFLICT.getCode());
39-
}
40-
4131
protected static void setUpdatedFields(CreateInstitutionStrategyInput strategyInput, Institution toSavedOrUpdate) {
4232
if (strategyInput.getDescription() != null) {
4333
toSavedOrUpdate.setDescription(strategyInput.getDescription());

apps/institution-ms/core/src/main/java/it/pagopa/selfcare/mscore/core/strategy/CreateInstitutionStrategyRaw.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.springframework.stereotype.Component;
99

1010
import java.time.OffsetDateTime;
11+
import java.util.List;
1112

1213
import static it.pagopa.selfcare.mscore.constant.GenericError.CREATE_INSTITUTION_ERROR;
1314

@@ -23,12 +24,18 @@ public CreateInstitutionStrategyRaw(InstitutionConnector institutionConnector) {
2324
@Override
2425
public Institution createInstitution(CreateInstitutionStrategyInput strategyInput) {
2526

26-
checkIfAlreadyExistsByTaxCodeAndSubunitCode(strategyInput.getTaxCode(), strategyInput.getSubunitCode());
27-
28-
institution.setExternalId(getExternalId(strategyInput));
29-
institution.setOrigin(Origin.SELC.getValue());
30-
institution.setOriginId("SELC_" + institution.getExternalId());
31-
institution.setCreatedAt(OffsetDateTime.now());
27+
List<Institution> institutions = institutionConnector.findByTaxCodeAndSubunitCode(strategyInput.getTaxCode(), strategyInput.getSubunitCode());
28+
29+
if (institutions.isEmpty()) {
30+
institution.setExternalId(getExternalId(strategyInput));
31+
institution.setOrigin(Origin.SELC.getValue());
32+
institution.setOriginId("SELC_" + institution.getExternalId());
33+
institution.setCreatedAt(OffsetDateTime.now());
34+
setContacts(strategyInput, institution);
35+
} else {
36+
institution = institutions.get(0);
37+
setUpdatedFields(strategyInput, institution);
38+
}
3239

3340
try {
3441
return institutionConnector.save(institution);

apps/institution-ms/core/src/test/java/it/pagopa/selfcare/mscore/core/strategy/CreateInstitutionStrategyTest.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import it.pagopa.selfcare.mscore.core.strategy.input.CreateInstitutionStrategyInput;
1212
import it.pagopa.selfcare.mscore.core.util.InstitutionPaSubunitType;
1313
import it.pagopa.selfcare.mscore.core.util.TestUtils;
14-
import it.pagopa.selfcare.mscore.exception.ResourceConflictException;
1514
import it.pagopa.selfcare.mscore.exception.ResourceNotFoundException;
1615
import it.pagopa.selfcare.mscore.model.AreaOrganizzativaOmogenea;
1716
import it.pagopa.selfcare.mscore.model.UnitaOrganizzativa;
@@ -27,7 +26,6 @@
2726
import java.util.Optional;
2827

2928
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
30-
import static org.junit.jupiter.api.Assertions.assertThrows;
3129
import static org.mockito.ArgumentMatchers.any;
3230
import static org.mockito.ArgumentMatchers.anyString;
3331
import static org.mockito.Mockito.*;
@@ -167,11 +165,24 @@ void shouldCreateInstitutionFromIvassIfAlreadyExists() {
167165
@Test
168166
void shouldThrowExceptionOnCreateInstitutionIfAlreadyExists() {
169167

168+
Institution institution = new Institution();
169+
institution.setId("id");
170+
171+
when(institutionConnector.findByTaxCodeAndSubunitCode(any(), any())). thenReturn(List.of(institution));
172+
when(institutionConnector.save(any())).thenAnswer(args -> args.getArguments()[0]);
173+
170174
when(institutionConnector.findByTaxCodeAndSubunitCode(any(), any()))
171175
.thenReturn(List.of(new Institution()));
172-
assertThrows(ResourceConflictException.class, () -> strategyFactory.createInstitutionStrategy(new Institution())
176+
177+
Institution actual = strategyFactory.createInstitutionStrategy(new Institution())
173178
.createInstitution(CreateInstitutionStrategyInput.builder()
174-
.build()));
179+
.supportEmail(SUPPORT_EMAIL)
180+
.supportPhone(SUPPORT_PHONE)
181+
.build());
182+
183+
assertThat(actual.getSupportEmail()).isEqualTo(SUPPORT_EMAIL);
184+
assertThat(actual.getSupportPhone()).isEqualTo(SUPPORT_PHONE);
185+
verifyNoInteractions(partyRegistryProxyConnector);
175186
}
176187

177188
/**

0 commit comments

Comments
 (0)