|
1 | 1 | package no.nav.pdl.forvalter.service;
|
2 | 2 |
|
3 | 3 | import lombok.RequiredArgsConstructor;
|
| 4 | +import ma.glasnost.orika.MapperFacade; |
4 | 5 | import no.nav.pdl.forvalter.database.model.DbPerson;
|
5 | 6 | import no.nav.pdl.forvalter.database.model.DbRelasjon;
|
6 | 7 | import no.nav.pdl.forvalter.database.repository.PersonRepository;
|
|
30 | 31 | import java.time.LocalDateTime;
|
31 | 32 | import java.util.Comparator;
|
32 | 33 | import java.util.List;
|
33 |
| -import java.util.concurrent.atomic.AtomicInteger; |
| 34 | +import java.util.concurrent.atomic.AtomicReference; |
34 | 35 |
|
35 | 36 | import static java.util.Objects.isNull;
|
36 | 37 | import static java.util.Objects.nonNull;
|
|
40 | 41 | public class MetadataTidspunkterService {
|
41 | 42 |
|
42 | 43 | private final PersonRepository personRepository;
|
| 44 | + private final MapperFacade mapperFacade; |
43 | 45 |
|
44 | 46 | public void updateMetadata(String ident) {
|
45 | 47 |
|
@@ -221,31 +223,33 @@ private static void fixSikkerhetstiltak(SikkerhetstiltakDTO sikkerhetstiltakDTO)
|
221 | 223 | sikkerhetstiltakDTO.getFolkeregistermetadata().setOpphoerstidspunkt(sikkerhetstiltakDTO.getGyldigTilOgMed());
|
222 | 224 | }
|
223 | 225 |
|
224 |
| - private static void fixSivilstand(PersonDTO person) { |
| 226 | + private void fixSivilstand(PersonDTO person) { |
225 | 227 |
|
226 | 228 | person.getSivilstand().sort(Comparator.comparing(SivilstandDTO::getId).reversed());
|
227 | 229 |
|
228 |
| - var counter = new AtomicInteger(0); |
229 |
| - person.getSivilstand() |
| 230 | + var sivilstandCopy = mapperFacade.mapAsList(person.getSivilstand(), SivilstandDTO.class); |
| 231 | + var dato = new AtomicReference<>(LocalDateTime.now()); |
| 232 | + |
| 233 | + sivilstandCopy |
230 | 234 | .forEach(sivilstand -> {
|
231 |
| - fixFolkeregisterMetadata(sivilstand); |
232 |
| - if (isNull(sivilstand.getFolkeregistermetadata().getGyldighetstidspunkt())) { |
233 |
| - |
234 |
| - LocalDateTime gyldighetstidspunkt; |
235 |
| - if (nonNull(sivilstand.getSivilstandsdato())) { |
236 |
| - gyldighetstidspunkt = sivilstand.getSivilstandsdato(); |
237 |
| - } else if (nonNull(sivilstand.getBekreftelsesdato())) { |
238 |
| - gyldighetstidspunkt = sivilstand.getBekreftelsesdato(); |
239 |
| - } else { |
240 |
| - gyldighetstidspunkt = LocalDateTime.now().minusYears(counter.incrementAndGet()); |
241 |
| - } |
242 |
| - sivilstand.getFolkeregistermetadata().setGyldighetstidspunkt(gyldighetstidspunkt); |
243 |
| - } |
244 |
| - if (isNull(sivilstand.getFolkeregistermetadata().getAjourholdstidspunkt())) { |
245 |
| - sivilstand.getFolkeregistermetadata().setAjourholdstidspunkt( |
246 |
| - sivilstand.getFolkeregistermetadata().getGyldighetstidspunkt()); |
| 235 | + if (isNull(sivilstand.getSivilstandsdato()) && isNull(sivilstand.getBekreftelsesdato())) { |
| 236 | + |
| 237 | + sivilstand.setSivilstandsdato(dato.get()); |
| 238 | + dato.set(dato.get().minusYears(1)); |
| 239 | + |
| 240 | + } else { |
| 241 | + var sivilstandsdato = nonNull(sivilstand.getSivilstandsdato()) ? sivilstand.getSivilstandsdato() : sivilstand.getBekreftelsesdato(); |
| 242 | + sivilstand.setSivilstandsdato(sivilstandsdato); |
| 243 | + dato.set(sivilstandsdato.minusYears(1)); |
247 | 244 | }
|
248 | 245 | });
|
| 246 | + |
| 247 | + for (int i = 0; i < person.getSivilstand().size(); i++) { |
| 248 | + |
| 249 | + var sivilstand = person.getSivilstand().get(i); |
| 250 | + fixFolkeregisterMetadata(sivilstand); |
| 251 | + sivilstand.getFolkeregistermetadata().setAjourholdstidspunkt(sivilstandCopy.get(i).getSivilstandsdato()); |
| 252 | + } |
249 | 253 | }
|
250 | 254 |
|
251 | 255 | private static void fixStatsborgerskap(StatsborgerskapDTO statsborgerskapDTO) {
|
|
0 commit comments