<?php
require_once('config.php');
require_once('utility_image.php');
//$uploaddir = "C:\\wamp64\\www\\CMMS_Standard\\temp\\";
$uploaddir;
$error_message;
$valid = true;
$json_return = array();
$json_return2 = array();
$json_return = [];

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

	$count    	   	= $_REQUEST["count"];
	$json 			= $_REQUEST["json"];
	$json 			= json_decode($json);
	$rowid			= $json->data->rowid;
	$site_cd		= $json->data->site_cd;
	$EMPID			= $json->data->EMPID;	
	$LOGINID		= $json->data->LoginID;	
	$folder			= $json->data->folder;
	$dvc_id			= $json->data->dvc_id;
	
	$uploaddir = "C:\\wamp64\\www\\".$folder."\\mobile_image_temp\\temp_".$LOGINID."_".$dvc_id."\\";
	if (!is_dir($uploaddir)) {
			mkdir($uploaddir, 0777, true);
			mkdir($uploaddir."\\thumbnail\\", 0777, true);
	}
			
	for ($x = 1; $x <= $count; $x++) {
		
		$file_name = $_FILES['file_'.$x]['name'];
		$file_name = strtolower($file_name);
		//echo $str;
		
		if (strpos($file_name, '.png') !== false) {
			
			//$file_name = str_replace(".png",".jpg",$file_name);
			$imageObject = $_FILES['file_'.$x]['tmp_name'];	
			$imageObject = imagecreatefrompng($imageObject);
			imagejpeg($imageObject, $uploaddir.$file_name, 100);
			$fullPathwithfileName = $uploaddir.$file_name;	
			
			//Check if file exist
			if (file_exists($fullPathwithfileName)) {
				list($width, $height, $image_type) = getimagesize($fullPathwithfileName);
				$imageObject = load_image($fullPathwithfileName, $image_type);
				# Get exif information
				//$exif = exif_read_data($fullPathwithfileName);
			} else {
				echo "File not exist";
			}
			$datastring= file_get_contents($fullPathwithfileName);
			$data=unpack("H*hex", $datastring);

			$sql = "INSERT INTO ast_ref	(	site_cd, 			audit_user, 		audit_date, 		status,					column1, 
											FILE_NAME, 			type, 				mst_rowid, 			attachment,				mbl_audit_user,	mbl_audit_date) 
											
								VALUES 	(	'".$site_cd."',		'".$EMPID."', 		getdate(),			'Saved', 				'Native', 
											'".$file_name."',	'P', 				".$rowid.", 		0x".$data['hex'].",		'".$LOGINID."',	getdate()) SELECT SCOPE_IDENTITY() as rowid";
	
			$stmt = sqlsrv_query( $conn, $sql);				
							
			if( !$stmt ) {
				$error_message = "Error insert table (ast_ref)";
				returnError($error_message);
				die( print_r( sqlsrv_errors(), true));
			}else{
				unlink($fullPathwithfileName);
			}

			$json_ast_ref = array();
			do {
				while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
					$json_ast_ref['rowid'] = $row['rowid'];
					$json_ast_ref['action'] = "INSERT";
					array_push($json_return2, $json_ast_ref);
					
				}
			} while ( sqlsrv_next_result($stmt) );	
			
			imagedestroy($imageObject);
			
			//unlink($fullPathwithfileName);
			
		}else if(strpos($file_name, '.jpg') !== false){
			
			$image = $_FILES['file_'.$x]['tmp_name'];
			$fullPathwithfileName = $uploaddir.$file_name;
			
			//Check if file upload successfully
			if (move_uploaded_file($image, $fullPathwithfileName)){
				
				
				
				//Check if file exist
				if (file_exists($fullPathwithfileName)) {
					
					list($width, $height, $image_type) = getimagesize($fullPathwithfileName);
					$imageObject = load_image($fullPathwithfileName, $image_type);
					# Get exif information
					$exif = exif_read_data($fullPathwithfileName);
					
				}else {
					echo "File not exist";
				}
				
				
				if (!empty($exif['Orientation'])) {
				# Get orientation
				
				$orientation = $exif['Orientation'];
				//echo $orientation;
				}else{
					$orientation = 0 ;
					//echo "0";
				}
				
				# Manipulate image
				switch ($orientation) {
					case 2:
						imageflip($imageObject, IMG_FLIP_HORIZONTAL);
						break;
					case 3:
						$imageObject = imagerotate($imageObject, 180, 0);
						break;
					case 4:
						imageflip($imageObject, IMG_FLIP_VERTICAL);
						break;
					case 5:
						$imageObject = imagerotate($imageObject, -90, 0);
						imageflip($imageObject, IMG_FLIP_HORIZONTAL);
						break;
					case 6:
						$imageObject = imagerotate(load_image($fullPathwithfileName, $type), -90, 0);
						break;
					case 7:
						$imageObject = imagerotate($imageObject, 90, 0);
						imageflip($imageObject, IMG_FLIP_HORIZONTAL);
						break;
					case 8:
						$imageObject = imagerotate($imageObject, 90, 0); 
						break;
				}
				save_image($imageObject, $fullPathwithfileName, 'jpeg', 100);
				
				$datastring= file_get_contents($uploaddir.$file_name);
				$data=unpack("H*hex", $datastring);
				
				
				if (count($data) > 0){					
					
					$sql = "INSERT INTO ast_ref	(	site_cd, 			audit_user, 		audit_date, 		status,				column1, 
													FILE_NAME, 			type, 				mst_rowid, 			attachment,			mbl_audit_user,		mbl_audit_date) 
									VALUES 		(	'".$site_cd."',		'".$EMPID."', 		getdate(),			'Saved', 			'Native', 
													'".$file_name."',	'P', 				".$rowid.", 		0x".$data['hex'].",	'".$LOGINID."',		getdate()) SELECT SCOPE_IDENTITY() as rowid";
		
					$stmt = sqlsrv_query( $conn, $sql);				
									
					if( !$stmt ) {
						//$error_message = "Error insert table (wko_ref)";
						//returnError($error_message);
						//die( print_r( sqlsrv_errors(), true));
						$json_ast_ref['rowid'] = 0;
						$json_ast_ref['action'] = "Error insert table (ast_ref) for image file (".$file_name.")";
						array_push($json_return2, $json_ast_ref);
					}else{
						unlink($fullPathwithfileName);
					}

					$json_ast_ref = array();
					do {
						while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
							$json_ast_ref['rowid'] = $row['rowid'];
							$json_ast_ref['action'] = "INSERT";
							array_push($json_return2, $json_ast_ref);		
							
						}
				   } while ( sqlsrv_next_result($stmt) );	
							
				}else{
					$json_ast_ref['rowid'] = 0;
					$json_ast_ref['action'] = "Unpack failed for image file (".$file_name.")";
					array_push($json_return2, $json_ast_ref);
				}
			}else{
				$json_ast_ref['rowid'] = 0;
				$json_ast_ref['action'] = "move_uploaded_file failed for image file (".$file_name.")";
				array_push($json_return2, $json_ast_ref);
			}						
		   
		}else if (strpos($file_name, '.pdf') !== false){
			
			$image = $_FILES['file_'.$x]['tmp_name'];
			$fullPathwithfileName = $uploaddir.$file_name;
			move_uploaded_file($image, $fullPathwithfileName);			
			$datastring= file_get_contents($uploaddir.$file_name);
			$data=unpack("H*hex", $datastring);		
			
			$sql = "INSERT INTO ast_ref	(	site_cd, 			audit_user, 		audit_date, 		status,					column1, 			column2, 
											FILE_NAME, 			type, 				mst_rowid, 			attachment,				mbl_audit_user,		mbl_audit_date) 
					VALUES 				(	'".$site_cd."',		'".$EMPID."', 		getdate(),			'Saved', 				'Native', 			'Det', 
											'".$file_name."',	'A', 				".$rowid.", 		0x".$data['hex'].",		'".$LOGINID."',		getdate()) SELECT SCOPE_IDENTITY() as rowid";
	
			$stmt = sqlsrv_query( $conn, $sql);				
							
			if( !$stmt ) {
				$error_message = "Error insert table (ast_ref)";
				returnError($error_message);
				die( print_r( sqlsrv_errors(), true));
			}else{
				unlink($fullPathwithfileName);
			}

			$json_ast_ref = array();
			do {
				while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
					$json_ast_ref['rowid'] = $row['rowid'];
					$json_ast_ref['action'] = "INSERT";
					array_push($json_return2, $json_ast_ref);
					
				}
			} while ( sqlsrv_next_result($stmt) );	
		}
	}

	$json_return['ast_ref'] = $json_return2;
	
}
		
if ($valid) {
	//sqlsrv_free_stmt( $stmt);
	sqlsrv_close( $conn);	
	
	//Declare NULL Array since no records inserted, in future will insert as wko_ref
	//$json = array();
	
	returnData($json_return);	
}

function insertImage($image){

}

function returnData($json){
	$returnData = array(
	'status' => 'SUCCESS',
	'message' => 'Asset attachment upload successfully',
	'data' => $json);
	
	echo json_encode($returnData);
}

function returnError($error_message){
	$json = array();
	
	$returnData = array(
	'status' => 'ERROR',
	'message' => $error_message,
	'data' => $json);
	
	echo json_encode($returnData);
	
	sqlsrv_free_stmt( $stmt);
	sqlsrv_close( $conn);	
		
	exit();
}


//Upload MultipleFile
//https://www.php.net/manual/en/features.file-upload.post-method.php
// foreach ($_FILES["pictures"]["error"] as $key => $error) {
    // if ($error == UPLOAD_ERR_OK) {
        // $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        // // basename() may prevent filesystem traversal attacks;
        // // further validation/sanitation of the filename may be appropriate
        // $name = basename($_FILES["pictures"]["name"][$key]);
        // move_uploaded_file($tmp_name, "data/$name");
    // }
// }

?>