Jake Vanderwerf
2026-01-05 9f86429a1252b45c95b7c62fbaa1b82de3723997
inc/rest/routes/ReferralRoutes.php
@@ -640,8 +640,21 @@
      if ($result['success']) {
         $this->cache->clear();
      }
      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,
@@ -716,7 +740,7 @@
      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'