1
1
package no .nav .foreldrepenger .abakus .iay .tjeneste ;
2
2
3
3
4
- import java .util .EnumSet ;
5
4
import java .util .Objects ;
6
5
import java .util .Optional ;
7
- import java .util .Set ;
8
6
import java .util .UUID ;
9
-
10
- import com .fasterxml .jackson .annotation .JsonAutoDetect ;
11
- import com .fasterxml .jackson .annotation .JsonCreator ;
12
- import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
13
- import com .fasterxml .jackson .annotation .JsonInclude ;
14
- import com .fasterxml .jackson .annotation .JsonProperty ;
7
+ import java .util .function .Function ;
15
8
16
9
import jakarta .enterprise .context .ApplicationScoped ;
17
10
import jakarta .inject .Inject ;
26
19
import jakarta .ws .rs .core .MediaType ;
27
20
import jakarta .ws .rs .core .Response ;
28
21
import no .nav .abakus .iaygrunnlag .Periode ;
29
- import no .nav .abakus .iaygrunnlag .PersonIdent ;
30
- import no .nav .abakus .iaygrunnlag .arbeidsforhold .v1 .ArbeidsforholdInformasjon ;
31
- import no .nav .abakus .iaygrunnlag .kodeverk .YtelseType ;
32
- import no .nav .abakus .iaygrunnlag .request .Dataset ;
33
22
import no .nav .abakus .iaygrunnlag .request .InntektArbeidYtelseGrunnlagRequest ;
34
23
import no .nav .abakus .iaygrunnlag .request .KopierGrunnlagRequest ;
35
- import no .nav .abakus .iaygrunnlag .v1 . InntektArbeidYtelseAggregatOverstyrtDto ;
24
+ import no .nav .abakus .iaygrunnlag .request . OverstyrGrunnlagRequest ;
36
25
import no .nav .abakus .iaygrunnlag .v1 .OverstyrtInntektArbeidYtelseDto ;
37
26
import no .nav .foreldrepenger .abakus .domene .iay .GrunnlagReferanse ;
38
27
import no .nav .foreldrepenger .abakus .domene .iay .InntektArbeidYtelseGrunnlag ;
49
38
import no .nav .foreldrepenger .abakus .typer .AktørId ;
50
39
import no .nav .foreldrepenger .abakus .typer .Saksnummer ;
51
40
import no .nav .vedtak .sikkerhet .abac .AbacDataAttributter ;
52
- import no .nav .vedtak .sikkerhet .abac .AbacDto ;
53
41
import no .nav .vedtak .sikkerhet .abac .BeskyttetRessurs ;
42
+ import no .nav .vedtak .sikkerhet .abac .StandardAbacAttributtType ;
43
+ import no .nav .vedtak .sikkerhet .abac .TilpassetAbacAttributt ;
54
44
import no .nav .vedtak .sikkerhet .abac .beskyttet .ActionType ;
55
45
import no .nav .vedtak .sikkerhet .abac .beskyttet .ResourceType ;
56
46
@@ -71,10 +61,6 @@ public GrunnlagRestTjeneste(InntektArbeidYtelseTjeneste iayTjeneste, KoblingTjen
71
61
this .koblingTjeneste = koblingTjeneste ;
72
62
}
73
63
74
- private static AbacDataAttributter lagAbacAttributter (PersonIdent person ) {
75
- return IdentDataAttributter .abacAttributterForPersonIdent (person );
76
- }
77
-
78
64
/**
79
65
* Hent ett enkelt IAY Grunnlag for angitt spesifikasjon. Spesifikasjonen kan angit hvilke data som ønskes
80
66
* @param spesifikasjon InntektArbeidYtelseGrunnlagRequestAbacDto
@@ -87,7 +73,8 @@ private static AbacDataAttributter lagAbacAttributter(PersonIdent person) {
87
73
@ Produces (MediaType .APPLICATION_JSON )
88
74
@ BeskyttetRessurs (actionType = ActionType .READ , resourceType = ResourceType .FAGSAK , sporingslogg = false )
89
75
@ SuppressWarnings ({"findsecbugs:JAXRS_ENDPOINT" , "resource" })
90
- public Response hentIayGrunnlag (@ NotNull @ Valid InntektArbeidYtelseGrunnlagRequestAbacDto spesifikasjon ) {
76
+ public Response hentIayGrunnlag (@ TilpassetAbacAttributt (supplierClass = InntektArbeidYtelseGrunnlagRequestAbacDataSupplier .class )
77
+ @ NotNull @ Valid InntektArbeidYtelseGrunnlagRequest spesifikasjon ) {
91
78
Response response ;
92
79
93
80
LoggUtil .setupLogMdc (spesifikasjon .getYtelseType (), spesifikasjon .getSaksnummer (), spesifikasjon .getKoblingReferanse ());
@@ -128,7 +115,8 @@ public Response hentIayGrunnlag(@NotNull @Valid InntektArbeidYtelseGrunnlagReque
128
115
@ Produces (MediaType .APPLICATION_JSON )
129
116
@ BeskyttetRessurs (actionType = ActionType .UPDATE , resourceType = ResourceType .FAGSAK , sporingslogg = true )
130
117
@ SuppressWarnings ("findsecbugs:JAXRS_ENDPOINT" )
131
- public Response oppdaterOgLagreOverstyring (@ NotNull @ Valid OverstyrtInntektArbeidYtelseAbacDto dto ) {
118
+ public Response oppdaterOgLagreOverstyring (@ TilpassetAbacAttributt (supplierClass = OverstyrtInntektArbeidYtelseDtoAbacDataSupplier .class )
119
+ @ NotNull @ Valid OverstyrtInntektArbeidYtelseDto dto ) {
132
120
133
121
var aktørId = new AktørId (dto .getPerson ().getIdent ());
134
122
var koblingReferanse = getKoblingReferanse (aktørId , dto .getKoblingReferanse (), dto .getGrunnlagReferanse ());
@@ -145,6 +133,35 @@ public Response oppdaterOgLagreOverstyring(@NotNull @Valid OverstyrtInntektArbei
145
133
return Response .ok ().build ();
146
134
}
147
135
136
+ /**
137
+ * Lagrer siste versjon
138
+ * @param dto OverstyrtInntektArbeidYtelseDto
139
+ * @return 200 ok
140
+ */
141
+ @ PUT
142
+ @ Path ("/overstyr-grunnlag" )
143
+ @ Consumes (MediaType .APPLICATION_JSON )
144
+ @ Produces (MediaType .APPLICATION_JSON )
145
+ @ BeskyttetRessurs (actionType = ActionType .UPDATE , resourceType = ResourceType .FAGSAK , sporingslogg = true )
146
+ @ SuppressWarnings ("findsecbugs:JAXRS_ENDPOINT" )
147
+ public Response overstyrGrunnlag (@ TilpassetAbacAttributt (supplierClass = OverstyrGrunnlagRequestAbacDataSupplier .class )
148
+ @ NotNull @ Valid OverstyrGrunnlagRequest dto ) {
149
+
150
+ var aktørId = new AktørId (dto .getAktør ().getIdent ());
151
+ var koblingReferanse = getKoblingReferanse (aktørId , dto .getKoblingReferanse (), dto .getGrunnlagReferanse ());
152
+
153
+ setupLogMdcFraKoblingReferanse (koblingReferanse );
154
+
155
+ var nyttGrunnlagBuilder = InntektArbeidYtelseGrunnlagBuilder .oppdatere (iayTjeneste .hentGrunnlagFor (koblingReferanse ));
156
+
157
+ new IAYFraDtoMapper (iayTjeneste , aktørId , koblingReferanse ).mapOverstyringerTilGrunnlagBuilder (dto .getOverstyrt (),
158
+ dto .getArbeidsforholdInformasjon (), nyttGrunnlagBuilder );
159
+
160
+ iayTjeneste .lagre (koblingReferanse , nyttGrunnlagBuilder );
161
+
162
+ return Response .ok ().build ();
163
+ }
164
+
148
165
/**
149
166
* Koperer grunnlaget
150
167
* @param request KopierGrunnlagRequest
@@ -156,7 +173,8 @@ public Response oppdaterOgLagreOverstyring(@NotNull @Valid OverstyrtInntektArbei
156
173
@ Produces (MediaType .APPLICATION_JSON )
157
174
@ BeskyttetRessurs (actionType = ActionType .CREATE , resourceType = ResourceType .FAGSAK , sporingslogg = true )
158
175
@ SuppressWarnings ("findsecbugs:JAXRS_ENDPOINT" )
159
- public Response kopierOgLagreGrunnlagUtenInntektsmeldinger (@ NotNull @ Valid KopierGrunnlagRequestAbac request ) {
176
+ public Response kopierOgLagreGrunnlagUtenInntektsmeldinger (@ TilpassetAbacAttributt (supplierClass = KopierGrunnlagRequestAbacDataSupplier .class )
177
+ @ NotNull @ Valid KopierGrunnlagRequest request ) {
160
178
kopierOgLagreGrunnlag (request , false );
161
179
return Response .ok ().build ();
162
180
}
@@ -172,12 +190,13 @@ public Response kopierOgLagreGrunnlagUtenInntektsmeldinger(@NotNull @Valid Kopie
172
190
@ Produces (MediaType .APPLICATION_JSON )
173
191
@ BeskyttetRessurs (actionType = ActionType .CREATE , resourceType = ResourceType .FAGSAK , sporingslogg = true )
174
192
@ SuppressWarnings ("findsecbugs:JAXRS_ENDPOINT" )
175
- public Response kopierOgLagreGrunnlagBeholdIM (@ NotNull @ Valid KopierGrunnlagRequestAbac request ) {
193
+ public Response kopierOgLagreGrunnlagBeholdIM (@ TilpassetAbacAttributt (supplierClass = KopierGrunnlagRequestAbacDataSupplier .class )
194
+ @ NotNull @ Valid KopierGrunnlagRequest request ) {
176
195
kopierOgLagreGrunnlag (request , true );
177
196
return Response .ok ().build ();
178
197
}
179
198
180
- private void kopierOgLagreGrunnlag (KopierGrunnlagRequestAbac request , boolean beholdInntektsmeldinger ) {
199
+ private void kopierOgLagreGrunnlag (KopierGrunnlagRequest request , boolean beholdInntektsmeldinger ) {
181
200
var koblingReferanse = new KoblingReferanse (request .getNyReferanse ());
182
201
var koblingLås = Optional .ofNullable (koblingTjeneste .taSkrivesLås (koblingReferanse ));
183
202
@@ -191,7 +210,7 @@ private void kopierOgLagreGrunnlag(KopierGrunnlagRequestAbac request, boolean be
191
210
koblingLås .ifPresent (lås -> koblingTjeneste .oppdaterLåsVersjon (lås ));
192
211
}
193
212
194
- private UUID utledSisteKjenteGrunnlagReferanseFraSpesifikasjon (InntektArbeidYtelseGrunnlagRequestAbacDto spesifikasjon ) {
213
+ private UUID utledSisteKjenteGrunnlagReferanseFraSpesifikasjon (InntektArbeidYtelseGrunnlagRequest spesifikasjon ) {
195
214
final var sisteKjenteGrunnlagReferanse = spesifikasjon .getSisteKjenteGrunnlagReferanse ();
196
215
final var forespurtGrunnlagReferanse = spesifikasjon .getGrunnlagReferanse ();
197
216
@@ -269,72 +288,39 @@ private void setupLogMdcFraKoblingReferanse(KoblingReferanse koblingReferanse) {
269
288
koblingReferanse .getReferanse ())); // legger til saksnummer i MDC
270
289
}
271
290
272
- /**
273
- * Json bean med Abac.
274
- */
275
- @ JsonIgnoreProperties (ignoreUnknown = true )
276
- @ JsonAutoDetect (fieldVisibility = JsonAutoDetect .Visibility .NONE , getterVisibility = JsonAutoDetect .Visibility .NONE , setterVisibility = JsonAutoDetect .Visibility .NONE , isGetterVisibility = JsonAutoDetect .Visibility .NONE , creatorVisibility = JsonAutoDetect .Visibility .NONE )
277
- @ JsonInclude (value = JsonInclude .Include .NON_ABSENT , content = JsonInclude .Include .NON_EMPTY )
278
- public static class InntektArbeidYtelseGrunnlagRequestAbacDto extends InntektArbeidYtelseGrunnlagRequest implements AbacDto {
279
-
280
- @ JsonCreator
281
- public InntektArbeidYtelseGrunnlagRequestAbacDto (@ JsonProperty (value = "personIdent" , required = true ) @ Valid @ NotNull PersonIdent person ) {
282
- super (person );
283
- }
291
+ public static class InntektArbeidYtelseGrunnlagRequestAbacDataSupplier implements Function <Object , AbacDataAttributter > {
284
292
285
293
@ Override
286
- public AbacDataAttributter abacAttributter () {
287
- return lagAbacAttributter (getPerson ());
294
+ public AbacDataAttributter apply (Object obj ) {
295
+ var req = (InntektArbeidYtelseGrunnlagRequest ) obj ;
296
+ return AbacDataAttributter .opprett ().leggTil (StandardAbacAttributtType .SAKSNUMMER , req .getSaksnummer ());
288
297
}
289
-
290
298
}
291
299
292
- /**
293
- * Json bean med Abac.
294
- */
295
- @ JsonIgnoreProperties (ignoreUnknown = true )
296
- @ JsonAutoDetect (fieldVisibility = JsonAutoDetect .Visibility .NONE , getterVisibility = JsonAutoDetect .Visibility .NONE , setterVisibility = JsonAutoDetect .Visibility .NONE , isGetterVisibility = JsonAutoDetect .Visibility .NONE , creatorVisibility = JsonAutoDetect .Visibility .NONE )
297
- @ JsonInclude (value = JsonInclude .Include .NON_ABSENT , content = JsonInclude .Include .NON_EMPTY )
298
- public static class KopierGrunnlagRequestAbac extends KopierGrunnlagRequest implements AbacDto {
299
-
300
- @ JsonCreator
301
- public KopierGrunnlagRequestAbac (@ JsonProperty (value = "saksnummer" , required = true ) @ Valid @ NotNull String saksnummer ,
302
- @ JsonProperty (value = "nyReferanse" , required = true ) @ Valid @ NotNull UUID nyReferanse ,
303
- @ JsonProperty (value = "gammelReferanse" , required = true ) @ Valid @ NotNull UUID gammelReferanse ,
304
- @ JsonProperty (value = "ytelseType" , required = true ) @ Valid @ NotNull no .nav .abakus .iaygrunnlag .kodeverk .YtelseType ytelseType ,
305
- @ JsonProperty (value = "aktør" , required = true ) @ NotNull @ Valid PersonIdent aktør ,
306
- @ JsonProperty (value = "dataset" , required = false ) @ Valid Set <Dataset > dataset ) {
307
-
308
- super (saksnummer , nyReferanse , gammelReferanse , ytelseType , aktør , dataset == null ? EnumSet .allOf (Dataset .class ) : dataset );
309
- }
300
+ public static class KopierGrunnlagRequestAbacDataSupplier implements Function <Object , AbacDataAttributter > {
310
301
311
302
@ Override
312
- public AbacDataAttributter abacAttributter () {
313
- return lagAbacAttributter (getAktør ());
303
+ public AbacDataAttributter apply (Object obj ) {
304
+ var req = (KopierGrunnlagRequest ) obj ;
305
+ return AbacDataAttributter .opprett ().leggTil (StandardAbacAttributtType .SAKSNUMMER , req .getSaksnummer ());
314
306
}
315
307
}
316
308
317
- /**
318
- * Json bean med Abac.
319
- */
320
- @ JsonIgnoreProperties (ignoreUnknown = true )
321
- @ JsonInclude (value = JsonInclude .Include .NON_ABSENT , content = JsonInclude .Include .NON_EMPTY )
322
- @ JsonAutoDetect (fieldVisibility = JsonAutoDetect .Visibility .NONE , getterVisibility = JsonAutoDetect .Visibility .NONE , setterVisibility = JsonAutoDetect .Visibility .NONE , isGetterVisibility = JsonAutoDetect .Visibility .NONE , creatorVisibility = JsonAutoDetect .Visibility .NONE )
323
- public static class OverstyrtInntektArbeidYtelseAbacDto extends OverstyrtInntektArbeidYtelseDto implements AbacDto {
324
-
325
- @ JsonCreator
326
- public OverstyrtInntektArbeidYtelseAbacDto (@ JsonProperty (value = "personIdent" , required = true ) PersonIdent person ,
327
- @ JsonProperty (value = "grunnlagReferanse" ) @ Valid @ NotNull UUID grunnlagReferanse ,
328
- @ JsonProperty (value = "koblingReferanse" ) @ Valid @ NotNull UUID koblingReferanse ,
329
- @ JsonProperty (value = "ytelseType" ) YtelseType ytelseType ,
330
- @ JsonProperty (value = "arbeidsforholdInformasjon" ) ArbeidsforholdInformasjon arbeidsforholdInformasjon ,
331
- @ JsonProperty (value = "overstyrt" ) InntektArbeidYtelseAggregatOverstyrtDto overstyrt ) {
332
- super (person , grunnlagReferanse , koblingReferanse , ytelseType , arbeidsforholdInformasjon , overstyrt );
309
+ public static class OverstyrtInntektArbeidYtelseDtoAbacDataSupplier implements Function <Object , AbacDataAttributter > {
310
+
311
+ @ Override
312
+ public AbacDataAttributter apply (Object obj ) {
313
+ var req = (OverstyrtInntektArbeidYtelseDto ) obj ;
314
+ return IdentDataAttributter .abacAttributterForPersonIdent (req .getPerson ());
333
315
}
316
+ }
317
+
318
+ public static class OverstyrGrunnlagRequestAbacDataSupplier implements Function <Object , AbacDataAttributter > {
334
319
335
320
@ Override
336
- public AbacDataAttributter abacAttributter () {
337
- return lagAbacAttributter (getPerson ());
321
+ public AbacDataAttributter apply (Object obj ) {
322
+ var req = (OverstyrGrunnlagRequest ) obj ;
323
+ return AbacDataAttributter .opprett ().leggTil (StandardAbacAttributtType .SAKSNUMMER , req .getSaksnummer ());
338
324
}
339
325
}
340
326
}
0 commit comments