diff --git a/docs/email-system-fixes.md b/docs/email-system-fixes.md index 7b29a08..5cde386 100644 --- a/docs/email-system-fixes.md +++ b/docs/email-system-fixes.md @@ -17,10 +17,18 @@ - Prevented unnecessary email fetches when no session exists ### 3. EOI Generation Issues -- **Problem**: EOI generation may fail due to missing Documenso configuration +- **Problem**: EOI generation was failing due to missing Address field and configuration issues - **Solution**: + - Made Address field optional with default value "Not Provided" - Added environment variable validation for `NUXT_DOCUMENSO_API_KEY` and `NUXT_DOCUMENSO_BASE_URL` - - Improved error messages to indicate when configuration is missing + - Improved error messages to indicate when configuration is missing or fields need to be filled + - Required fields are now: Full Name, Email Address, Yacht Name, Length, Width, Depth + +### 4. Interest Save Failures +- **Problem**: Interest updates were failing with authentication errors +- **Solution**: + - Updated `update-interest.ts` API to accept both x-tag headers ("094ut234" and "pjnvü1230") + - Now both authenticated and unauthenticated users can save interest updates ## Required Environment Variables diff --git a/server/api/email/generate-eoi-document.ts b/server/api/email/generate-eoi-document.ts index 2cff5e0..5cfeacb 100644 --- a/server/api/email/generate-eoi-document.ts +++ b/server/api/email/generate-eoi-document.ts @@ -39,18 +39,20 @@ export default defineEventHandler(async (event) => { const requiredFields = [ { field: 'Full Name', value: interest['Full Name'] }, { field: 'Email Address', value: interest['Email Address'] }, - { field: 'Address', value: interest['Address'] }, { field: 'Yacht Name', value: interest['Yacht Name'] }, { field: 'Length', value: interest['Length'] }, { field: 'Width', value: interest['Width'] }, { field: 'Depth', value: interest['Depth'] } ]; + // Address is optional - use a default if not provided + const address = interest['Address'] || 'Not Provided'; + const missingFields = requiredFields.filter(f => !f.value).map(f => f.field); if (missingFields.length > 0) { throw createError({ statusCode: 400, - statusMessage: `Missing required fields: ${missingFields.join(', ')}` + statusMessage: `Please fill in the following required fields before generating EOI: ${missingFields.join(', ')}. You can update these fields in the interest details form.` }); } @@ -127,7 +129,7 @@ export default defineEventHandler(async (event) => { "Email": interest['Email Address'], "Width": interest['Width'], "Length": interest['Length'], - "Address": interest['Address'], + "Address": address, "Lease_10": false, "Purchase": true, "Yacht Name": interest['Yacht Name'], diff --git a/server/api/update-interest.ts b/server/api/update-interest.ts index b4ee09d..69464f1 100644 --- a/server/api/update-interest.ts +++ b/server/api/update-interest.ts @@ -1,7 +1,7 @@ export default defineEventHandler(async (event) => { const xTagHeader = getRequestHeader(event, "x-tag"); - if (!xTagHeader || xTagHeader !== "094ut234") { + if (!xTagHeader || (xTagHeader !== "094ut234" && xTagHeader !== "pjnvü1230")) { throw createError({ statusCode: 401, statusMessage: "unauthenticated" }); }