From 468febeb8ceb8971cc02d789525d9b37f8267769 Mon Sep 17 00:00:00 2001 From: Dmitry Marokhonov Date: Tue, 24 Sep 2024 16:29:40 +0300 Subject: [PATCH] OY-4885: Rollback --- .../app/src/utils/form/createErrorBuilder.ts | 41 +++++++++++++++++++ .../validateOppilaitoksenOsaForm.ts | 7 +++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/app/src/utils/form/createErrorBuilder.ts b/src/main/app/src/utils/form/createErrorBuilder.ts index 1cdc11142..dd8f55865 100644 --- a/src/main/app/src/utils/form/createErrorBuilder.ts +++ b/src/main/app/src/utils/form/createErrorBuilder.ts @@ -1,5 +1,6 @@ import { differenceInMonths } from 'date-fns'; import _ from 'lodash'; +import _fp from 'lodash/fp'; import { formValueExists as exists, @@ -149,6 +150,43 @@ class ErrorBuilder { return this; } + //Jos oppilaitoksen osan hakijapalveluille on annettu yhteystietoja, on nimi pakollinen ainakin yhdellä kielellä. + validateHakijapalveluidenYhteystiedot( + path, + { message = null, languages = [] } = {} + ) { + console.log('path', path); + console.log('thus', this); + if (!this.isVisible(path)) { + return this; + } + + const hpy = this.getValue(path); + if (!hpy) { + return this; + } + + const pickTranslations = _fp.pick(languages || []); + const hasNonemptyKieliversio = v => + v && + Object.values(pickTranslations(v)).some(n => String(n).trim().length > 0); + + const validateYhteystiedot = (Object.values(hpy) || []).some(v => + hasNonemptyKieliversio(v) + ); + + if ( + validateYhteystiedot && + !Object.values(pickTranslations(hpy.nimi)).some( + n => String(n).trim().length > 0 + ) + ) { + languages.forEach(l => this.setError(`${path}.nimi.${l}`, message)); + } + + return this; + } + validateArrayMinLength( path, min, @@ -259,6 +297,9 @@ export const validateTranslations = bindValidator('validateTranslations'); export const validateUrl = bindValidator('validateUrl'); export const validateInteger = bindValidator('validateInteger'); export const validateArchiveDate = bindValidator('validateArchiveDate'); +export const validateHakijapalveluidenYhteystiedot = bindValidator( + 'validateHakijapalveluidenYhteystiedot' +); export const createErrorBuilder = ( values, diff --git a/src/main/app/src/utils/oppilaitoksenOsa/validateOppilaitoksenOsaForm.ts b/src/main/app/src/utils/oppilaitoksenOsa/validateOppilaitoksenOsaForm.ts index ccb6348da..a9c658df9 100644 --- a/src/main/app/src/utils/oppilaitoksenOsa/validateOppilaitoksenOsaForm.ts +++ b/src/main/app/src/utils/oppilaitoksenOsa/validateOppilaitoksenOsaForm.ts @@ -2,6 +2,7 @@ import _fp from 'lodash/fp'; import createErrorBuilder, { validateArrayMinLength, + validateHakijapalveluidenYhteystiedot, } from '#/src/utils/form/createErrorBuilder'; import { getKielivalinta, @@ -16,7 +17,11 @@ export const validateOppilaitoksenOsaForm = values => { validateArrayMinLength('kieliversiot', 1), validateIfJulkaistu(eb => eb.validateTranslations('perustiedot.wwwSivuUrl', kieliversiot) - ) + ), + validateHakijapalveluidenYhteystiedot('hakijapalveluidenYhteystiedot', { + message: 'validointivirheet.nimiJollainKielellaPakollinen', + languages: kieliversiot, + }) )(createErrorBuilder(values)) .getErrors(); };