Jake Vanderwerf
2026-01-25 b38f03c0e7218762d90fa5092696b127f24f36db
inc/rest/routes/ReferralRoutes.php
@@ -312,7 +312,7 @@
         }
      }
      $this->cache->clear();
      $this->cache->flush();
      return $this->success(['message' => "Referral marked as {$status}"]);
   }
@@ -348,7 +348,7 @@
      }
      $this->wpdb->delete($this->referrals_table, ['id' => $referral_id], ['%d']);
      $this->cache->clear();
      $this->cache->flush();
      return $this->success(['message' => 'Referral removed']);
   }
@@ -508,7 +508,7 @@
      ];
      update_option(BASE . 'referral_settings', $settings);
      $this->cache->clear();
      $this->cache->flush();
      return $this->success([
         'message' => 'Settings updated',
@@ -638,10 +638,23 @@
         $data['message']
      );
      if ($result['success']) {
         $this->cache->clear();
         $this->cache->flush();
      }
      error_log('Result: '.print_r($result, true));
      return $result;
      // Build summary message
      $textResult = 'Sent invitations. ';
      $textResult .= 'Success: ' . count($result['result']['success']) . '. ';
      $textResult .= 'Failed: ' . count($result['result']['failed']) . '.';
      return [
         'success'   => true,
         'message'   => $textResult,
         'details'   => [
            'successful' => $result['result']['success'],
            'failed'     => $result['result']['failed'],
            'total'      => count($data['invitations'])
         ]
      ];
   }
   /**
@@ -649,20 +662,31 @@
    */
   public function handleClientUpload(WP_REST_Request $request): WP_REST_Response
   {
      $files = $request->get_file_params();
      if (!isset($files['file'])) {
      // Access files from $_FILES directly for REST API uploads
      if (empty($_FILES['file'])) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'No file uploaded'
         ], 400);
      }
      $file = $files['file'];
      $file = $_FILES['file'];
      // Check for upload errors
      if ($file['error'] !== UPLOAD_ERR_OK) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'File upload error: ' . $file['error']
         ], 400);
      }
      // Validate file type
      $allowed_types = ['text/csv', 'application/vnd.ms-excel', 'text/plain'];
      if (!in_array($file['type'], $allowed_types)) {
      $finfo = finfo_open(FILEINFO_MIME_TYPE);
      $mime_type = finfo_file($finfo, $file['tmp_name']);
      finfo_close($finfo);
      if (!in_array($mime_type, $allowed_types) && !in_array($file['type'], $allowed_types)) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'File must be a CSV'
@@ -679,7 +703,7 @@
      // Import using JaneAppClientImporter
      $importer = new JaneAppClientImporter();
      $default_role = get_option(BASE . 'client_import_role', JVB_USER);
      $default_role = get_option(BASE . 'referral_role', JVB_USER);
      $options = [
         'update_existing' => true,
@@ -711,12 +735,12 @@
      }
      // Clear cache
      $this->cache->clear();
      $this->cache->flush();
      return new WP_REST_Response([
         'success' => true,
         'message' => $message,
         'items' => $result,
         'stats' => $result,
         'skipped_details' => $details
      ]);
   }
@@ -726,20 +750,31 @@
    */
   public function handleSalesUpload(WP_REST_Request $request): WP_REST_Response
   {
      $files = $request->get_file_params();
      if (!isset($files['file'])) {
      // Access files from $_FILES directly for REST API uploads
      if (empty($_FILES['file'])) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'No file uploaded'
         ], 400);
      }
      $file = $files['file'];
      $file = $_FILES['file'];
      // Check for upload errors
      if ($file['error'] !== UPLOAD_ERR_OK) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'File upload error: ' . $file['error']
         ], 400);
      }
      // Validate file type
      $allowed_types = ['text/csv', 'application/vnd.ms-excel', 'text/plain'];
      if (!in_array($file['type'], $allowed_types)) {
      $finfo = finfo_open(FILEINFO_MIME_TYPE);
      $mime_type = finfo_file($finfo, $file['tmp_name']);
      finfo_close($finfo);
      if (!in_array($mime_type, $allowed_types) && !in_array($file['type'], $allowed_types)) {
         return new WP_REST_Response([
            'success' => false,
            'message' => 'File must be a CSV'
@@ -770,7 +805,7 @@
      }
      // Clear cache
      $this->cache->clear();
      $this->cache->flush();
      return new WP_REST_Response([
         'success' => true,