{"version":3,"file":"CLRUaXNT.js","sources":["../../../../src/components/dialog/productRequest/useProductRequestDialog.ts"],"sourcesContent":["import type { IDialogContent } from '~/@types/dialog-content';\nimport { useSecureSessionPost } from '~/composables/dataFetching/genericFetchers';\nimport { useSessionStore } from '~/stores/useSessionStore';\nimport { useUserAddress } from '~/stores/useUserAddress';\nimport { useUserContext } from '~/stores/useUserContext';\nimport { UseStateKeys } from '~/useStateKeys';\nimport { handleLoadingError } from '~/utils/handleLoadingError';\n\nexport type ProductRequestContactData = {\n officename: string;\n zipCity: {\n zip: string;\n city: string;\n };\n title?: string;\n firstname: string;\n lastname: string;\n email: string;\n checkboxCallMe: boolean;\n phone?: {\n phoneCountry: string;\n phoneNumber: string;\n fullPhoneNumber: string;\n };\n message?: string;\n};\n\nexport async function useProductRequestContactData() {\n const { t } = useTrans();\n\n const userContext = useUserContext();\n const userAddresses = useUserAddress();\n const session = useSessionStore();\n\n const site = useSiteIdent();\n const showDialog = ref(false);\n const isLoading = ref(false);\n\n const contactData = useState(\n UseStateKeys.PRODUCT_REQUEST_CONTACT_DATA,\n () => {\n return getBlankContactData();\n },\n );\n\n const dialogContent: IDialogContent = {\n dialogHeadline: t('forms.dialogContent.successHeader'),\n dialogText: t('shop.dialog.productRequest.successText'),\n dialogType: 'success',\n };\n\n const canSubmit = computed(\n () =>\n contactData.value.email !== '' &&\n contactData.value.firstname !== '' &&\n contactData.value.lastname !== '' &&\n contactData.value.officename !== '' &&\n contactData.value.zipCity.zip !== '' &&\n contactData.value.zipCity.city !== '',\n );\n\n function updateContactData(formData: ProductRequestContactData) {\n contactData.value.officename = formData.officename;\n contactData.value.zipCity.zip = formData.zipCity.zip;\n contactData.value.zipCity.city = formData.zipCity.city;\n contactData.value.title = formData.title ?? '';\n contactData.value.firstname = formData.firstname;\n contactData.value.lastname = formData.lastname;\n contactData.value.email = formData.email;\n contactData.value.checkboxCallMe = formData.checkboxCallMe;\n contactData.value.phone.fullPhoneNumber =\n formData.phone?.fullPhoneNumber ?? '';\n contactData.value.phone.phoneNumber = formData.phone?.phoneNumber ?? '';\n }\n\n function getDisplayData() {\n return [\n contactData.value.officename,\n `${contactData.value.firstname} ${contactData.value.lastname}`,\n contactData.value.email,\n `${contactData.value.zipCity.zip} ${contactData.value.zipCity.city}`,\n ].join(', ');\n }\n\n async function submitProductRequest(productId: string) {\n isLoading.value = true;\n\n const postBody = {\n firstName: contactData.value.firstname,\n lastName: contactData.value.lastname,\n company: contactData.value.officename,\n email: contactData.value.email,\n phone: contactData.value.phone.fullPhoneNumber ?? '',\n message: contactData.value.message ?? '',\n zipcode: contactData.value.zipCity.zip,\n city: contactData.value.zipCity.city,\n title: contactData.value.title ?? '',\n callMe: contactData.value.checkboxCallMe,\n };\n try {\n const result = await useSecureSessionPost(\n `/api/${site}/shop/product/${productId}/productRequest`,\n postBody,\n );\n if (!result) {\n //when error -> no productRequest is send\n dialogContent.dialogText = t('forms.dialogContent.submitError.text');\n dialogContent.dialogHeadline = t(\n 'forms.dialogContent.submitError.headline',\n );\n dialogContent.dialogType = 'error';\n showDialog.value = true;\n isLoading.value = false;\n return;\n }\n } catch (e: any) {\n dialogContent.dialogText = t('forms.dialogContent.submitError.text');\n dialogContent.dialogHeadline = t(\n 'forms.dialogContent.submitError.headline',\n );\n dialogContent.dialogType = 'error';\n showDialog.value = true;\n isLoading.value = false;\n handleLoadingError(e);\n return;\n }\n\n //reset/init contactData after submit\n if (session.isLoggedIn) {\n contactData.value.message = '';\n } else {\n contactData.value = getBlankContactData();\n }\n showDialog.value = true;\n isLoading.value = false;\n }\n\n return {\n isLoading,\n contactData,\n dialogContent,\n showDialog,\n canSubmit,\n submitProductRequest,\n updateContactData,\n getDisplayData,\n getBlankContactData,\n getUserContactData,\n session,\n userContext,\n userAddresses,\n };\n}\n\nfunction getBlankContactData() {\n return {\n officename: '',\n zipCity: {\n zip: '',\n city: '',\n },\n title: '',\n firstname: '',\n lastname: '',\n email: '',\n checkboxCallMe: false,\n phone: {\n phoneCountry: '',\n phoneNumber: '',\n fullPhoneNumber: '',\n },\n message: '',\n };\n}\n\nasync function getUserContactData() {\n if (!useShopEnabled()) return getBlankContactData();\n const userContext = useUserContext();\n const userAddresses = useUserAddress();\n await userContext.loadAccountData();\n await userContext.loadAddresses();\n\n return {\n officename: [userContext.userData?.name1, userContext.userData?.name2]\n .filter((c) => !!c)\n .join(' '),\n zipCity: {\n zip: userAddresses.contactAddress?.zip ?? '',\n city: userAddresses.contactAddress?.city ?? '',\n },\n title: userContext.accountData?.title ?? '',\n firstname: userContext.accountData?.firstName ?? '',\n lastname: userContext.accountData?.lastName ?? '',\n email: userContext.userData?.email ?? '',\n checkboxCallMe: false,\n phone: {\n ...getPhoneObject(userContext.accountData?.phoneNumber || ''),\n fullPhoneNumber: userContext.accountData?.phoneNumber ?? '',\n },\n message: '',\n };\n}\n\nconst getPhoneObject = (phone: string) => {\n if (phone.startsWith('+')) {\n return {\n phoneCountry: phone.slice(0, 3),\n phoneNumber: phone.slice(3),\n };\n }\n return {\n phoneCountry: undefined,\n phoneNumber: phone,\n };\n};\n"],"names":["useProductRequestContactData","t","useTrans","userContext","useUserContext","userAddresses","useUserAddress","session","useSessionStore","site","useSiteIdent","showDialog","ref","isLoading","contactData","useState","UseStateKeys","getBlankContactData","dialogContent","canSubmit","computed","updateContactData","formData","_a","_b","getDisplayData","submitProductRequest","productId","postBody","useSecureSessionPost","e","handleLoadingError","getUserContactData","useShopEnabled","c","_c","_d","_e","_f","_g","_h","getPhoneObject","_i","_j","phone"],"mappings":"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"}