<?php

require_once("function.php");

//Auth checking

// Takes raw data from the request
$json = file_get_contents('php://input');

// Converts it into a PHP object
$data = json_decode($json);

$data = (array) $data;

//checking for authentication.. 
$agent_id = token_auth($data['token']);

//var_dump($data);

try{

	foreach ($data as $key => $value) {
		# code...
		//$value = (array) $value;

		switch ($key) {
			case 'create_transit':
				# code...
				foreach ($value as $k => $v) {
					$row_data = field_value_query_gen($v);
					$field_string = $row_data['fields'];
					$field_value_string = $row_data['values'];
					excutable_action("transit", $field_value_string, $field_string, "insert", "arms", $con);
				}
				break;

			case 'update_transit':
				# code...
				foreach ($value as $k => $v) {
					$field_value_string = field_value_query_gen_update($v);
					excutable_action("transit", $field_value_string, "transit_id = " . $v->transit_id, "update", "arms", $con);
				}
				break;

			case 'update_transit_email':
				# code...
				foreach ($value as $k => $v) {

					$exist = excutable_action("transit_email_rtr", "*", "transit_id = " . $v->transit_id, "select", "arms", $con);
					if($exist){
						$field_value_string = field_value_query_gen_update($v);
						excutable_action("transit_email_rtr", $field_value_string, "transit_id = " . $v->transit_id, "update", "arms", $con);
					}
					else{
						$row_data = field_value_query_gen($v);
						$field_string = $row_data['fields'];
						$field_value_string = $row_data['values'];
						excutable_action("transit_email_rtr", $field_value_string, $field_string, "insert", "arms", $con);
					}
					
				}
				break;

			case 'create_task_event':
				# code...
				foreach ($value as $k => $v) {
					$row_data = field_value_query_gen($v);
					$field_string = $row_data['fields'];
					$field_value_string = $row_data['values'];

					excutable_action("event", $field_value_string, $field_string, "insert", "rtr", $con);
				}
				break;

			case 'create_task_event_v2': // for custom task event.. needs to call them after existing 
				# code...
				foreach ($value as $k => $v) {
					$row_data = field_value_query_gen($v);
					$field_string = $row_data['fields'];
					$field_value_string = $row_data['values'];

					excutable_action("event", $field_value_string, $field_string, "insert", "rtr", $con);
				}
				break;

			case 'update_task_list':
				# code...
				foreach ($value as $k => $v) {
					$field_value_string = field_value_query_gen_update($v);
					excutable_action("event", $field_value_string, "event_id = " . $v->event_id, "update", "rtr", $con);
				}
				break;
			
			default:
				# code...
				break;
			}
		}

	$response["success"] = 1;
	$response["message"] = "Successfully Updated";
	echo json_encode($response);

} catch (Exception $e) {

	$response["success"] = 0;
	$response["message"] = $e->getMessage();
	echo json_encode($response);
}


function excutable_action($table, $field_value_string, $field_string,  $action = "update", $db = "arms", $con){


	if($db == "arms"){
		change_db($con, "delshani_armsonline_dev");
	}
	else{
		change_db($con, "delshani_reporting_dev");
	}

	if($action == "insert"){
		//echo "INSERT INTO $table($field_string) VALUES($field_value_string) |||||| ";
		mysql_query("INSERT INTO $table($field_string) VALUES($field_value_string)");
	}
	elseif($action == "select"){
		//echo "SELECT $field_value_string FROM $table WHERE $field_string |||||| ";
		return mysql_num_rows(mysql_query("SELECT $field_value_string FROM $table WHERE $field_string"));
	}
	else{
		//echo "UPDATE $table SET $field_value_string WHERE ". $field_string ." ||||| ";	
		mysql_query("UPDATE $table SET $field_value_string WHERE ". $field_string);
	}
}

function field_value_query_gen($v){
	
	$field_string = "";
	$field_value_string = "";
	$total_fields = count(get_object_vars($v));
	$i = 1;
	$flag = 0;
	foreach ($v as $field => $field_value) {
		# code...
		
		if($field == "picture" && $field_value != ""){
			$field_value = field_value_image($field_value);
		}

		if($i==$total_fields){
			$field_string .= $field;
			$field_value_string .= "'".$field_value."'";
		}
		else{
			$field_string .= $field.",";
			$field_value_string .= "'".$field_value."',";	
		}

		$i++;

	}

	return array("fields"=> $field_string, "values"=>$field_value_string);
}

function field_value_query_gen_update($v){
	
	$field_value_string = "";
	$total_fields = count(get_object_vars($v));
	$i = 1;

	foreach ($v as $field => $field_value) {
		# code...
		if($field == "picture" && $field_value != ""){

			$field_value = field_value_image($field_value);
		}

		if($i==$total_fields){
			$field_value_string .= $field . " = '" . $field_value . "'";
		}
		else{
			$field_value_string .= $field . " = '" . $field_value . "',";
		}

		$i++;

	}

	return $field_value_string;
}

function field_value_image($field_value){
	
   // base64 encoded utf-8 string
	$binary = base64_decode($field_value);

	// binary, image type
	$type = getB64Type($binary);

	$image_name = "img_".date("Y-m-d-H-m-s").".".$type;

	header("Content-Type: bitmap; charset=utf-8");

	$file = fopen("images/" . $image_name, "wb");

	fwrite($file, $binary);

	fclose($file);

	// image name with full path
	$image_name_fullPath = "images/".$image_name ;

	return $image_name_fullPath;
}

function getB64Type($str) {
    
    $f = finfo_open();

	$mime_type = finfo_buffer($f, $binary, FILEINFO_MIME_TYPE);
	$mime_type = explode("/", $mime_type);
	$type = $mime_type[1];
	return $type;
}
