Skip to content
This repository has been archived by the owner on Jan 2, 2024. It is now read-only.

Commit

Permalink
AE-2029: Fix henkilöosapuoli and yritysosapuoli id collision
Browse files Browse the repository at this point in the history
- When handling osapuoli-specific-data in toimenpide, also check the osapuolitype (henkilo / yritys) in addition to the osapuoli-id
-
  • Loading branch information
Juholei committed Nov 16, 2023
1 parent d40c536 commit c6a58c4
Show file tree
Hide file tree
Showing 8 changed files with 253 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,21 @@
)
);
const osapuoliSpecificDataIndexForOsapuoli = osapuoliId =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(toimenpide, osapuoliId);
const osapuoliSpecificDataIndexForOsapuoli = osapuoli =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(
toimenpide,
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
);
const previewOsapuoliDocument = osapuoli => _ => {
// Include osapuoli-specific-data for only the current osapuoli in the
// preview api call and validation so unfilled osapuoli data doesn't
// affect previewing filled ones
const previewToimenpide = Toimenpiteet.toimenpideForOsapuoli(
toimenpide,
osapuoli.id
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
);
preview(
osapuoli.type.preview(id, osapuoli.id, previewToimenpide),
Expand Down Expand Up @@ -138,17 +143,17 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'document'
])} />
{#if Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id)}
{#if Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id, Osapuolet.getOsapuoliType(osapuoli))}
<div class="w-full py-4">
<Select2
bind:model={toimenpide}
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'recipient-answered'
])}
format={value =>
Expand All @@ -158,7 +163,7 @@
items={[true, false]} />
</div>

{#if R.path(['type-specific-data', 'osapuoli-specific-data', osapuoliSpecificDataIndexForOsapuoli(osapuoli.id), 'recipient-answered'], toimenpide)}
{#if R.path(['type-specific-data', 'osapuoli-specific-data', osapuoliSpecificDataIndexForOsapuoli(osapuoli), 'recipient-answered'], toimenpide)}
<div class="w-full py-4">
<Textarea
id={'toimenpide.answer-commentary-fi'}
Expand All @@ -168,7 +173,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-fi'
])}
required
Expand All @@ -178,7 +183,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-fi'
],
schema
Expand All @@ -194,7 +199,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-sv'
])}
required
Expand All @@ -204,7 +209,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-sv'
],
schema
Expand All @@ -221,7 +226,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-fi'
])}
required
Expand All @@ -231,7 +236,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-fi'
],
schema
Expand All @@ -248,7 +253,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-sv'
])}
required
Expand All @@ -258,7 +263,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-sv'
],
schema
Expand All @@ -274,7 +279,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'hallinto-oikeus-id'
])}
modelToItem={Maybe.fold(
Expand All @@ -290,7 +295,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'hallinto-oikeus-id'
],
schema
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,21 @@
)
);
const osapuoliSpecificDataIndexForOsapuoli = osapuoliId =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(toimenpide, osapuoliId);
const osapuoliSpecificDataIndexForOsapuoli = osapuoli =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(
toimenpide,
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
);
const previewOsapuoliDocument = osapuoli => _ => {
// Include osapuoli-specific-data for only the current osapuoli in the
// preview api call and validation so unfilled osapuoli data doesn't
// affect previewing filled ones
const previewToimenpide = Toimenpiteet.toimenpideForOsapuoli(
toimenpide,
osapuoli.id
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
);
preview(
osapuoli.type.preview(id, osapuoli.id, previewToimenpide),
Expand Down Expand Up @@ -138,17 +143,17 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'document'
])} />
{#if Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id)}
{#if Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id, Osapuolet.getOsapuoliType(osapuoli))}
<div class="w-full py-4">
<Select2
bind:model={toimenpide}
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'recipient-answered'
])}
format={value =>
Expand All @@ -167,7 +172,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-fi'
])}
required
Expand All @@ -177,7 +182,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-fi'
],
schema
Expand All @@ -193,7 +198,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-sv'
])}
required
Expand All @@ -203,7 +208,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'answer-commentary-sv'
],
schema
Expand All @@ -220,7 +225,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-fi'
])}
required
Expand All @@ -230,7 +235,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-fi'
],
schema
Expand All @@ -247,7 +252,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-sv'
])}
required
Expand All @@ -257,7 +262,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'statement-sv'
],
schema
Expand All @@ -273,7 +278,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'hallinto-oikeus-id'
])}
modelToItem={Maybe.fold(
Expand All @@ -289,7 +294,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'hallinto-oikeus-id'
],
schema
Expand Down
25 changes: 15 additions & 10 deletions src/pages/valvonta-kaytto/notice-bailiff-osapuolet-table.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@
R.prop('rooli-id')
);
const osapuoliSpecificDataIndexForOsapuoli = osapuoliId =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(toimenpide, osapuoliId);
const osapuoliSpecificDataIndexForOsapuoli = osapuoli =>
Toimenpiteet.osapuoliSpecificDataIndexForOsapuoli(
toimenpide,
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
);
</script>

<style type="text/postcss">
Expand Down Expand Up @@ -102,13 +106,13 @@
{/if}
</td>
<td class="etp-table--td court-container">
{#if Osapuolet.isOmistaja(osapuoli) && Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id)}
{#if Osapuolet.isOmistaja(osapuoli) && Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id, Osapuolet.getOsapuoliType(osapuoli))}
<Select
bind:model={toimenpide}
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'karajaoikeus-id'
])}
modelToItem={Maybe.fold(
Expand All @@ -126,7 +130,7 @@
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'karajaoikeus-id'
],
schema
Expand All @@ -139,22 +143,22 @@
{/if}
</td>
<td class="etp-table--td">
{#if Osapuolet.isOmistaja(osapuoli) && Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id)}
{#if Osapuolet.isOmistaja(osapuoli) && Toimenpiteet.documentExistsForOsapuoli(toimenpide, osapuoli.id, Osapuolet.getOsapuoliType(osapuoli))}
<Input
bind:model={toimenpide}
required={true}
type="email"
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'haastemies-email'
])}
validators={R.path(
[
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'haastemies-email'
],
schema
Expand Down Expand Up @@ -184,7 +188,8 @@
role="button"
hidden={!Toimenpiteet.documentExistsForOsapuoli(
toimenpide,
osapuoli.id
osapuoli.id,
Osapuolet.getOsapuoliType(osapuoli)
)}
on:click|stopPropagation={disabled ||
preview(
Expand All @@ -208,7 +213,7 @@
lens={R.lensPath([
'type-specific-data',
'osapuoli-specific-data',
osapuoliSpecificDataIndexForOsapuoli(osapuoli.id),
osapuoliSpecificDataIndexForOsapuoli(osapuoli),
'document'
])} />
{/if}
Expand Down
10 changes: 10 additions & 0 deletions src/pages/valvonta-kaytto/osapuolet.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,13 @@ export const toimitustapaErrorKey = {
? Maybe.Some('email')
: Maybe.None()
};

/**
* Osapuoli is henkilo if the object has props etunimi and sukunimi, otherwise it's yritys
* @param {Object} osapuoli
* @returns {('henkilo'|'yritys')}
*/
export const getOsapuoliType = osapuoli =>
R.has('etunimi', osapuoli) && R.has('sukunimi', osapuoli)
? 'henkilo'
: 'yritys';
Loading

0 comments on commit c6a58c4

Please sign in to comment.