/**
  * Update the RSVP values for this user.
  *
  * Note that, within this method, $order_id refers to the attendee or ticket ID
  * (it does not refer to an "order" in the sense of a transaction that may include
  * multiple tickets, as is the case in some other methods for instance).
  *
  * @param array $data
  * @param int   $order_id
  * @param int   $event_id
  */
 public function update_attendee_data($data, $order_id, $event_id)
 {
     $user_id = get_current_user_id();
     $rsvp_orders = $this->tickets_view->get_event_rsvp_attendees($event_id, $user_id);
     $rsvp_order_ids = wp_list_pluck($rsvp_orders, 'order_id');
     // This makes sure we don't save attendees for orders that are not from this current user and event
     if (!in_array($order_id, $rsvp_order_ids)) {
         return;
     }
     $attendee = array();
     // Get the Attendee Data, it's important for testing
     foreach ($rsvp_orders as $test_attendee) {
         if ($order_id !== $test_attendee['order_id']) {
             continue;
         }
         $attendee = $test_attendee;
     }
     // Dont try to Save if it's restricted
     if (!isset($attendee['product_id']) || $this->tickets_view->is_rsvp_restricted($event_id, $attendee['product_id'])) {
         return;
     }
     $attendee_email = empty($data['email']) ? null : sanitize_email($data['email']);
     $attendee_email = is_email($attendee_email) ? $attendee_email : null;
     $attendee_full_name = empty($data['full_name']) ? null : sanitize_text_field($data['full_name']);
     $attendee_optout = empty($data['optout']) ? false : (bool) $data['optout'];
     if (empty($data['order_status']) || !$this->tickets_view->is_valid_rsvp_option($data['order_status'])) {
         $attendee_order_status = null;
     } else {
         $attendee_order_status = $data['order_status'];
     }
     $product_id = $attendee['product_id'];
     $this->update_sales_by_order_status($order_id, $attendee_order_status, $product_id);
     if (!is_null($attendee_order_status)) {
         update_post_meta($order_id, self::ATTENDEE_RSVP_KEY, $attendee_order_status);
     }
     update_post_meta($order_id, self::ATTENDEE_OPTOUT_KEY, (bool) $attendee_optout);
     if (!is_null($attendee_full_name)) {
         update_post_meta($order_id, $this->full_name, $attendee_full_name);
     }
     if (!is_null($attendee_email)) {
         update_post_meta($order_id, $this->email, $attendee_email);
     }
 }