Skip to content

Commit

Permalink
KJHH-2337 move yksilointi to henkilo controller from oppija controller
Browse files Browse the repository at this point in the history
  • Loading branch information
tokarls committed Nov 20, 2023
1 parent d7aa9a8 commit f26606d
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ public HenkiloReadDto getByHetu(@PathVariable String hetu,
@RequestMapping(value = "", method = RequestMethod.POST)
public String createHenkiloFromHenkiloCreateDto(
@ApiParam("Henkilön sukupuolen kelvolliset arvot löytyvät sukupuoli koodistosta.") @RequestBody @Validated HenkiloCreateDto henkilo) {
return this.henkiloModificationService.createHenkilo(henkilo).getOidHenkilo();
return this.henkiloModificationService.createAndYksiloiHenkilo(henkilo).getOidHenkilo();
}

@ApiOperation(value = "Henkilön olemassaolon tarkistus", authorizations = @Authorization("onr"), notes = "Tarkistaa henkilön olemassa olon annetun syötteen pohjalta.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ public interface HenkiloModificationService {

HenkiloDto createHenkilo(HenkiloCreateDto henkiloDto);

Henkilo createAndYksiloiHenkilo(HenkiloCreateDto henkiloDto);

boolean isHenkiloValidForHetuttomanYksilointi(Henkilo henkilo);

Henkilo createHenkilo(HuoltajaCreateDto huoltajaCreateDto, String kasittelijaOid);

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ public interface YksilointiService {
*/
Henkilo yksiloiManuaalisesti(final String henkiloOid);

boolean isHenkiloValidForHetuttomanYksilointi(Henkilo henkilo);

/**
* Virkailijan käynnistämä hetuttoman henkilön yksilöinti.
* @param henkiloOid Henkilön oid
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ public HenkiloUpdateDto updateHenkilo(HenkiloUpdateDto henkiloUpdateDto) {

this.mapper.map(henkiloUpdateDto, henkiloSaved);
// varmistetaan että tyhjä hetu tallentuu nullina
if (StringUtils.isEmpty(henkiloSaved.getHetu())) {
if (!StringUtils.hasLength(henkiloSaved.getHetu())) {
henkiloUpdateDto.setHetu(null);
henkiloSaved.setHetu(null);
}
Expand Down Expand Up @@ -295,7 +295,7 @@ public Henkilo update(Henkilo henkilo) {
setSyntymaaikaAndSukupuoliFromHetu(henkilo);

// varmistetaan että tyhjä hetu tallentuu nullina
if (StringUtils.isEmpty(henkilo.getHetu())) {
if (!StringUtils.hasLength(henkilo.getHetu())) {
henkilo.setHetu(null);
}

Expand Down Expand Up @@ -405,6 +405,38 @@ public List<HenkiloPerustietoDto> findOrCreateHenkiloFromPerustietoDto(List<Henk
.collect(toList());
}

@Override
@Transactional
public Henkilo createAndYksiloiHenkilo(HenkiloCreateDto henkiloDto) {
Henkilo henkilo = this.mapper.map(henkiloDto, Henkilo.class);
Henkilo created = this.createHenkilo(henkilo);
if (isHenkiloValidForHetuttomanYksilointi(created)) {
HenkiloDuplikaattiCriteria criteria = new HenkiloDuplikaattiCriteria(created.getEtunimet(),
created.getKutsumanimi(), created.getSukunimi(), created.getSyntymaaika());
int duplikaatit = this.henkiloDataRepository.findDuplikaatitCount(criteria, created.getOidHenkilo());
if (duplikaatit < 1) {
created.setYksiloity(true);
this.henkiloDataRepository.save(created);
}
}
return created;
}

@Override
public boolean isHenkiloValidForHetuttomanYksilointi(Henkilo henkilo) {
return henkilo.getHetu() == null
&& henkilo.isYksiloityVTJ() == false
&& henkilo.isYksiloity() == false
&& henkilo.isDuplicate() == false
&& StringUtils.hasLength(henkilo.getEtunimet())
&& StringUtils.hasLength(henkilo.getSukunimi())
&& StringUtils.hasLength(henkilo.getKutsumanimi())
&& StringUtils.hasLength(henkilo.getSukupuoli())
&& henkilo.getSyntymaaika() != null
&& henkilo.getAidinkieli() != null
&& henkilo.getKansalaisuus() != null && henkilo.getKansalaisuus().size() > 0;
}

@Override
@Transactional
public HenkiloDto createHenkilo(HenkiloCreateDto henkiloDto) {
Expand All @@ -421,7 +453,7 @@ public Henkilo createHenkilo(HuoltajaCreateDto huoltajaCreateDto, String kasitte
throw new UnprocessableEntityException(errors);
}
Henkilo henkilo = this.mapper.map(huoltajaCreateDto, Henkilo.class);
return this.createHenkilo(henkilo, kasittelijaOid, StringUtils.isEmpty(henkilo.getHetu()));
return this.createHenkilo(henkilo, kasittelijaOid, !StringUtils.hasLength(henkilo.getHetu()));
}

@Override
Expand All @@ -448,7 +480,7 @@ public Henkilo createHenkilo(Henkilo henkiloCreate, String kasittelijaOid, boole
}

// varmistetaan että tyhjä hetu tallentuu nullina
if (StringUtils.isEmpty(henkiloCreate.getHetu())) {
if (!StringUtils.hasLength(henkiloCreate.getHetu())) {
henkiloCreate.setHetu(null);
}
setSyntymaaikaAndSukupuoliFromHetu(henkiloCreate);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ public class OppijaServiceImpl implements OppijaService {
private final UserDetailsHelper userDetailsHelper;
private final PermissionChecker permissionChecker;
private final ObjectMapper objectMapper;
private final YksilointiService yksilointiService;

@Override
public String create(OppijaCreateDto dto) {
Expand All @@ -63,15 +62,6 @@ public String create(OppijaCreateDto dto) {
organisaatiot.forEach(entity::addOrganisaatio);

entity = henkiloModificationService.createHenkilo(entity, kayttajaOid, true);
if (yksilointiService.isHenkiloValidForHetuttomanYksilointi(entity)) {
HenkiloDuplikaattiCriteria criteria = new HenkiloDuplikaattiCriteria(entity.getEtunimet(),
entity.getKutsumanimi(), entity.getSukunimi(), entity.getSyntymaaika());
int duplikaatit = henkiloRepository.findDuplikaatitCount(criteria, entity.getOidHenkilo());
if (duplikaatit < 1) {
entity.setYksiloity(true);
henkiloRepository.save(entity);
}
}

return entity.getOidHenkilo();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,21 +149,6 @@ public Henkilo yksiloiManuaalisesti(final String henkiloOid) {
return yksiloiHenkilo(henkilo);
}

@Override
public boolean isHenkiloValidForHetuttomanYksilointi(Henkilo henkilo) {
return henkilo.getHetu() == null
&& henkilo.isYksiloityVTJ() == false
&& henkilo.isYksiloity() == false
&& henkilo.isDuplicate() == false
&& StringUtils.hasLength(henkilo.getEtunimet())
&& StringUtils.hasLength(henkilo.getSukunimi())
&& StringUtils.hasLength(henkilo.getKutsumanimi())
&& StringUtils.hasLength(henkilo.getSukupuoli())
&& henkilo.getSyntymaaika() != null
&& henkilo.getAidinkieli() != null
&& henkilo.getKansalaisuus() != null && henkilo.getKansalaisuus().size() > 0;
}

@Override
@Transactional
public Henkilo hetuttomanYksilointi(String henkiloOid) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fi.vm.sade.oppijanumerorekisteri.controllers;

import com.fasterxml.jackson.databind.ObjectMapper;

import fi.vm.sade.auditlog.Target;
import fi.vm.sade.oppijanumerorekisteri.FilesystemHelper;
import fi.vm.sade.oppijanumerorekisteri.OppijanumerorekisteriServiceApplication;
Expand All @@ -11,7 +12,10 @@
import fi.vm.sade.oppijanumerorekisteri.dto.*;
import fi.vm.sade.oppijanumerorekisteri.exceptions.ConflictException;
import fi.vm.sade.oppijanumerorekisteri.exceptions.NotFoundException;
import fi.vm.sade.oppijanumerorekisteri.mappers.EntityUtils;
import fi.vm.sade.oppijanumerorekisteri.models.Henkilo;
import fi.vm.sade.oppijanumerorekisteri.models.Kansalaisuus;
import fi.vm.sade.oppijanumerorekisteri.models.Kielisyys;
import fi.vm.sade.oppijanumerorekisteri.repositories.OrganisaatioRepository;
import fi.vm.sade.oppijanumerorekisteri.services.*;
import fi.vm.sade.oppijanumerorekisteri.services.impl.PermissionCheckerImpl;
Expand Down Expand Up @@ -335,9 +339,19 @@ public void createHenkiloFromHenkiloCreateDto() throws Exception {
.yhteystietoArvo("[email protected]")
.build())
.build()));
HenkiloDto henkiloDtoOutput = DtoUtils.createHenkiloDto("arpa", "arpa", "kuutio", "081296-967T", "1.2.3.4.5",
false, "fi", "suomi", "246", "1.2.3.4.1", "[email protected]");
given(this.henkiloModificationService.createHenkilo(any(HenkiloCreateDto.class))).willReturn(henkiloDtoOutput);
Henkilo henkiloDtoOutput = Henkilo.builder()
.oidHenkilo("1.2.3.4.5")
.hetu("081296-967T")
.etunimet("arpa")
.kutsumanimi("arpa")
.sukunimi("kuutio")
.aidinkieli(new Kielisyys("fi", "suomi"))
.asiointiKieli(new Kielisyys("fi", "suomi"))
.passivoitu(false)
.kansalaisuus(Set.of(new Kansalaisuus("246")))
.yhteystiedotRyhma(Set.of(EntityUtils.createYhteystiedotRyhma("[email protected]")))
.build();
given(this.henkiloModificationService.createAndYksiloiHenkilo(any(HenkiloCreateDto.class))).willReturn(henkiloDtoOutput);
this.mvc.perform(post("/henkilo").content(this.objectMapper.writeValueAsString(henkiloDtoInput))
.with(csrf())
.contentType(MediaType.APPLICATION_JSON))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public void setup() {
organisaatioServiceMock, mapperMock, henkiloRepositoryMock,
tuontiRepositoryMock,
organisaatioRepositoryMock, henkiloViiteRepositoryMock, userDetailsHelperMock,
permissionCheckerMock, objectMapperMock, yksilointiService);
permissionCheckerMock, objectMapperMock);
}

@Test
Expand Down

0 comments on commit f26606d

Please sign in to comment.