Untitled

 avatar
unknown
plain_text
2 days ago
2.1 kB
1
Indexable
import { contacts } from 'wix-crm-backend';
import wixData from 'wix-data';

export async function getOrCreateContact(email) {
  try {
    console.log('Checking if contact exists for email:', email);

    // Query Wix CRM for an existing contact
    const existingContact = await contacts.queryContacts()
      .eq('emails.email', email)
      .find();

    if (existingContact.items.length > 0) {
      console.log('Contact already exists:', existingContact.items[0]);
      return existingContact.items[0];
    } else {
      console.log('Contact not found, creating new contact');

      // Create new contact
      const contactInfo = {
        emails: [{ email: email }],
        subscriptionConsent: {
          consent: true,
          subscriptionType: 'MARKETING'
        }
      };

      const newContact = await contacts.createContact(contactInfo);
      console.log('Created new contact:', newContact);

      // Subscribe to newsletter
      await subscribeToNewsletter(email);

      return newContact;
    }
  } catch (error) {
    console.error('Error in getOrCreateContact:', error.message);
    throw new Error('Failed to create or retrieve contact');
  }
}

async function subscribeToNewsletter(email) {
  try {
    console.log('Checking if email is subscribed to the newsletter:', email);

    // Check if the email already exists in the newsletter database
    const newsletterList = await wixData.query('NewsletterSubscriptions')
      .eq('email', email)
      .find();

    if (newsletterList.items.length === 0) {
      // Insert new subscription
      await wixData.insert('NewsletterSubscriptions', {
        email: email,
        subscriptionDate: new Date(),
        status: 'subscribed'
      });
      console.log('Successfully subscribed to the newsletter');
    } else {
      console.log('Email is already subscribed to the newsletter');
    }
  } catch (error) {
    console.error('Error in subscribeToNewsletter:', error.message);
    throw new Error('Failed to subscribe to the newsletter');
  }
}
Leave a Comment