From d38d825e3484d822ea3c1f0fb1df37ecf386b18a Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 04 Jan 2026 19:54:16 +0000
Subject: [PATCH] =TaxonomyCreator.js debugging

---
 inc/rest/routes/ReferralRoutes.php |   63 ++++++++++++++++++++++++-------
 1 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/inc/rest/routes/ReferralRoutes.php b/inc/rest/routes/ReferralRoutes.php
index aec6c55..fd0627b 100644
--- a/inc/rest/routes/ReferralRoutes.php
+++ b/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'

--
Gitblit v1.10.0