diff --git a/.gitignore b/.gitignore index c1823f46..dcb0bc62 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /vendor/ .htaccess +/uploads/pop/ \ No newline at end of file diff --git a/.htaccess b/.htaccess index 2b5271b3..bb288077 100644 --- a/.htaccess +++ b/.htaccess @@ -1,5 +1,5 @@ php_flag display_errors On -# php_value error_reporting -1 +php_value error_reporting -1 RedirectMatch 403 ^/\.well-known Options -Indexes diff --git a/functions.php b/functions.php index 17036417..c4b93c5a 100644 --- a/functions.php +++ b/functions.php @@ -235,7 +235,7 @@ function sendAdminNotification($subject, $message) { global $mailjet; - $message = [ + $mail = [ 'Messages' => [ [ 'From' => [ @@ -244,7 +244,7 @@ function sendAdminNotification($subject, $message) ], 'To' => [ [ - 'Email' => "info@4wdcsa.co.za", + 'Email' => $_ENV['NOTIFICATION_ADDR'], 'Name' => 'Jacqui Boshoff' ] ], @@ -264,7 +264,7 @@ function sendAdminNotification($subject, $message) ]); $response = $client->request('POST', 'send', [ - 'json' => $message, + 'json' => $mail, 'auth' => ['1a44f8d5e847537dbb8d3c76fe73a93c', 'ec98b45c53a7694c4f30d09eee9ad280'] ]); diff --git a/submit_pop.php b/submit_pop.php index 58f18a4f..f294d756 100644 --- a/submit_pop.php +++ b/submit_pop.php @@ -10,6 +10,8 @@ if (!$user_id) { // Handle POST submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $eft_id = $_POST['eft_id'] ?? null; + $file_name = str_replace(' ', '_', $eft_id); + if (!$eft_id || !isset($_FILES['pop_file'])) { echo "
Invalid submission: missing eft_id or file.
"; @@ -20,7 +22,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } else { $file = $_FILES['pop_file']; $target_dir = "uploads/pop/"; - $target_file = $target_dir . $eft_id . ".pdf"; + $target_file = $target_dir . $file_name . ".pdf"; // Check for upload errors first if ($file['error'] !== UPLOAD_ERR_OK) { @@ -49,18 +51,58 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (move_uploaded_file($file['tmp_name'], $target_file)) { // Update EFT and booking status - $stmt1 = $conn->prepare("UPDATE efts SET status = 'PROCESSING' WHERE eft_id = ?"); - $stmt1->bind_param("s", $eft_id); - $stmt1->execute(); + $payment_type = $_POST['payment_type'] ?? 'booking'; - $stmt2 = $conn->prepare("UPDATE bookings SET status = 'PROCESSING' WHERE eft_id = ?"); - $stmt2->bind_param("s", $eft_id); - $stmt2->execute(); + if ($payment_type === 'membership') { + // Update EFT and booking status + $stmt1 = $conn->prepare("UPDATE efts SET status = 'PROCESSING' WHERE eft_id = ?"); + $stmt1->bind_param("s", $eft_id); + $stmt1->execute(); + // Update membership fee status + $stmt = $conn->prepare("UPDATE membership_fees SET payment_status = 'PROCESSING' WHERE payment_id = ?"); + $stmt->bind_param("s", $eft_id); + $stmt->execute(); + } else { + // Update EFT and booking status + $stmt1 = $conn->prepare("UPDATE efts SET status = 'PROCESSING' WHERE eft_id = ?"); + $stmt1->bind_param("s", $eft_id); + $stmt1->execute(); - //TODO send mail with pop attachment to jacqui & louise + $stmt2 = $conn->prepare("UPDATE bookings SET status = 'PROCESSING' WHERE eft_id = ?"); + $stmt2->bind_param("s", $eft_id); + $stmt2->execute(); + } - $_SESSION['message'] = "We have received your P.O.P. We will process it soon."; - header("Location: bookings.php"); + // Notify n8n and send the path to the uploaded file + $webhook_url = 'https://n8n.4wdcsa.co.za/webhook/process-pop'; + + $postData = [ + 'eft_id' => $eft_id, + 'payment_type' => $payment_type, + ]; + + $ch = curl_init($webhook_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json' + ]); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); + + $response = curl_exec($ch); + $error = curl_error($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($error) { + error_log("Webhook Error: $error"); + $_SESSION['message'] = $error; + header("Location: bookings.php"); + } else { + $_SESSION['message'] = "Thank you! We are busy processing your payment!"; + header("Location: bookings.php"); + } + exit; } else { echo "
Unable to move uploaded file.
"; @@ -73,12 +115,18 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Fetch bookings for dropdown -$stmt = $conn->prepare("SELECT eft_id FROM bookings WHERE user_id = ? AND status = 'AWAITING PAYMENT'"); -//TODO add membership id as well -$stmt->bind_param("i", $user_id); +$stmt = $conn->prepare(" + SELECT eft_id AS id, 'booking' AS type FROM bookings WHERE user_id = ? AND status = 'AWAITING PAYMENT' + UNION + SELECT payment_id AS id, 'membership' AS type FROM membership_fees WHERE user_id = ? AND payment_status = 'PENDING' +"); +$stmt->bind_param("ii", $user_id, $user_id); $stmt->execute(); $result = $stmt->get_result(); -$bookings = $result->fetch_all(MYSQLI_ASSOC); +$items = $result->fetch_all(MYSQLI_ASSOC); + + + $bannerFolder = 'assets/images/banners/'; $bannerImages = glob($bannerFolder . '*.{jpg,jpeg,png,webp}', GLOB_BRACE); @@ -112,26 +160,29 @@ if (!empty($bannerImages)) {

Submit Proof of Payment

-

To finalise your booking, select the booking that you have paid for below, and then upload your PDF proof of payment.

+

To finalise your booking/membership, select the payment reference below, and then upload your PDF proof of payment.

- 0) {?> + 0) {?> +
  • @@ -153,5 +204,16 @@ if (!empty($bannerImages)) {
  • + \ No newline at end of file diff --git a/uploads/pop/COURSE 11-22 C. PINTO.pdf b/uploads/pop/COURSE 11-22 C. PINTO.pdf deleted file mode 100644 index 3d0f1176..00000000 Binary files a/uploads/pop/COURSE 11-22 C. PINTO.pdf and /dev/null differ