<?php

// 1. Create an action class to represent your field
class CWPKlaviyoAction extends \Breakdance\Forms\Actions\Action
{

    // The name method returns a string used to identify the action in the Form Builder Actions dropdown
    public static function name()
    {
        return 'Klaviyo Action';
    }

    // The slug method returns a string to uniquely identify the form action
    public static function slug()
    {
        return 'cwp_klaviyo_form_action';
    }

    // The run method is triggered when the form is submitted
    public function run($form, $settings, $extra)
    {
        try {
            // Extract the name and email fields from the form submission
            $name = $extra['fields']['name'];
            $email = $extra['fields']['email'];

            // Send the name and email to Klaviyo (For simplicity, the actual Klaviyo API call is not implemented)
            $this->sendToKlaviyo($name, $email);

            // Return success message after sending data to Klaviyo
            return ['type' => 'success', 'message' => 'Data sent to Klaviyo'];
        } catch (Exception $e) {
            // Return error message in case of any exceptions
            return ['type' => 'error', 'message' => $e->getMessage()];
        }
    }

    private function sendToKlaviyo($name, $email)
    {
        $data = [
            'type' => 'profile',
            'attributes' => [
                'email' => $email,
                'first_name' => $name
            ]
        ];

        $args = [
            'headers' => [
                'Authorization' => 'Klaviyo-API-Key your-private-api-key',
                'Accept' => 'application/json',
                'Content-Type' => 'application/json',
                'Revision' => '2024-02-15'
            ],
            'body' => json_encode($data),
            'method' => 'POST',
            'data_format' => 'body'
        ];

        $response = wp_remote_post('https://a.klaviyo.com/api/profiles/', $args);

        if (is_wp_error($response)) {
            $error_message = $response->get_error_message();
            echo "Something went wrong: $error_message";
        } else {
            echo 'Response:<pre>';
            print_r($response);
            echo '</pre>';
        }
    }
}

// 2. Register the action class with Breakdance
// Use the WordPress 'init' action to register the action class, ensuring the Breakdance is installed and available
add_action('init', function () {
    if (!function_exists('\Breakdance\Forms\Actions\registerAction') || !class_exists('\Breakdance\Forms\Actions\Action')) {
        return;
    }

    // Register the action with Breakdance
    \Breakdance\Forms\Actions\registerAction(new CWPKlaviyoAction());
});