diff --git a/app/(public)/company-offer/_components/company-offer-form.tsx b/app/(public)/company-offer/_components/company-offer-form.tsx index ebcfdcf..0b50e7d 100644 --- a/app/(public)/company-offer/_components/company-offer-form.tsx +++ b/app/(public)/company-offer/_components/company-offer-form.tsx @@ -19,6 +19,8 @@ import { Label } from '@kit/ui/label'; import { Spinner } from '@kit/ui/spinner'; import { Trans } from '@kit/ui/trans'; +import { sendCompanyOfferEmail } from '../_lib/server/company-offer-actions'; + const CompanyOfferForm = () => { const [isLoading, setIsLoading] = useState(false); const router = useRouter(); @@ -34,6 +36,16 @@ const CompanyOfferForm = () => { const onSubmit = async (data: CompanySubmitData) => { setIsLoading(true); + try { + await sendCompanyOfferEmail(data, language); + router.push('/company-offer/success'); + } catch (err) { + setIsLoading(false); + if (err instanceof Error) { + console.warn('Could not send company offer email: ' + err.message); + } + console.warn('Could not send company offer email: ', err); + } const formData = new FormData(); Object.entries(data).forEach(([key, value]) => { if (value !== undefined) formData.append(key, value); diff --git a/app/(public)/company-offer/_lib/server/company-offer-actions.ts b/app/(public)/company-offer/_lib/server/company-offer-actions.ts new file mode 100644 index 0000000..a66ab42 --- /dev/null +++ b/app/(public)/company-offer/_lib/server/company-offer-actions.ts @@ -0,0 +1,25 @@ +'use server'; + +import { renderCompanyOfferEmail } from '@/packages/email-templates/src'; + +import { sendEmailFromTemplate } from '~/lib/services/mailer.service'; +import { CompanySubmitData } from '~/lib/types/company'; + +export const sendCompanyOfferEmail = async ( + data: CompanySubmitData, + language: string, +) => { + const formData = new FormData(); + Object.entries(data).forEach(([key, value]) => { + if (value !== undefined) formData.append(key, value); + }); + + sendEmailFromTemplate( + renderCompanyOfferEmail, + { + companyData: data, + language, + }, + process.env.CONTACT_EMAIL!, + ); +};