<?php

defined('BASEPATH') OR exit('No direct script access allowed');
	function xssclean($post)
	{
		$rtn = true; 
		if($post) {
			foreach ($post as $key => $data) {
				if (preg_match("/</i", $data, $match))  {
   					$rtn = false; 
   				}
			}
		}
		return $rtn;
	}

	function AddAuditLog($data) {
		$CI =& get_instance();
		$CI->load->model('common');
		$CI->common->addnewdatamodel("AuditLog",$data);
	}

	function getusername($id){

		 $mydata="";
	 $CI = get_instance();

    // You may need to load the model if it hasn't been pre-loaded
  	$CI->load->model('common');

    // Call a function of the model
    $mydata=$CI->common->readusername($id);
    return $mydata;



  
//		return "ABxc";
	}

	function getAddress($lat,$lng){
		$mydata="";
		$CI = get_instance();
	  	$CI->load->model('common');
	    $mydata=$CI->common->getAddress($lat,$lng);
	    return $mydata;
	}


	function getImage($id){

		 $mydata="";
	 $CI = get_instance();

    // You may need to load the model if it hasn't been pre-loaded
  	$CI->load->model('common');

    // Call a function of the model
    $mydata=$CI->common->readImage($id);
    return $mydata;



  
//		return "ABxc";
	}


	function getTimeDifferenceInSeconds($startTime, $endTime) {
		// Convert the start time and end time to timestamps
		 $startTimeSeconds = $startTime / 1000;
		 $endTimeSeconds = $endTime / 1000;
		// Calculate the difference in seconds
		 $differenceInSeconds = $endTimeSeconds - $startTimeSeconds;
	
		
		return $differenceInSeconds;
	}
	function convertSecondsToHoursMinutes($seconds) {
		// Calculate the number of hours
		$hours = floor($seconds / 3600);
		
		// Calculate the remaining seconds after extracting hours
		$remainingSeconds = $seconds % 3600;
		
		// Calculate the number of minutes
		$minutes = floor($remainingSeconds / 60);
		if($hours>0 && $minutes>0){
			return sprintf("%02d hours %02d minutes", $hours, $minutes);
		}else if($hours==0 && $minutes>0){
			return sprintf("%02d minutes", $minutes);

		}else if($hours>0 && $minutes==0){
			return sprintf("%02d hours", $hours);

		}
		
		// Return the result as a formatted string
	
	}

	function getTimeDifference($startTime, $endTime) {
		// Convert milliseconds to seconds
		$startTimeSeconds = $startTime / 1000;
		$endTimeSeconds = $endTime / 1000;
		
		// Calculate the difference in seconds
		$differenceInSeconds = $endTimeSeconds - $startTimeSeconds;
		
		// Convert seconds to hours and minutes
		$hours = floor($differenceInSeconds / 3600);
		$minutes = floor(($differenceInSeconds % 3600) / 60);
		
		// Format the result
		if ($hours > 0) {
			if($minutes>0){
			return sprintf("%d hours and %02d minutes", $hours, $minutes);
			}else{
				return sprintf("%d hours", $hours);

			}

		} else {
			return sprintf("%02d minutes", $minutes);
		}
	}


	function convertTime($data) 
	{
		if(isset($data)) {
			date_default_timezone_set("Asia/Karachi");

			return date("d/m/Y h:i:s", $data/1000);
		} else {
			return '';
		}
	}
	function convertTimeinMonth($data) 
	{
		if(isset($data)) {
			return date("Y-m-d", $data/1000);
		} else {
			return '';
		}
	}




	function output($data) 
	{
		if(isset($data)) {
			return html_escape($data);
		} else {
			return '';
		}
	}
	function pointInPolygon($point, $polygon, $pointOnVertex = true) {
	    $pointOnVertex = $pointOnVertex;
	    $point = pointStringToCoordinates($point);
	    $vertices = array(); 
	    foreach ($polygon as $vertex) {
	        $vertices[] = pointStringToCoordinates($vertex); 
	    }
	    if ($pointOnVertex == true and pointOnVertex($point, $vertices) == true) {
	        return "vertex";
	    }
	    $intersections = 0; 
	    $vertices_count = count($vertices);
	    for ($i=1; $i < $vertices_count; $i++) {
	        $vertex1 = $vertices[$i-1]; 
	        $vertex2 = $vertices[$i];
	        if ($vertex1['y'] == $vertex2['y'] and $vertex1['y'] == $point['y'] and $point['x'] > min($vertex1['x'], $vertex2['x']) and $point['x'] < max($vertex1['x'], $vertex2['x'])) { // Check if point is on an horizontal polygon boundary
	            return "boundary";
	        }
	        if ($point['y'] > min($vertex1['y'], $vertex2['y']) and $point['y'] <= max($vertex1['y'], $vertex2['y']) and $point['x'] <= max($vertex1['x'], $vertex2['x']) and $vertex1['y'] != $vertex2['y']) { 
	            $xinters = ($point['y'] - $vertex1['y']) * ($vertex2['x'] - $vertex1['x']) / ($vertex2['y'] - $vertex1['y']) + $vertex1['x']; 
	            if ($xinters == $point['x']) { // Check if lat lng is on the polygon boundary (other than horizontal)
	                return "boundary";
	            }
	            if ($vertex1['x'] == $vertex2['x'] || $point['x'] <= $xinters) {
	                $intersections++; 
	            }
	        } 
	    } 
	    if ($intersections % 2 != 0) {
	        return "inside";
	    } else {
	        return "outside";
	    }
	}

	function pointOnVertex($point, $vertices) {
	  foreach($vertices as $vertex) {
	      if ($point == $vertex) {
	          return true;
	      }
	  }
	}
	function pointStringToCoordinates($pointString) {
	    $coordinates = explode(" ", $pointString);
	    return array("x" => $coordinates[0], "y" => $coordinates[1]);
	}

	function sitedata() {
	  $CI =& get_instance();
	  $CI->db->from('settings');
	  $query = $CI->db->get();
	  $siteinfo = $query->result_array();
	  if(count($siteinfo)>=1) {
	    return $siteinfo[0];
	  } 
    }

    function userpermission($link) {
    	$permissons = $_SESSION['userroles'];
    	if($permissons[$link]==1) {
    		return true;
    	} else {
    		return false;
    	}
    }