Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,384 changes: 692 additions & 692 deletions openapi/generated.openapi.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions openapi/p4pa-debt-position.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -304,16 +304,16 @@ paths:
required: false
schema:
type: string
format: date
example: 2025-01-01
format: date-time
example: 2025-01-01T00:00:00
- name: dateTo
in: query
description: End date (inclusive)
required: false
schema:
type: string
format: date
example: 2025-01-01
format: date-time
example: 2025-01-01T00:00:00
responses:
"200":
description: Ok
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.util.List;

@RestController
Expand Down Expand Up @@ -267,8 +267,8 @@ public ResponseEntity<List<DebtPositionDTO>> getDebtPositionsByDebtorFiscalCodeA
List<InstallmentStatus> status,
List<DebtPositionOrigin> debtPositionOrigin,
Long organizationId,
LocalDate dateFrom,
LocalDate dateTo
OffsetDateTime dateFrom,
OffsetDateTime dateTo
) {
log.info("Retrieving DebtPosition by debtorFiscalCode={} debtorEntityType={} debtPositionOrigins={} organizationId={} dateFrom={} dateTo={}", fiscalCode, entityType, debtPositionOrigin, organizationId, dateFrom, dateTo);
return ResponseEntity.ok(debtPositionService.getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(
Expand All @@ -277,8 +277,8 @@ public ResponseEntity<List<DebtPositionDTO>> getDebtPositionsByDebtorFiscalCodeA
status,
debtPositionOrigin,
organizationId,
dateFrom,
dateTo
dateFrom != null ? dateFrom.toLocalDateTime() : null,
dateTo != null ? dateTo.toLocalDateTime() : null
));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.data.rest.core.annotation.RestResource;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

Expand Down Expand Up @@ -171,18 +171,18 @@ AND EXISTS (
AND i.debtorFiscalCodeHash = :debtorFiscalCodeHash
AND i.debtorEntityType = :debtorEntityType
AND (:status IS NULL OR i.status IN :status)
AND (:dateFrom IS NULL OR i.dueDate >= :dateFrom)
AND (:dateTo IS NULL OR i.dueDate <= :dateTo)
AND (cast(:dateFrom as string) IS NULL OR i.updateDate >= :dateFrom)
AND (cast(:dateTo as string) IS NULL OR i.updateDate <= :dateTo)
)
""")
@EntityGraph(value = "completeDebtPosition")
List<DebtPosition> findEntityGraphByDebtorFiscalCodeAndDebtorEntityType(
@Param("debtorFiscalCodeHash") byte[] debtorFiscalCodeHash,
@Param("debtorEntityType") PersonEntityType debtorEntityType,
@Param("status") List<InstallmentStatus> status,
@Param("debtPositionOrigin") List<DebtPositionOrigin> debtPositionOrigin,
@Param("debtPositionOrigins") List<DebtPositionOrigin> debtPositionOrigins,
@Param("organizationId") Long organizationId,
@Param("dateFrom") LocalDate dateFrom,
@Param("dateTo") LocalDate dateTo
@Param("dateFrom") LocalDateTime dateFrom,
@Param("dateTo") LocalDateTime dateTo
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import it.gov.pagopa.pu.debtpositions.model.DebtPosition;
import org.springframework.data.domain.Pageable;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

Expand All @@ -22,7 +22,7 @@ public interface DebtPositionService {
DebtPositionDTO getDebtPositionByInstallmentId(Long installmentId);
List<DebtPositionDTO> getDebtPositionsByOrganizationIdAndIuv(Long organizationId, String iuv, List<DebtPositionOrigin> debtPositionOrigin);
List<DebtPositionDTO> getDebtPositionsByOrganizationIdAndIud(Long organizationId, String iud, List<DebtPositionOrigin> debtPositionOrigin);
List<DebtPositionDTO> getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(String debtorFiscalCode, PersonEntityType debtorEntityType, List<InstallmentStatus> status, List<DebtPositionOrigin> debtPositionOrigin, Long organizationId, LocalDate dateFrom, LocalDate dateTo);
List<DebtPositionDTO> getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(String debtorFiscalCode, PersonEntityType debtorEntityType, List<InstallmentStatus> status, List<DebtPositionOrigin> debtPositionOrigin, Long organizationId, LocalDateTime dateFrom, LocalDateTime dateTo);

void delete(DebtPosition debtPosition);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -120,7 +120,7 @@ public void updateDebtPosition(Long debtPositionId, DebtPositionDTO debtPosition
}

@Override
public List<DebtPositionDTO> getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(String debtorFiscalCode, PersonEntityType debtorEntityType, List<InstallmentStatus> status, List<DebtPositionOrigin> debtPositionOrigin, Long organizationId, LocalDate dateFrom, LocalDate dateTo) {
public List<DebtPositionDTO> getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(String debtorFiscalCode, PersonEntityType debtorEntityType, List<InstallmentStatus> status, List<DebtPositionOrigin> debtPositionOrigin, Long organizationId, LocalDateTime dateFrom, LocalDateTime dateTo) {
if (debtorFiscalCode == null || debtorEntityType == null) {
throw new IllegalArgumentException("debtorFiscalCode and debtorEntityType are required");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -563,4 +564,29 @@ void whenGetDebtPositionsByDebtorFiscalCodeAndDebtorEntityTypeThenOk() throws Ex
List<DebtPositionDTO> resultResponse = objectMapper.readValue(result.getResponse().getContentAsString(), new TypeReference<ArrayList<DebtPositionDTO>>(){});
assertEquals(expectedResult, resultResponse);
}

@Test
void whenGetDebtPositionsByDebtorFiscalCodeAndDebtorEntityTypeAndDatesThenOk() throws Exception {
PersonEntityType debtorEntityType = PersonEntityType.F;
String debtorFiscalCode = "fiscalcode";
Long organizationId = 1L;
OffsetDateTime fromDate = OffsetDateTime.of(2025, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC);
OffsetDateTime toDate = OffsetDateTime.of(2025, 12, 31, 23, 59, 59, 999000000, ZoneOffset.UTC);

List<DebtPositionDTO> expectedResult = List.of(new DebtPositionDTO());
Mockito.when(debtPositionService.getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(debtorFiscalCode, debtorEntityType, null, null, organizationId, fromDate.toLocalDateTime(), toDate.toLocalDateTime())).thenReturn(expectedResult);

MvcResult result = mockMvc.perform(
get("/debt-positions/by-debtor/" + debtorFiscalCode + "/" + debtorEntityType.getValue())
.queryParam("organizationId", String.valueOf(organizationId))
.queryParam("dateFrom", fromDate.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME))
.queryParam("dateTo", toDate.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME))
.contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk())
.andReturn();

List<DebtPositionDTO> resultResponse = objectMapper.readValue(result.getResponse().getContentAsString(), new TypeReference<ArrayList<DebtPositionDTO>>() {
});
assertEquals(expectedResult, resultResponse);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.springframework.data.domain.Pageable;
import uk.co.jemos.podam.api.PodamFactory;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import java.util.TreeSet;
Expand Down Expand Up @@ -487,8 +487,8 @@ void givenAllParametersWhenGetDebtPositionsByDebtorFiscalCodeAndDebtorEntityType
List<InstallmentStatus> status = List.of(InstallmentStatus.PAID);
List<DebtPositionOrigin> origin = List.of(DebtPositionOrigin.ORDINARY);
Long orgId = 123L;
LocalDate dateFrom = LocalDate.of(2023, 1, 1);
LocalDate dateTo = LocalDate.of(2023, 12, 31);
LocalDateTime dateFrom = LocalDateTime.of(2023, 1, 1, 0, 0);
LocalDateTime dateTo = LocalDateTime.of(2023, 12, 31, 23, 59);

byte[] fiscalCodeHash = new byte[]{1,2,3};
List<DebtPosition> entities = List.of(podamFactory.manufacturePojo(DebtPosition.class));
Expand Down Expand Up @@ -520,8 +520,8 @@ void givenNullStatusAndOriginWhenGetDebtPositionsByDebtorFiscalCodeAndDebtorEnti
List<InstallmentStatus> status = null;
List<DebtPositionOrigin> origin = null;
Long orgId = 456L;
LocalDate dateFrom = null;
LocalDate dateTo = null;
LocalDateTime dateFrom = null;
LocalDateTime dateTo = null;

byte[] fiscalCodeHash = new byte[]{4,5,6};
List<DebtPosition> entities = List.of(podamFactory.manufacturePojo(DebtPosition.class));
Expand Down Expand Up @@ -553,8 +553,8 @@ void givenNullOrganizationIdAndDatesWhenGetDebtPositionsByDebtorFiscalCodeAndDeb
List<InstallmentStatus> status = List.of();
List<DebtPositionOrigin> origin = List.of();
Long orgId = null;
LocalDate dateFrom = null;
LocalDate dateTo = null;
LocalDateTime dateFrom = null;
LocalDateTime dateTo = null;

byte[] fiscalCodeHash = new byte[]{7,8,9};
List<DebtPosition> entities = List.of(podamFactory.manufacturePojo(DebtPosition.class));
Expand Down Expand Up @@ -586,8 +586,8 @@ void givenNullFiscalCodeWhenGetDebtPositionsByDebtorFiscalCodeAndDebtorEntityTyp
List<InstallmentStatus> status = null;
List<DebtPositionOrigin> origin = null;
Long orgId = null;
LocalDate dateFrom = null;
LocalDate dateTo = null;
LocalDateTime dateFrom = null;
LocalDateTime dateTo = null;

// When / Then
Assertions.assertThrows(IllegalArgumentException.class, () -> debtPositionService.getDebtPositionsByDebtorFiscalCodeAndDebtorEntityType(
Expand All @@ -603,8 +603,8 @@ void givenEmptyResultWhenGetDebtPositionsByDebtorFiscalCodeAndDebtorEntityTypeTh
List<InstallmentStatus> status = List.of();
List<DebtPositionOrigin> origin = List.of();
Long orgId = 789L;
LocalDate dateFrom = LocalDate.of(2022, 1, 1);
LocalDate dateTo = LocalDate.of(2022, 12, 31);
LocalDateTime dateFrom = LocalDateTime.of(2023, 1, 1, 0, 0);
LocalDateTime dateTo = LocalDateTime.of(2023, 12, 31, 23, 59);

byte[] fiscalCodeHash = new byte[]{10,11,12};
List<DebtPosition> entities = List.of();
Expand Down