@@ -129,27 +129,51 @@ export class SignatureCollectionAdminClientService {
129
129
throw new Error ( 'Collection id input wrong' )
130
130
}
131
131
132
+ const candidates = await this . getApiWithAuth (
133
+ this . candidateApi ,
134
+ auth ,
135
+ ) . frambodGet ( {
136
+ sofnunID : parseInt ( collectionId ) ,
137
+ } )
138
+
139
+ const adminApi = await this . getApiWithAuth ( this . adminApi , auth )
140
+
132
141
const filteredAreas = areas
133
142
? collectionAreas . filter ( ( area ) =>
134
143
areas . flatMap ( ( a ) => a . areaId ) . includes ( area . id ) ,
135
144
)
136
145
: collectionAreas
137
146
138
- const candidacy = await this . getApiWithAuth (
139
- this . adminApi ,
140
- auth ,
141
- ) . adminFrambodPost ( {
142
- frambodRequestDTO : {
143
- sofnunID : parseInt ( id ) ,
144
- kennitala : owner . nationalId ,
145
- simi : owner . phone ,
146
- netfang : owner . email ,
147
- medmaelalistar : filteredAreas . map ( ( area ) => ( {
148
- svaediID : parseInt ( area . id ) ,
149
- listiNafn : `${ owner . name } - ${ area . name } ` ,
150
- } ) ) ,
151
- } ,
152
- } )
147
+ let candidacy = candidates . find ( ( c ) => c . kennitala === owner . nationalId )
148
+
149
+ // If no candidacy exists, create one
150
+ if ( ! candidacy ) {
151
+ candidacy = await adminApi . adminFrambodPost ( {
152
+ frambodRequestDTO : {
153
+ sofnunID : parseInt ( id ) ,
154
+ kennitala : owner . nationalId ,
155
+ simi : owner . phone ,
156
+ netfang : owner . email ,
157
+ medmaelalistar : filteredAreas . map ( ( area ) => ( {
158
+ svaediID : parseInt ( area . id ) ,
159
+ listiNafn : `${ owner . name } - ${ area . name } ` ,
160
+ } ) ) ,
161
+ } ,
162
+ } )
163
+ }
164
+ // Candidacy exists, add area
165
+ else {
166
+ await adminApi . adminMedmaelalistiPost ( {
167
+ medmaelalistarRequestDTO : {
168
+ frambodID : candidacy . id ,
169
+ medmaelalistar : filteredAreas . map ( ( area ) => ( {
170
+ svaediID : parseInt ( area . id ) ,
171
+ listiNafn : `${ owner . name } - ${ area . name } ` ,
172
+ } ) ) ,
173
+ } ,
174
+ } )
175
+ }
176
+
153
177
return {
154
178
slug : getSlug (
155
179
candidacy . id ?? '' ,
0 commit comments