<?php
session_start();
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(1); 


header("Content-Type: application/json;charset=utf-8"); 
include('conf.php');
//include("injection.php");
//include("encrypt.php");


mysqli_query($conn,"SET NAMES 'utf8'");
mysqli_query($conn,'SET CHARACTER SET utf8');
mysqli_query($conn,"SET character_set_client=utf8");
mysqli_query($conn,"SET character_set_connection=utf8");
mysqli_query($conn,"SET character_set_database=utf8");
mysqli_query($conn,"SET character_set_results=utf8");
mysqli_query($conn,"SET character_set_server=utf8");
mysqli_query($conn,"set character_set_server='utf8'"); 
	$user_id='1';
	$table='form_options';
	$auth_check='user_update';
	$token = null;
	$status='';
	$affected_rows=0;
	$error_arr=[];
	$error_database_arr=[];
	$user_auth='';
	$post_data_array = array();
	$headers = apache_request_headers();
	
	
	
	//include "auth.php";
	//if($auth_errors==1){
	//   goto to_result;
	//}			
			


	$post_data = json_decode(file_get_contents('php://input'), true);
	//$post_data['id']=str_replace(' ','+',$post_data['id']);

	//$post_data['id']=decrypt_dynamic($post_data['id'],$headers['Authorization']);
	$modified=date('Y-m-d H:i:s');
	//echo $modified;
	
	
	
 //حقول الزامية
	
	  
  	  if (!isset($post_data['sort_array']) || !is_array($post_data['sort_array'])) {
			array_push($error_arr,'خطأ فى المصفوفة');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
	}

	  
	  //حقول غير الزامية
	 

      
	  
	  //حقول غير الزامية
	 
	 if(count($error_arr) == 0){
		  //echo 'validatation success';
		  
		  
		
		

		$sort_array = $post_data['sort_array'];
		$max_items = 50; // حط حد معقول

		if (count($sort_array) === 0 || count($sort_array) > $max_items) {
			array_push($error_arr,'خطأ فى عدد عناصر المصفوفة');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
		}

		$cases = [];
		$ids = [];
		$seen = [];

		foreach ($sort_array as $item) {
			if (!isset($item['index']) || !isset($item['current_o'])) {
				array_push($error_arr,'خطأ فى تركيب المصفوفة');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
			}

			$index = intval($item['index']);
			$id = intval($item['current_o']);

			if ($index <= 0 || $id <= 0) {
				array_push($error_arr,'خطأ فى الارقام داخل المصفوفة');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
			}

			if (isset($seen[$id])) {
				array_push($error_arr,'خطأ تكرار رقم ال id');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
			}
			$seen[$id] = true;

	

			$cases[] = "WHEN $id THEN $index";
			$ids[] = $id;
		}

		if (empty($ids)) {
			array_push($error_arr,'خطأ فى ال Id يبدو فارغ');$status='not_done';$message='خطأ فى المدخلات';goto to_result;
		}
		// --- تحويل المصفوفة إلى string لاستخدامها في IN ---
		$ids_list = implode(",", $ids);

		// --- بناء الاستعلام الواحد (بدون تحقق test_id) ---
		$sql = "
		UPDATE $table
		SET option_sort = CASE id
			".implode(" ", $cases)."
		END
		WHERE id IN ($ids_list)
		";

		// تنفيذ داخل ترانزاكشن
		mysqli_begin_transaction($conn);



		if (mysqli_query($conn, $sql)) {
			mysqli_commit($conn);
		    $status='done';
			$message='تم الحفظ';
			  //print_r($error_arr);

			  
		 }else{
			  $status='not_done';
			  $message='خطأ فى البيانات';
			  //print_r($error_arr);
		 }
	}else{
			 
		mysqli_rollback($conn);
		$status='not_done';
		$message='خطأ فى البيانات';
		//print_r($error_arr);
	}  
	  
	to_result:
	  
	$result = array(
		//'token' => $token,
		'status' => $status,
		'message' => $message,
		'affected_rows'=>$affected_rows,
		'errors' => $error_arr,
		'errors_database' => $error_database_arr,
		'structure' => $table,
		'reload' => 'true',
		
		

	);


echo json_encode($result,JSON_UNESCAPED_UNICODE);

 
	  
	  

?>