From f0acdaf2549ecd30bdbe3d3ed212cbcc03e668cc Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Tue, 16 Jul 2024 14:51:44 +0200 Subject: [PATCH] Add custom organisation name --- .../onboarding/OrganisationAddress.vue | 2 +- client/src/consts.ts | 19 ++++++ .../src/pages/onboarding/AccountProfile.vue | 60 +++++++++++++------ .../pages/onboarding/vv/CheckoutAddress.vue | 19 ++++-- client/src/services/onboarding.ts | 13 ++++ server/vbv_lernwelt/course/consts.py | 7 +++ 6 files changed, 96 insertions(+), 24 deletions(-) create mode 100644 client/src/consts.ts diff --git a/client/src/components/onboarding/OrganisationAddress.vue b/client/src/components/onboarding/OrganisationAddress.vue index b8b59889..e56e33cd 100644 --- a/client/src/components/onboarding/OrganisationAddress.vue +++ b/client/src/components/onboarding/OrganisationAddress.vue @@ -34,7 +34,7 @@ const orgAddress = computed({ for="company-name" class="block text-sm font-medium leading-6 text-gray-900" > - {{ $t("a.Name") }} + {{ $t("a.Firmenname") }}
(""); + const selectedOrganisation = ref({ id: 0, name: t("a.Auswählen"), @@ -35,7 +38,11 @@ watch( ); const validOrganisation = computed(() => { - return selectedOrganisation.value.id !== 0; + const organisationSelected = selectedOrganisation.value.id !== 0; + const organisationNameSet = + !isOtherOrganisation(selectedOrganisation.value.id) || + !!organisationDetailName.value.trim(); + return organisationSelected && organisationNameSet; }); const avatarError = ref(false); @@ -56,15 +63,21 @@ async function avatarUpload(e: Event) { } } -watch(selectedOrganisation, async (organisation) => { +async function updateUserProfile() { await user.updateUserProfile({ - organisation: organisation.id, + organisation: selectedOrganisation.value.id, + organisation_detail_name: organisationDetailName.value.trim(), }); -}); +} const nextRoute = computed(() => { return profileNextRoute(route.params.courseType); }); + +async function navigateNextRoute() { + await updateUserProfile(); + await router.push({ name: nextRoute.value }); +} diff --git a/client/src/pages/onboarding/vv/CheckoutAddress.vue b/client/src/pages/onboarding/vv/CheckoutAddress.vue index f8ff17ef..76e5a6ed 100644 --- a/client/src/pages/onboarding/vv/CheckoutAddress.vue +++ b/client/src/pages/onboarding/vv/CheckoutAddress.vue @@ -13,6 +13,12 @@ import DatatransCembraDeviceFingerprint from "@/components/onboarding/DatatransC import { getLocalSessionKey } from "@/statistics"; import log from "loglevel"; import { normalizeSwissPhoneNumber, validatePhoneNumber } from "@/utils/phone"; +import { + ORGANISATION_NO_COMPANY_ID, + ORGANISATION_OTHER_BROKER_ID, + ORGANISATION_OTHER_HEALTH_INSURANCE_ID, + ORGANISATION_OTHER_PRIVATE_INSURANCE_ID, +} from "@/consts"; const props = defineProps({ courseType: { @@ -31,11 +37,14 @@ const userOrganisationName = computed(() => { } // Those IDs do not represent a company - // 1: Other broker - // 2: Other insurance - // 3: Other private insurance - // 31: No company relation - if ([1, 2, 3, 31].includes(user.organisation)) { + if ( + [ + ORGANISATION_OTHER_BROKER_ID, + ORGANISATION_OTHER_HEALTH_INSURANCE_ID, + ORGANISATION_OTHER_PRIVATE_INSURANCE_ID, + ORGANISATION_NO_COMPANY_ID, + ].includes(user.organisation) + ) { return null; } diff --git a/client/src/services/onboarding.ts b/client/src/services/onboarding.ts index 24b59a48..9c59ef48 100644 --- a/client/src/services/onboarding.ts +++ b/client/src/services/onboarding.ts @@ -1,4 +1,9 @@ import { isString, startsWith } from "lodash"; +import { + ORGANISATION_OTHER_BROKER_ID, + ORGANISATION_OTHER_HEALTH_INSURANCE_ID, + ORGANISATION_OTHER_PRIVATE_INSURANCE_ID, +} from "@/consts"; export function profileNextRoute(courseType: string | string[]) { if (courseType === "uk") { @@ -10,3 +15,11 @@ export function profileNextRoute(courseType: string | string[]) { } return ""; } + +export function isOtherOrganisation(orgId: number) { + return [ + ORGANISATION_OTHER_BROKER_ID, + ORGANISATION_OTHER_HEALTH_INSURANCE_ID, + ORGANISATION_OTHER_PRIVATE_INSURANCE_ID, + ].includes(orgId); +} diff --git a/server/vbv_lernwelt/course/consts.py b/server/vbv_lernwelt/course/consts.py index a0dd7b27..a9949458 100644 --- a/server/vbv_lernwelt/course/consts.py +++ b/server/vbv_lernwelt/course/consts.py @@ -28,3 +28,10 @@ UK_COURSE_IDS = [ COURSE_UK_TRAINING_FR, COURSE_UK_TRAINING_IT, ] + + +# Organization IDs +ORGANISATION_OTHER_BROKER_ID = 1 +ORGANISATION_OTHER_HEALTH_INSURANCE_ID = 2 +ORGANISATION_OTHER_PRIVATE_INSURANCE_ID = 3 +ORGANISATION_NO_COMPANY_ID = 31