// ================================================================
// إنفايتنا — كود موحد كامل | ضعه في functions.php
// ================================================================
if(!defined('INVATNA_PRODUCT_ID')) define('INVATNA_PRODUCT_ID', 5688);
// ----------------------------------------------------------------
// 1. تعديل حقل الهاتف: تسمية + placeholder + إلزامي
// (الحقل يبقى في DOM لكن مخفي بـ JS بعد ما الكارت يُبنى)
// ----------------------------------------------------------------
add_filter('woocommerce_checkout_fields', 'invatna_phone_field');
function invatna_phone_field($fields){
$fields['billing']['billing_phone']['required'] = true;
$fields['billing']['billing_phone']['label'] = 'رقم الواتساب (مع مفتاح الدولة)';
$fields['billing']['billing_phone']['placeholder'] = '+966XXXXXXXXX';
return $fields;
}
// ----------------------------------------------------------------
// 2. كارت التحقق + إخفاء الحقل الأصلي بـ JS (لا CSS)
// ----------------------------------------------------------------
add_action('wp_footer','invatna_otp_ui');
function invatna_otp_ui(){
if(!is_checkout()) return;
?>
update_meta_data('_invatna_verified_token', sanitize_text_field($_POST['invatna_verified_token']));
if(!empty($_POST['invatna_verified_phone']))
$order->update_meta_data('_invatna_verified_phone', sanitize_text_field($_POST['invatna_verified_phone']));
}
// ----------------------------------------------------------------
// 4. إرسال بيانات الطلب لإنفايتنا بعد اكتمال الدفع
// ----------------------------------------------------------------
add_action('woocommerce_payment_complete','send_to_invatna');
function send_to_invatna($order_id){
$order = wc_get_order($order_id);
if(!$order) return;
$has_target = false;
foreach($order->get_items() as $item){
if($item->get_product_id() == INVATNA_PRODUCT_ID){ $has_target = true; break; }
}
if(!$has_target) return;
$verified_phone = $order->get_meta('_invatna_verified_phone');
$phone = !empty($verified_phone) ? $verified_phone : $order->get_billing_phone();
$name = trim($order->get_billing_first_name().' '.$order->get_billing_last_name());
$verified_token = $order->get_meta('_invatna_verified_token') ?: '';
$quantity=200; $qr_option=''; $event_date=''; $event_time=''; $hallname=''; $delivery_method='';
foreach($order->get_items() as $item){
if($item->get_product_id() != INVATNA_PRODUCT_ID) continue;
foreach($item->get_meta_data() as $meta){
$k = $meta->key; $v = $meta->value;
if(stripos($k,'عدد')!==false || stripos($k,'quantity')!==false)
if(preg_match('/\d+/',$v,$m)) $quantity = intval($m[0]);
if(stripos($k,'qr')!==false) $qr_option = $v;
if(stripos($k,'date')!==false || $k==='التاريخ') $event_date = $v;
if(stripos($k,'time')!==false || $k==='الوقت') $event_time = $v;
if(stripos($k,'hall')!==false || stripos($k,'قاعة')!==false || stripos($k,'مكان')!==false) $hallname = $v;
if(stripos($k,'delivery')!==false) $delivery_method = $v;
}
}
$final_phone = preg_replace('/[^0-9]/','', trim($phone));
$response = wp_remote_post('https://invite-bot.replit.app/api/webhook/woocommerce',[
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode([
'customer_phone' => $final_phone,
'customer_name' => $name,
'quantity' => $quantity,
'order_id' => $order_id,
'product_id' => INVATNA_PRODUCT_ID,
'date' => $event_date,
'time' => $event_time,
'hallname' => $hallname,
'delivery_method' => $delivery_method,
'qr_option' => $qr_option,
'woo_verified_token' => $verified_token,
]),
'timeout' => 30,
]);
if(is_wp_error($response))
error_log('Invatna webhook error: '.$response->get_error_message());
}