Starting refractor of adding registrant to cart feature/refractorAddRegistrantToCart
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 20 Oct 2017 20:23:39 +0000 (16:23 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 20 Oct 2017 20:23:39 +0000 (16:23 -0400)
Refractoring registrant and and update in the cart.
Will be moving this into the support class.

models/admin/ajax/regFront/registrant.php

index 0bb02fc..0aaf3be 100644 (file)
@@ -100,285 +100,9 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations
 
         case 'add':
 
-            // Check for or create reg_request_event
-            if ( $modelData['reg_event'] ) {
-                //return false;
-            }
-            $regRequestEventId = $this->wpdb->get_var(
-                $this->wpdb->prepare(
-                    "SELECT id
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_event
-                      WHERE reg_event = %d
-                        AND reg_request = %d",
-                    $modelData['reg_event'],
-                    $modelData['reg_request']
-                )
-            );
-            $data = array(
-                'reg_request'    => $modelData['reg_request'],
-                'reg_event'      => $modelData['reg_event'],
-                'event_name'     => $modelData['event_name'],
-                'event_datetime' => $modelData['event_datetime'],
-            );
-            $dataFormat = array(
-                '%d', // reg_request
-                '%d', // reg_event
-                '%s', // event_name
-                '%s', // event_datetime
-            );
-            if ( !$regRequestEventId ) {
-                $this->wpdb->insert(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event',
-                    $data,
-                    $dataFormat
-                );
-                $regRequestEventId = $this->wpdb->insert_id;
-            } else {
-                $this->wpdb->update(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event',
-                    $data,
-                    array( 'id' => $regRequestEventId ),
-                    $dataFormat,
-                    array( '%d' )
-                );
-            }
-
-            // Check for or create reg_request_class
-            $regRequestClassId = $this->wpdb->get_var(
-                $this->wpdb->prepare(
-                    "SELECT id
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_class
-                      WHERE reg_request_event = %d
-                        AND class = %d
-                        AND reg_request = %d",
-                    $regRequestEventId,
-                    $modelData['reg_class'],
-                    $modelData['reg_request']
-                )
-            );
-            // At this point we need to get the class data
-            $regClass = $this->wpdb->get_row(
-                $this->wpdb->prepare(
-                    "SELECT *
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_class
-                      WHERE id = %d",
-                    $modelData['reg_class']
-                ),
-                ARRAY_A
-            );
-            $data = array(
-                'reg_event'         => $modelData['reg_event'],
-                'event_datetime'    => $modelData['event_datetime'],
-                'reg_request'       => $modelData['reg_request'],
-                'reg_request_event' => $regRequestEventId,
-                'class'             => $modelData['reg_class'],
-                'class_name'        => $regClass['name'],
-            );
-            $dataFormat = array(
-                '%d', // reg_event
-                '%s', // event_datetime
-                '%d', // reg_request
-                '%d', // reg_request_event
-                '%d', // class
-                '%s', // class_name
-            );
-            if ( !$regRequestClassId ) {
-                $this->wpdb->insert(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class',
-                    $data,
-                    $dataFormat
-                );
-                $regRequestClassId = $this->wpdb->insert_id;
-            } else {
-                $this->wpdb->update(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class',
-                    $data,
-                    array( 'id' =>  $regRequestClassId ),
-                    $dataFormat,
-                    array( '%d' )
-                );
-            }
-
-            // Check for or create reg_request_rate
-            $regRequestRate = $this->wpdb->get_var(
-                $this->wpdb->prepare(
-                    "SELECT id
-                       FROM " .GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_rate
-                      WHERE reg_event = %d
-                        AND rate = %d
-                        AND reg_request = %d",
-                    $modelData['reg_event'],
-                    $modelData['reg_rate'],
-                    $modelData['reg_request']
-                )
-            );
-            // At this point we need to get the rate data
-            $rate = $this->wpdb->get_row(
-                $this->wpdb->prepare(
-                    "SELECT *
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_rate
-                      WHERE id = %d",
-                    $modelData['reg_rate']
-                ),
-                ARRAY_A
-            );
-            $data = array(
-                'reg_event'          => $modelData['reg_event'],
-                'event_datetime'     => $modelData['event_datetime'],
-                'reg_request'        => $modelData['reg_request'],
-                'reg_request_event'  => $regRequestEventId,
-                'reg_request_class'  => $regRequestClassId,
-                'rate'               => $modelData['reg_rate'],
-                'rate_name'          => $rate['name'],
-                'base_rate'          => $rate['base_rate'],
-                'per_registrant'     => $rate['per_registrant'],
-                'registrant_credits' => $rate['registrant_credits'],
-            ) ;
-            $dataFormat = array(
-                '%d', // reg_event
-                '%s', // event_datetime
-                '%d', // reg_request
-                '%d', // reg_request_event
-                '%d', // reg_request_class
-                '%d', // rate
-                '%s', // rate_name
-                '%f', // base_rate
-                '%f', // per_registrant
-                '%d', // registrant_credits
-            );
-            if ( !$regRequestRate ) {
-                // Now with the previous data we can create reg_request_rate
-                $this->wpdb->insert(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate',
-                    $data,
-                    $dataFormat
-                );
-                $regRequestRate = $this->wpdb->insert_id;
-            } else {
-                // Now with the previous data we can create reg_request_rate
-                $this->wpdb->update(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate',
-                    $data,
-                    array( 'id' => $regRequestRate ),
-                    $dataFormat,
-                    array( '%d' )
-                );
-            }
-
-            // If we have the email address then look up the account for it
-            if ( isset( $modelData['email'] ) && $email = filter_var( $modelData['email'], FILTER_VALIDATE_EMAIL ) ) {
-                $accountId = $this->wpdb->get_var(
-                    $this->wpdb->prepare(
-                        "SELECT id
-                           FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
-                          WHERE email = %s",
-                        $email
-                    )
-                );
-            }
-            if ( !isset( $accountId ) ) {
-                // We need to create an account for this one
-                $this->wpdb->insert(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account',
-                    array(
-                        'fname'        => $modelData['fname'],
-                        'lname'        => $modelData['lname'],
-                        'email'        => $modelData['email'],
-                        'date_created' => date('Y-m-d'),
-                    ),
-                    '%s'
-                );
-                $accountId = $this->wpdb->insert_id;
-                // Here validated would be false.
-                // Because it is new account.
-            }
-            $validated = $this->wpdb->get_var(
-                $this->wpdb->prepare(
-                    "SELECT validated
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
-                      WHERE id = %d",
-                    $accountId
-                )
-            );
-
-            // Check for or create reg_request_registrant
-            $regRequestRegistrantId = $this->wpdb->get_var(
-                $this->wpdb->prepare(
-                    "SELECT id
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_registrant
-                      WHERE reg_request = %d
-                        AND account = %d
-                        AND reg_request_event = %d
-                        AND reg_request_class = %d",
-                    $modelData['reg_request'],
-                    $accountId,
-                    $regRequestEventId,
-                    $regRequestClassId
-                )
-            );
+            // Call to add registrant
+            $registrant = $this->addRegistrantToCart( $modelData );
 
-            $regTime = $this->wpdb->get_row(
-                $this->wpdb->prepare(
-                    "SELECT *
-                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_time
-                      WHERE id = %d",
-                    $modelData['reg_time']
-                ),
-                ARRAY_A
-            );
-            $data = array(
-                'account'            => $accountId,
-                'reg_event'          => $modelData['reg_event'],
-                'reg_time'           => $modelData['reg_time'],
-                'event_datetime'     => $regTime['start_datetime'],
-                'reg_request'        => $modelData['reg_request'],
-                'reg_request_event'  => $regRequestEventId,
-                'reg_request_class'  => $regRequestClassId,
-                'reg_request_rate'   => $regRequestRate,
-                'fname'              => $modelData['fname'],
-                'lname'              => $modelData['lname'],
-            );
-            $dataFormat = array(
-                '%d', // account
-                '%d', // reg_event
-                '%s', // reg_time
-                '%s', // event_datetime
-                '%d', // reg_request
-                '%d', // reg_request_event
-                '%d', // reg_request_class
-                '%d', // reg_request_rate
-                '%s', // fname
-                '%s', // lname
-            );
-            if ( !$regRequestRegistrantId ) {
-                $this->wpdb->insert(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
-                    $data,
-                    $dataFormat
-                );
-                $regRequestRegistrantId = $this->wpdb->insert_id;
-            } else {
-                $this->wpdb->update(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
-                    $data,
-                    array( 'id' => $regRequestRegistrantId ),
-                    $dataFormat,
-                    array( '%d' )
-                );
-            }
-            $registrant = $this->getEntry( $regRequestRegistrantId );
-            $registrant['validated'] = $validated;
-            if ( $registrant['reg_time'] && filter_var( $registrant['reg_time'], FILTER_VALIDATE_INT ) ) {
-                $regTimeText = $this->wpdb->get_var(
-                    $this->wpdb->prepare(
-                        "SELECT DATE_FORMAT( start_datetime, '%%m/%%d/%%Y %%l:%%i %%p' )
-                           FROM " .  GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time
-                          WHERE id = %d",
-                        $registrant['reg_time']
-                    )
-                );
-                $registrant['reg_time_text'] = $regTimeText;
-            }
             echo json_encode( $registrant, JSON_NUMERIC_CHECK );
             wp_die();
             break;
@@ -387,106 +111,111 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations
             break;
 
         case 'update':
-            if ( $accountId = filter_var( $modelData['account'], FILTER_VALIDATE_INT ) ) {
-                $validated = $this->wpdb->get_var(
-                    $this->wpdb->prepare(
-                        "SELECT validated
-                           FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
-                          WHERE id = %d",
-                        $accountId
-                    )
-                );
-                // If not validated go ahead and update the account data
-                if ( !$validated ) {
-                    $accountData = array(
-                        'fname'   => $modelData['fname'],
-                        'lname'   => $modelData['lname'],
-                        'addr1'   => $modelData['addr1'],
-                        'addr2'   => $modelData['addr2'],
-                        'city'    => $modelData['city'],
-                        'state'   => $modelData['state'],
-                        'zip'     => $modelData['zip'],
-                        'country' => $modelData['country'],
-                    );
-                    $accountDataFormat = array(
-                        '%s', // fname
-                        '%s', // lname
-                        '%s', // addr1
-                        '%s', // addr2
-                        '%s', // city
-                        '%s', // state
-                        '%s', // zip
-                        '%s', // country
-                    );
-                    $this->wpdb->update(
-                        GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account',
-                        $accountData,
-                        array( 'id' => $accountId ),
-                        $accountDataFormat,
-                        array( '%d' )
-                    );
-                }
-
-            }
-            if ( $regRequestRegistrantId = filter_var( $modelData['id'], FILTER_VALIDATE_INT ) ) {
-                $regTime = $this->wpdb->get_row(
-                    $this->wpdb->prepare(
-                        "SELECT *
-                           FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_time
-                          WHERE id = %d",
-                        $modelData['reg_time']
-                    ),
-                    ARRAY_A
-                );
-                // Check the account to see what's changed
-                // Check for a new reg_time
-                $data = array(
-                    'account'            => $modelData['account'],
-                    'reg_event'          => $modelData['reg_event'],
-                    'reg_time'           => $modelData['reg_time'],
-                    'event_datetime'     => $regTime['start_datetime'],
-                    'reg_request'        => $modelData['reg_request'],
-                    'reg_request_event'  => $modelData['reg_request_event'],
-                    'reg_request_class'  => $modelData['reg_request_class'],
-                    'reg_request_rate'   => $modelData['reg_request_rate'],
-                    'fname'              => $modelData['fname'],
-                    'lname'              => $modelData['lname'],
-                );
-                $dataFormat = array(
-                    '%d', // account
-                    '%d', // reg_event
-                    '%s', // reg_time
-                    '%s', // event_datetime
-                    '%d', // reg_request
-                    '%d', // reg_request_event
-                    '%d', // reg_request_class
-                    '%d', // reg_request_rate
-                    '%s', // fname
-                    '%s', // lname
-                );
-                $this->wpdb->update(
-                    GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
-                    $data,
-                    array( 'id' => $regRequestRegistrantId ),
-                    $dataFormat,
-                    array( '%d' )
-                );
-                $registrant = $this->getEntry( $regRequestRegistrantId );
-                $registrant['validated'] = $validated;
-                if ( $registrant['reg_time'] && filter_var( $registrant['reg_time'], FILTER_VALIDATE_INT ) ) {
-                    $regTimeText = $this->wpdb->get_var(
-                        $this->wpdb->prepare(
-                            "SELECT DATE_FORMAT( start_datetime, '%%m/%%d/%%Y %%l:%%i %%p' )
-                               FROM " .  GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time
-                              WHERE id = %d",
-                            $registrant['reg_time']
-                        )
-                    );
-                    $registrant['reg_time_text'] = $regTimeText;
-                }
-                echo json_encode( $registrant, JSON_NUMERIC_CHECK );
-                wp_die();
-            }
+
+            $registrant = $this->addRegistrantToCart( $modelData );
+
+            echo json_encode( $registrant, JSON_NUMERIC_CHECK );
+            wp_die();
+            // if ( $accountId = filter_var( $modelData['account'], FILTER_VALIDATE_INT ) ) {
+            //     $validated = $this->wpdb->get_var(
+            //         $this->wpdb->prepare(
+            //             "SELECT validated
+            //                FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
+            //               WHERE id = %d",
+            //             $accountId
+            //         )
+            //     );
+            //     // If not validated go ahead and update the account data
+            //     if ( !$validated ) {
+            //         $accountData = array(
+            //             'fname'   => $modelData['fname'],
+            //             'lname'   => $modelData['lname'],
+            //             'addr1'   => $modelData['addr1'],
+            //             'addr2'   => $modelData['addr2'],
+            //             'city'    => $modelData['city'],
+            //             'state'   => $modelData['state'],
+            //             'zip'     => $modelData['zip'],
+            //             'country' => $modelData['country'],
+            //         );
+            //         $accountDataFormat = array(
+            //             '%s', // fname
+            //             '%s', // lname
+            //             '%s', // addr1
+            //             '%s', // addr2
+            //             '%s', // city
+            //             '%s', // state
+            //             '%s', // zip
+            //             '%s', // country
+            //         );
+            //         $this->wpdb->update(
+            //             GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account',
+            //             $accountData,
+            //             array( 'id' => $accountId ),
+            //             $accountDataFormat,
+            //             array( '%d' )
+            //         );
+            //     }
+            //
+            // }
+            // if ( $regRequestRegistrantId = filter_var( $modelData['id'], FILTER_VALIDATE_INT ) ) {
+            //     $regTime = $this->wpdb->get_row(
+            //         $this->wpdb->prepare(
+            //             "SELECT *
+            //                FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_time
+            //               WHERE id = %d",
+            //             $modelData['reg_time']
+            //         ),
+            //         ARRAY_A
+            //     );
+            //     // Check the account to see what's changed
+            //     // Check for a new reg_time
+            //     $data = array(
+            //         'account'            => $modelData['account'],
+            //         'reg_event'          => $modelData['reg_event'],
+            //         'reg_time'           => $modelData['reg_time'],
+            //         'event_datetime'     => $regTime['start_datetime'],
+            //         'reg_request'        => $modelData['reg_request'],
+            //         'reg_request_event'  => $modelData['reg_request_event'],
+            //         'reg_request_class'  => $modelData['reg_request_class'],
+            //         'reg_request_rate'   => $modelData['reg_request_rate'],
+            //         'fname'              => $modelData['fname'],
+            //         'lname'              => $modelData['lname'],
+            //     );
+            //     $dataFormat = array(
+            //         '%d', // account
+            //         '%d', // reg_event
+            //         '%s', // reg_time
+            //         '%s', // event_datetime
+            //         '%d', // reg_request
+            //         '%d', // reg_request_event
+            //         '%d', // reg_request_class
+            //         '%d', // reg_request_rate
+            //         '%s', // fname
+            //         '%s', // lname
+            //     );
+            //     $this->wpdb->update(
+            //         GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
+            //         $data,
+            //         array( 'id' => $regRequestRegistrantId ),
+            //         $dataFormat,
+            //         array( '%d' )
+            //     );
+            //     $registrant = $this->getEntry( $regRequestRegistrantId );
+            //     $registrant['validated'] = $validated;
+            //     if ( $registrant['reg_time'] && filter_var( $registrant['reg_time'], FILTER_VALIDATE_INT ) ) {
+            //         $regTimeText = $this->wpdb->get_var(
+            //             $this->wpdb->prepare(
+            //                 "SELECT DATE_FORMAT( start_datetime, '%%m/%%d/%%Y %%l:%%i %%p' )
+            //                    FROM " .  GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time
+            //                   WHERE id = %d",
+            //                 $registrant['reg_time']
+            //             )
+            //         );
+            //         $registrant['reg_time_text'] = $regTimeText;
+            //     }
+            //     echo json_encode( $registrant, JSON_NUMERIC_CHECK );
+            //     wp_die();
+            // }
             break;
 
         case 'delete':
@@ -512,4 +241,288 @@ class GlmMembersAdmin_registrations_ajax_registrant extends GlmDataRegistrations
     }
 
 
+    public function addRegistrantToCart( $modelData )
+    {
+        $validated = false;
+
+        // Check for or create reg_request_event
+        $regRequestEventId = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT id
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_event
+                  WHERE reg_event = %d
+                    AND reg_request = %d",
+                $modelData['reg_event'],
+                $modelData['reg_request']
+            )
+        );
+        $data = array(
+            'reg_request'    => $modelData['reg_request'],
+            'reg_event'      => $modelData['reg_event'],
+            'event_name'     => $modelData['event_name'],
+            'event_datetime' => $modelData['event_datetime'],
+        );
+        $dataFormat = array(
+            '%d', // reg_request
+            '%d', // reg_event
+            '%s', // event_name
+            '%s', // event_datetime
+        );
+        if ( !$regRequestEventId ) {
+            $this->wpdb->insert(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event',
+                $data,
+                $dataFormat
+            );
+            $regRequestEventId = $this->wpdb->insert_id;
+        } else {
+            $this->wpdb->update(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_event',
+                $data,
+                array( 'id' => $regRequestEventId ),
+                $dataFormat,
+                array( '%d' )
+            );
+        }
+
+        // Check for or create reg_request_class
+        $regRequestClassId = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT id
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_class
+                  WHERE reg_request_event = %d
+                    AND class = %d
+                    AND reg_request = %d",
+                $regRequestEventId,
+                $modelData['reg_class'],
+                $modelData['reg_request']
+            )
+        );
+        // At this point we need to get the class data
+        $regClass = $this->wpdb->get_row(
+            $this->wpdb->prepare(
+                "SELECT *
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_class
+                  WHERE id = %d",
+                $modelData['reg_class']
+            ),
+            ARRAY_A
+        );
+        $data = array(
+            'reg_event'         => $modelData['reg_event'],
+            'event_datetime'    => $modelData['event_datetime'],
+            'reg_request'       => $modelData['reg_request'],
+            'reg_request_event' => $regRequestEventId,
+            'class'             => $modelData['reg_class'],
+            'class_name'        => $regClass['name'],
+        );
+        $dataFormat = array(
+            '%d', // reg_event
+            '%s', // event_datetime
+            '%d', // reg_request
+            '%d', // reg_request_event
+            '%d', // class
+            '%s', // class_name
+        );
+        if ( !$regRequestClassId ) {
+            $this->wpdb->insert(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class',
+                $data,
+                $dataFormat
+            );
+            $regRequestClassId = $this->wpdb->insert_id;
+        } else {
+            $this->wpdb->update(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_class',
+                $data,
+                array( 'id' =>  $regRequestClassId ),
+                $dataFormat,
+                array( '%d' )
+            );
+        }
+
+        // Check for or create reg_request_rate
+        $regRequestRate = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT id
+                   FROM " .GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_rate
+                  WHERE reg_event = %d
+                    AND rate = %d
+                    AND reg_request = %d",
+                $modelData['reg_event'],
+                $modelData['reg_rate'],
+                $modelData['reg_request']
+            )
+        );
+        // At this point we need to get the rate data
+        $rate = $this->wpdb->get_row(
+            $this->wpdb->prepare(
+                "SELECT *
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_rate
+                  WHERE id = %d",
+                $modelData['reg_rate']
+            ),
+            ARRAY_A
+        );
+        $data = array(
+            'reg_event'          => $modelData['reg_event'],
+            'event_datetime'     => $modelData['event_datetime'],
+            'reg_request'        => $modelData['reg_request'],
+            'reg_request_event'  => $regRequestEventId,
+            'reg_request_class'  => $regRequestClassId,
+            'rate'               => $modelData['reg_rate'],
+            'rate_name'          => $rate['name'],
+            'base_rate'          => $rate['base_rate'],
+            'per_registrant'     => $rate['per_registrant'],
+            'registrant_credits' => $rate['registrant_credits'],
+        ) ;
+        $dataFormat = array(
+            '%d', // reg_event
+            '%s', // event_datetime
+            '%d', // reg_request
+            '%d', // reg_request_event
+            '%d', // reg_request_class
+            '%d', // rate
+            '%s', // rate_name
+            '%f', // base_rate
+            '%f', // per_registrant
+            '%d', // registrant_credits
+        );
+        if ( !$regRequestRate ) {
+            // Now with the previous data we can create reg_request_rate
+            $this->wpdb->insert(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate',
+                $data,
+                $dataFormat
+            );
+            $regRequestRate = $this->wpdb->insert_id;
+        } else {
+            // Now with the previous data we can create reg_request_rate
+            $this->wpdb->update(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_rate',
+                $data,
+                array( 'id' => $regRequestRate ),
+                $dataFormat,
+                array( '%d' )
+            );
+        }
+
+        // If we have the email address then look up the account for it
+        if ( isset( $modelData['email'] ) && $email = filter_var( $modelData['email'], FILTER_VALIDATE_EMAIL ) ) {
+            $accountId = $this->wpdb->get_var(
+                $this->wpdb->prepare(
+                    "SELECT id
+                       FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
+                      WHERE email = %s",
+                    $email
+                )
+            );
+        }
+        if ( !isset( $accountId ) ) {
+            // We need to create an account for this one
+            $this->wpdb->insert(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'account',
+                array(
+                    'fname'        => $modelData['fname'],
+                    'lname'        => $modelData['lname'],
+                    'email'        => $modelData['email'],
+                    'date_created' => date('Y-m-d'),
+                ),
+                '%s'
+            );
+            $accountId = $this->wpdb->insert_id;
+            // Here validated would be false.
+            // Because it is new account.
+        }
+        $validated = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT validated
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "account
+                  WHERE id = %d",
+                $accountId
+            )
+        );
+
+        // Check for or create reg_request_registrant
+        $regRequestRegistrantId = $this->wpdb->get_var(
+            $this->wpdb->prepare(
+                "SELECT id
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_request_registrant
+                  WHERE reg_request = %d
+                    AND account = %d
+                    AND reg_request_event = %d
+                    AND reg_request_class = %d",
+                $modelData['reg_request'],
+                $accountId,
+                $regRequestEventId,
+                $regRequestClassId
+            )
+        );
+
+        $regTime = $this->wpdb->get_row(
+            $this->wpdb->prepare(
+                "SELECT *
+                   FROM " . GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX .  "reg_time
+                  WHERE id = %d",
+                $modelData['reg_time']
+            ),
+            ARRAY_A
+        );
+        $data = array(
+            'account'            => $accountId,
+            'reg_event'          => $modelData['reg_event'],
+            'reg_time'           => $modelData['reg_time'],
+            'event_datetime'     => $regTime['start_datetime'],
+            'reg_request'        => $modelData['reg_request'],
+            'reg_request_event'  => $regRequestEventId,
+            'reg_request_class'  => $regRequestClassId,
+            'reg_request_rate'   => $regRequestRate,
+            'fname'              => $modelData['fname'],
+            'lname'              => $modelData['lname'],
+        );
+        $dataFormat = array(
+            '%d', // account
+            '%d', // reg_event
+            '%s', // reg_time
+            '%s', // event_datetime
+            '%d', // reg_request
+            '%d', // reg_request_event
+            '%d', // reg_request_class
+            '%d', // reg_request_rate
+            '%s', // fname
+            '%s', // lname
+        );
+        if ( !$regRequestRegistrantId ) {
+            $this->wpdb->insert(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
+                $data,
+                $dataFormat
+            );
+            $regRequestRegistrantId = $this->wpdb->insert_id;
+        } else {
+            $this->wpdb->update(
+                GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . 'reg_request_registrant',
+                $data,
+                array( 'id' => $regRequestRegistrantId ),
+                $dataFormat,
+                array( '%d' )
+            );
+        }
+        $registrant = $this->getEntry( $regRequestRegistrantId );
+        $registrant['validated'] = $validated;
+        if ( $registrant['reg_time'] && filter_var( $registrant['reg_time'], FILTER_VALIDATE_INT ) ) {
+            $regTimeText = $this->wpdb->get_var(
+                $this->wpdb->prepare(
+                    "SELECT DATE_FORMAT( start_datetime, '%%m/%%d/%%Y %%l:%%i %%p' )
+                       FROM " .  GLM_MEMBERS_REGISTRATIONS_PLUGIN_DB_PREFIX . "reg_time
+                      WHERE id = %d",
+                    $registrant['reg_time']
+                )
+            );
+            $registrant['reg_time_text'] = $regTimeText;
+        }
+
+        return $registrant;
+
+    }
 }