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
Original file line number Diff line number Diff line change
Expand Up @@ -200,4 +200,12 @@ public void oppdaterFagsakStatus(Long fagsakId, FagsakStatus status) {
entityManager.flush();
}

public void fjernIkkedigitalFlagg(Long fagsakId){
Fagsak fagsak = finnEksaktFagsak(fagsakId);
// fjern flagg om det er en digital sak
fagsak.setIkkeDigitalBruker(false);
entityManager.persist(fagsak);
entityManager.flush();
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package no.nav.ung.sak.web.app.tjenester.fagsak;

import com.google.common.collect.ImmutableSet;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.headers.Header;
Expand Down Expand Up @@ -31,13 +30,19 @@
import no.nav.k9.felles.sikkerhet.abac.BeskyttetRessursResourceType;
import no.nav.k9.felles.sikkerhet.abac.StandardAbacAttributtType;
import no.nav.k9.felles.sikkerhet.abac.TilpassetAbacAttributt;
import no.nav.k9.prosesstask.api.ProsessTaskData;
import no.nav.k9.prosesstask.api.ProsessTaskTjeneste;
import no.nav.ung.kodeverk.behandling.BehandlingType;
import no.nav.ung.sak.behandling.FagsakTjeneste;
import no.nav.ung.sak.behandling.prosessering.task.TilbakeTilStartBehandlingTask;
import no.nav.ung.sak.behandling.revurdering.RevurderingTjeneste;
import no.nav.ung.sak.behandlingskontroll.FagsakYtelseTypeRef;
import no.nav.ung.sak.behandlingslager.aktør.Personinfo;
import no.nav.ung.sak.behandlingslager.aktør.PersoninfoBasis;
import no.nav.ung.sak.behandlingslager.behandling.Behandling;
import no.nav.ung.sak.behandlingslager.behandling.repository.BehandlingRepository;
import no.nav.ung.sak.behandlingslager.fagsak.Fagsak;
import no.nav.ung.sak.behandlingslager.fagsak.FagsakRepository;
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
import no.nav.ung.sak.kontrakt.AsyncPollingStatus;
import no.nav.ung.sak.kontrakt.ProsessTaskGruppeIdDto;
Expand All @@ -64,6 +69,7 @@
import java.util.stream.Collectors;

import static no.nav.k9.felles.sikkerhet.abac.BeskyttetRessursActionType.READ;
import static no.nav.ung.sak.økonomi.SendØkonomiOppdragTask.logger;

@Path("")
@ApplicationScoped
Expand All @@ -79,10 +85,15 @@ public class FagsakRestTjeneste {
public static final String BRUKER_PATH = PATH + "/bruker";
public static final String RETTIGHETER_PATH = PATH + "/rettigheter";

public static final String FJERN_IKKEDIGITAL_FLAGG = PATH + "/fjern-ikkedigital-flagg";

private FagsakApplikasjonTjeneste fagsakApplikasjonTjeneste;
private FagsakTjeneste fagsakTjeneste;
private BehandlingsoppretterTjeneste behandlingsoppretterTjeneste;
private boolean klageEnabled;
private BehandlingRepository behandlingRepository;
private ProsessTaskTjeneste taskTjeneste;
private FagsakRepository fagsakRepository;

public FagsakRestTjeneste() {
// For Rest-CDI
Expand All @@ -92,11 +103,14 @@ public FagsakRestTjeneste() {
public FagsakRestTjeneste(FagsakApplikasjonTjeneste fagsakApplikasjonTjeneste,
FagsakTjeneste fagsakTjeneste,
BehandlingsoppretterTjeneste behandlingsoppretterTjeneste,
@KonfigVerdi(value = "KLAGE_ENABLED", defaultVerdi = "false") boolean klageEnabled) {
@KonfigVerdi(value = "KLAGE_ENABLED", defaultVerdi = "false") boolean klageEnabled, BehandlingRepository behandlingRepository, ProsessTaskTjeneste taskTjeneste, FagsakRepository fagsakRepository) {
this.fagsakApplikasjonTjeneste = fagsakApplikasjonTjeneste;
this.fagsakTjeneste = fagsakTjeneste;
this.behandlingsoppretterTjeneste = behandlingsoppretterTjeneste;
this.klageEnabled = klageEnabled;
this.behandlingRepository = behandlingRepository;
this.taskTjeneste = taskTjeneste;
this.fagsakRepository = fagsakRepository;
}

@GET
Expand Down Expand Up @@ -242,6 +256,37 @@ public List<FagsakInfoDto> matchFagsaker(@Parameter(description = "Match kritier
return fagsaker;
}

@POST
@Path(FJERN_IKKEDIGITAL_FLAGG)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(description = "Setter en ikke-digital bruker til å være digital", tags = "fagsak", summary = ("Setter en ikke-digital bruker til å være digital"))
@BeskyttetRessurs(action = BeskyttetRessursActionType.UPDATE, resource = BeskyttetRessursResourceType.FAGSAK)
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
public Response fjernIkkedigitalFlagg(@NotNull @QueryParam("saksnummer") @Valid @TilpassetAbacAttributt(supplierClass = AbacAttributtSupplier.class) SaksnummerDto s) {
var fagsak = fagsakTjeneste.finnFagsakGittSaksnummer(s.getVerdi().getSaksnummer(), false);
if (fagsak.isEmpty()) {
return Response.status(Response.Status.NOT_FOUND).build();
}

if (!fagsak.get().erIkkeDigitalBruker()){
return Response.status(Response.Status.BAD_REQUEST).build();
}
fagsakRepository.fjernIkkedigitalFlagg(fagsak.get().getId());

final Optional<Behandling> behandling = finnBehandlingSomKanSendesTilbakeTilStart(s.getVerdi());
if (behandling.isEmpty()) {
logger.warn("Kunne ikke finne åpen behandling for: {}", s.getVerdi());
}
else {
final ProsessTaskData prosessTaskData = ProsessTaskData.forProsessTask(TilbakeTilStartBehandlingTask.class);
prosessTaskData.setCallIdFraEksisterende();
prosessTaskData.setBehandling(fagsak.get().getId(), behandling.get().getId(), fagsak.get().getAktørId().getId());
taskTjeneste.lagre(prosessTaskData);
}
return Response.ok().build();
}

private List<FagsakDto> tilDtoer(FagsakSamlingForBruker view) {
if (view.isEmpty()) {
return new ArrayList<>();
Expand Down Expand Up @@ -313,4 +358,20 @@ public AbacDataAttributter apply(Object obj) {
return AbacDataAttributter.opprett();
}
}

private Optional<Behandling> finnBehandlingSomKanSendesTilbakeTilStart(Saksnummer saksnummer) {
final List<Behandling> behandlinger = behandlingRepository.hentAbsoluttAlleBehandlingerForSaksnummer(saksnummer)
.stream()
.filter(Behandling::erYtelseBehandling)
.filter(b -> !b.erStatusFerdigbehandlet())
.toList();

if (behandlinger.isEmpty()) {
return Optional.empty();
}
if (behandlinger.size() > 1) {
throw new IllegalStateException("Flere åpne behandlinger på én fagsak er ikke støttet i denne tasken ennå.");
}
return Optional.of(behandlinger.get(0));
}
}
24 changes: 24 additions & 0 deletions web/src/main/resources/openapi-ts-client/ung-sak.openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -6841,6 +6841,30 @@
"tags" : [ "fagsak" ]
}
},
"/api/fagsak/fjern-ikkedigital-flagg" : {
"post" : {
"description" : "Setter en ikke-digital bruker til å være digital",
"operationId" : "fjernIkkedigitalFlagg",
"parameters" : [ {
"in" : "query",
"name" : "saksnummer",
"required" : true,
"schema" : {
"$ref" : "#/components/schemas/ung.sak.kontrakt.behandling.SaksnummerDto"
}
} ],
"responses" : {
"default" : {
"content" : {
"application/json" : { }
},
"description" : "default response"
}
},
"summary" : "Setter en ikke-digital bruker til å være digital",
"tags" : [ "fagsak" ]
}
},
"/api/fagsak/hendelse/innsending" : {
"post" : {
"description" : "Mottak av dokument.",
Expand Down