Skip to content

Commit

Permalink
Slett forsendelser hvis behandlingstatus er feilregistrert
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 committed Sep 15, 2023
1 parent 4782830 commit a322693
Show file tree
Hide file tree
Showing 13 changed files with 171 additions and 54 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/deploy_feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
branches:
- '**'
- '!main'
- '!dependabot/**'

env:
GITHUB_USERNAME: x-access-token
Expand All @@ -17,7 +18,7 @@ jobs:
name: Build with maven and docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
Expand All @@ -44,7 +45,7 @@ jobs:
name: Run tests
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
Expand All @@ -63,7 +64,7 @@ jobs:
needs: build

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
path: deploy
- name: Deploy to dev-gcp for feature.yaml
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@ env:

jobs:
build:
if: github.event.pull_request.draft == false && ${{ github.actor != 'dependabot[bot]' }}
permissions:
contents: "read"
id-token: "write"
name: Build with maven and docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
Expand All @@ -42,7 +43,7 @@ jobs:
name: Run tests
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
Expand All @@ -60,7 +61,7 @@ jobs:
name: Deploy main
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
path: deploy
- name: Deploy main branch to dev-gcp
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: Build with maven and docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
Expand Down Expand Up @@ -43,7 +43,7 @@ jobs:
needs: build

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
path: deploy
- uses: nais/deploy/actions/deploy@v1
Expand All @@ -64,7 +64,7 @@ jobs:
contents: write
needs: deploy
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Push latest image tag as github tag
id: tag_version
uses: mathieudutour/[email protected]
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/rollback_prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
name: Find tag to deploy

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: NAIS login
uses: nais/login@v0
id: login
Expand All @@ -30,16 +30,16 @@ jobs:
- id: deploy_version
name: Find deploy version
run: |
git fetch --all --tags
echo ${GITHUB_EVENT_NAME}
REPO_NAME=${GITHUB_REPOSITORY/$GITHUB_REPOSITORY_OWNER\//}
DEPLOY_TAG=${{ github.event.inputs.deploy_tag }}
if [ -z "$INPUT_TAG" ]; then
echo "NULL";
DEPLOY_TAG=$(git tag -l | sort -V | tail -2 | head -1)
fi
echo "IMAGE=${{ steps.login.outputs.registry }}/$REPO_NAME:$DEPLOY_TAG" >> $GITHUB_OUTPUT
echo "DEPLOY_TAG=$DEPLOY_TAG" >> $GITHUB_OUTPUT
git fetch --all --tags
echo ${GITHUB_EVENT_NAME}
REPO_NAME=${GITHUB_REPOSITORY/$GITHUB_REPOSITORY_OWNER\//}
DEPLOY_TAG=${{ github.event.inputs.deploy_tag }}
if [ -z "$INPUT_TAG" ]; then
echo "NULL";
DEPLOY_TAG=$(git tag -l | sort -V | tail -2 | head -1)
fi
echo "IMAGE=${{ steps.login.outputs.registry }}/$REPO_NAME:$DEPLOY_TAG" >> $GITHUB_OUTPUT
echo "DEPLOY_TAG=$DEPLOY_TAG" >> $GITHUB_OUTPUT
outputs:
image: ${{ steps.deploy_version.outputs.IMAGE }}
version: ${{ steps.deploy_version.outputs.DEPLOY_TAG }}
Expand All @@ -50,7 +50,7 @@ jobs:
needs: prepare_deploy

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: nais/deploy/actions/deploy@v1
env:
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
Expand Down
2 changes: 2 additions & 0 deletions initEnv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
kubectx dev-gcp
kubectl exec --tty deployment/bidrag-behandling printenv | grep -E 'AZURE_APP_CLIENT_ID|AZURE_APP_CLIENT_SECRET|TOKEN_X|AZURE_OPENID_CONFIG_TOKEN_ENDPOINT|AZURE_APP_TENANT_ID|AZURE_APP_WELL_KNOWN_URL|_URL|SCOPE' > src/test/resources/application-lokal-nais-secrets.properties
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ class ForsendelseController(private val forsendelseService: ForsendelseService)
@RequestBody(required = true)
request: InitalizeForsendelseRequest,
): List<String> {
return forsendelseService.opprettForsendelse(request)
return forsendelseService.slettEllerOpprettForsendelse(request)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,6 @@ import no.nav.bidrag.domain.enums.EngangsbelopType
import no.nav.bidrag.domain.enums.StonadType
import no.nav.bidrag.domain.enums.VedtakType

data class DokumentDto(
val tittel: String? = null,
val dokumentmalId: String? = null,
val bestillDokument: Boolean? = null,
val språk: String? = null,
val arkivsystem: String? = null,
)

data class BehandlingInfoDto(
val vedtakId: Long? = null,
val behandlingId: Long? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,23 @@ import no.nav.bidrag.domain.ident.PersonIdent

data class InitalizeForsendelseRequest(
@field:NotBlank(message = "Saksnummer kan ikke være blank")
@field:Size(max = 7, message = "Saks nummer kan ikke være lengre enn 7 tegn")
@field:Size(max = 7, message = "Saksnummer kan ikke være lengre enn 7 tegn")
val saksnummer: String,
val behandlingInfo: BehandlingInfoDto,
val enhet: String,
val tema: String? = null,
val roller: List<ForsendelseRolleDto>,
val behandlingStatus: BehandlingStatus? = null,
)

data class ForsendelseRolleDto(
valdselsnummer: PersonIdent,
val type: Rolletype,
)

//TODO: Flytt dette hvis det blir også brukt i Behandling domain objektet
enum class BehandlingStatus {
OPPRETTET,
ENDRET,
FEILREGISTRERT
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class VedtakHendelseListener(
}

private fun opprettForsendelse(vedtak: VedtakHendelse, behandling: Behandling) {
forsendelseService.opprettForsendelse(
forsendelseService.slettEllerOpprettForsendelse(
InitalizeForsendelseRequest(
saksnummer = vedtak.saksnummer,
enhet = vedtak.enhetId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class BehandlingService(
}

private fun opprettForsendelseForBehandling(behandling: Behandling) {
forsendelseService.opprettForsendelse(
forsendelseService.slettEllerOpprettForsendelse(
InitalizeForsendelseRequest(
saksnummer = behandling.saksnummer,
enhet = behandling.behandlerEnhet,
Expand All @@ -47,6 +47,7 @@ class BehandlingService(
),
)
}

fun oppdaterBehandling(
behandlingId: Long,
virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null,
Expand All @@ -61,7 +62,8 @@ class BehandlingService(
behandlingRepository.findBehandlingById(behandlingId)
.orElseThrow { `404`(behandlingId) }
.let {
it.virkningsTidspunktBegrunnelseMedIVedtakNotat = virkningsTidspunktBegrunnelseMedIVedtakNotat
it.virkningsTidspunktBegrunnelseMedIVedtakNotat =
virkningsTidspunktBegrunnelseMedIVedtakNotat
it.virkningsTidspunktBegrunnelseKunINotat = virkningsTidspunktBegrunnelseKunINotat
it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat
it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat
Expand Down Expand Up @@ -113,7 +115,13 @@ class BehandlingService(
virkningsTidspunktBegrunnelseKunINotat: String?,
virkningsTidspunktBegrunnelseMedIVedtakNotat: String?,
) =
behandlingRepository.updateVirkningsTidspunkt(behandlingId, aarsak, virkningsDato, virkningsTidspunktBegrunnelseKunINotat, virkningsTidspunktBegrunnelseMedIVedtakNotat)
behandlingRepository.updateVirkningsTidspunkt(
behandlingId,
aarsak,
virkningsDato,
virkningsTidspunktBegrunnelseKunINotat,
virkningsTidspunktBegrunnelseMedIVedtakNotat
)

fun updateBoforhold(
behandlingId: Long,
Expand All @@ -140,5 +148,6 @@ class BehandlingService(
)

@Transactional
fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) = behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId)
fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) =
behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import no.nav.bidrag.behandling.consumer.BidragTilgangskontrollConsumer
import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo
import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo
import no.nav.bidrag.behandling.dto.forsendelse.BehandlingInfoDto
import no.nav.bidrag.behandling.dto.forsendelse.BehandlingStatus
import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto
import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.dto.forsendelse.MottakerDto
Expand All @@ -28,7 +29,22 @@ class ForsendelseService(
private val ikkeOpprettVarslingForForskuddMedType =
listOf(VedtakType.FASTSETTELSE, VedtakType.ENDRING)

fun opprettForsendelse(request: InitalizeForsendelseRequest): List<String> {
fun slettEllerOpprettForsendelse(request: InitalizeForsendelseRequest): List<String> {
if (request.behandlingStatus == BehandlingStatus.FEILREGISTRERT) {
return slettForsendelse(request)
}

return opprettForsendelse(request)
}

private fun slettForsendelse(request: InitalizeForsendelseRequest): List<String> {
return slettVarselbrevUnderOpprettelse(
request.saksnummer,
request.behandlingInfo.soknadId
).map { it.toString() }
}

private fun opprettForsendelse(request: InitalizeForsendelseRequest): List<String> {
val opprettRequestTemplate = OpprettForsendelseForespørsel(
behandlingInfo = request.behandlingInfo
.copy(
Expand All @@ -45,7 +61,7 @@ class ForsendelseService(
val opprettForRoller = opprettForRoller(request.roller, request.behandlingInfo)
log.info {
"Oppretter forsendelse ${request.behandlingInfo.typeForsendelse()}brev " +
"for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}"
"for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}"
}
val opprettetForsendelser = mutableListOf<String>()
opprettForRoller.forEach {
Expand All @@ -69,15 +85,16 @@ class ForsendelseService(
return opprettetForsendelser
}

fun slettVarselbrevUnderOpprettelse(saksnummer: String, soknadId: Long) {
private fun slettVarselbrevUnderOpprettelse(saksnummer: String, soknadId: Long): List<Long> {
val forsendelser = bidragForsendelseConsumer.hentForsendelserISak(saksnummer)
forsendelser
return forsendelser
.filter { it.forsendelseType == ForsendelseTypeTo.UTGÅENDE }
.filter { it.status == ForsendelseStatusTo.UNDER_OPPRETTELSE && it.behandlingInfo?.soknadId?.isNotEmpty() == true }
.filter { it.behandlingInfo?.soknadId == soknadId.toString() && !it.behandlingInfo.erFattet }
.forEach {
.map {
bidragForsendelseConsumer.slettForsendelse(it.forsendelseId)
log.info { "Slettet forsendelse ${it.forsendelseId} for varselbrev som var under opprettelse" }
it.forsendelseId
}
}

Expand All @@ -86,9 +103,9 @@ class ForsendelseService(
val erFattet = behandlingInfo.erFattetBeregnet != null
if (erFattet) return true
return !(
behandlingInfo.stonadType == StonadType.FORSKUDD &&
ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType)
)
behandlingInfo.stonadType == StonadType.FORSKUDD &&
ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType)
)
}

private fun opprettForRoller(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import io.kotest.matchers.shouldBe
import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo
import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo
import no.nav.bidrag.behandling.dto.forsendelse.BehandlingInfoDto
import no.nav.bidrag.behandling.dto.forsendelse.BehandlingStatus
import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.utils.ROLLE_BA_1
import no.nav.bidrag.behandling.utils.ROLLE_BM
Expand Down Expand Up @@ -213,4 +214,50 @@ class ForsendelseControllerTest : KontrollerTestRunner() {
stubUtils.Verify().forsendelseSlettet("1")
stubUtils.Verify().forsendelseSlettet("2")
}

@Test
fun `Skal slette forsendelser for varsel hvis behandling er feilregistrert`() {
val forsendelseId = "213123213123"

stubUtils.stubOpprettForsendelse(forsendelseId)
stubUtils.stubSlettForsendelse()
stubUtils.stubHentForsendelserForSak(
listOf(
opprettForsendelseResponsUnderOpprettelse(1),
opprettForsendelseResponsUnderOpprettelse(2),
opprettForsendelseResponsUnderOpprettelse(3).copy(forsendelseType = ForsendelseTypeTo.NOTAT),
opprettForsendelseResponsUnderOpprettelse(4).copy(status = ForsendelseStatusTo.UNDER_PRODUKSJON),
),
)
stubUtils.stubTilgangskontrollTema()
val response = httpHeaderTestRestTemplate.exchange(
"${rootUri()}/forsendelse/init",
HttpMethod.POST,
HttpEntity(
InitalizeForsendelseRequest(
saksnummer = SAKSNUMMER,
behandlingStatus = BehandlingStatus.FEILREGISTRERT,
enhet = BidragEnhet.ENHET_FARSKAP,
behandlingInfo = BehandlingInfoDto(
soknadId = SOKNAD_ID,
stonadType = StonadType.FORSKUDD,
vedtakId = 1,
),
roller = listOf(
ROLLE_BM,
ROLLE_BP,
ROLLE_BA_1,
),
),
),
List::class.java,
)

response.statusCode shouldBe HttpStatus.OK
response.body shouldBe listOf("1", "2")
stubUtils.Verify().opprettForsendelseKaltAntallGanger(0)
stubUtils.Verify().forsendelseHentetForSak(SAKSNUMMER)
stubUtils.Verify().forsendelseSlettet("1")
stubUtils.Verify().forsendelseSlettet("2")
}
}
Loading

0 comments on commit a322693

Please sign in to comment.