Files
2019-05-25 23:11:05 -04:00

476 lines
19 KiB
PHP

<?php
class AGT_Controller extends CI_Controller {
var $template = array(
'table_open' => "<table class='table table-striped table-hover table-bordered table-condensed'>",
'thead_open' => '<thead class=\'bg-indigo\'>',
'thead_close' => '</thead>',
'heading_row_start' => '<tr>',
'heading_row_end' => '</tr>',
'heading_cell_start' => '<th>',
'heading_cell_end' => '</th>',
'tbody_open' => '<tbody>',
'tbody_close' => '</tbody>',
'row_start' => '<tr>',
'row_end' => '</tr>',
'cell_start' => '<td>',
'cell_end' => '</td>',
'row_alt_start' => '<tr>',
'row_alt_end' => '</tr>',
'cell_alt_start' => '<td>',
'cell_alt_end' => '</td>',
'table_close' => '</table>'
);
var $template_nohead = array(
'table_open' => "<table class='table table-striped table-hover table-bordered table-condensed'>",
'thead_open' => '<thead>',
'thead_close' => '</thead>',
'heading_row_start' => '<tr>',
'heading_row_end' => '</tr>',
'heading_cell_start' => '<th>',
'heading_cell_end' => '</th>',
'tbody_open' => '<tbody>',
'tbody_close' => '</tbody>',
'row_start' => '<tr>',
'row_end' => '</tr>',
'cell_start' => '<td>',
'cell_end' => '</td>',
'row_alt_start' => '<tr>',
'row_alt_end' => '</tr>',
'cell_alt_start' => '<td>',
'cell_alt_end' => '</td>',
'table_close' => '</table>'
);
public $data = array();
function __construct() {
parent::__construct();
}
protected function smart_htmlspecialchars($str) {
if (substr($str, 0, 1) == '<')
return $str;
return htmlspecialchars($str);
}
protected function sql_escape_func($inp) {
if (is_array($inp)) {
return array_map(__METHOD__, $inp);
}
if (!empty($inp) && is_string($inp)) {
return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp);
}
return $inp;
}
protected function medtrans_call_api($action, $in, &$out) {
$ret = -1;
$in['pid'] = 115;
// THE BASE ENDPOINT WILL COME FROM CONFIG FILE
$endpointbase = "https://extlayer.kleenapp.co/agent/";
switch ($action) {
case MEDTRANS_TRANSP_DEVICELIST:
$endpoint = $endpointbase . "getdevicelist";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"location_id" => $in["location_id"],
"sessionid" => $_SESSION["agent_sessionid"]
);
break;
case MEDTRANS_TRANSP_LOGIN:
$endpoint = $endpointbase . "agentlogin";
$data = array(
"username" => $in["username"],
"password" => $in["password"]
);
break;
case MEDTRANS_TRANSP_CREATE:
$endpoint = $endpointbase . "createagent"; //"agentcreate";
$data = $in;
// $data['login'] = 1; // force login after creattion
break;
case MEDTRANS_TRANSP_GET_TRANSLIST:
$endpoint = $endpointbase . "gettransportlist";
$data = array(
"agent_id" => $in["agent_id"],
"limit" => $in["limit"],
"transport_id" => $in["transport_id"]
);
break;
case MEDTRANS_TRANSP_VERIFYSESSION:
$endpoint = $endpointbase . "verifysession";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"]
);
break;
case MEDTRANS_TRANSP_GET_TRANSPORTER:
$endpoint = $endpointbase . "getlocation";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"transporter_id" => $in["location_id"],
"sessionid" => $_SESSION["agent_sessionid"]
);
break;
case MEDTRANS_TRANSP_ADDLOCATION:
$endpoint = $endpointbase . "addtransportlocation";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"loc_name" => $in["loc_name"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US"
);
break;
case MEDTRANS_TRANSP_EDITLOCATION:
$endpoint = $endpointbase . "editlocation";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"transporter_id" => $in["location_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"loc_name" => $in["loc_name"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US"
);
break;
case MEDTRANS_TRANSP_LISTLOCATION:
$endpoint = $endpointbase . "listtransportlocation";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"limit" => $in["limit"]
);
break;
case MEDTRANS_TRANSP_GET_TRANSLATOR:
$endpoint = $endpointbase . "getinterpreter";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"interpreter_id" => $in["interpreter_id"],
"sessionid" => $_SESSION["agent_sessionid"]
);
break;
case MEDTRANS_TRANSP_ADD_TRANSLATOR:
$endpoint = $endpointbase . "addinterpreter";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"email" => $in["email"],
"firstname" => $in["firstname"],
"lastname" => $in["lastname"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US"
);
break;
case MEDTRANS_TRANSP_EDIT_TRANSLATOR:
$endpoint = $endpointbase . "editinterpreter";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"interpreter_id" => $in["interpreter_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"email" => $in["email"],
"firstname" => $in["firstname"],
"lastname" => $in["lastname"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US"
);
break;
case MEDTRANS_TRANSP_LIST_TRANSLATOR:
$endpoint = $endpointbase . "listinterpreters";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"limit" => $in["limit"]
);
break;
case MEDTRANS_USER_GET_LANGUAGE:
$endpoint = $endpointbase . "getsupportedlanguage";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"limit" => 1000,
'status' => 0
);
break;
case MEDTRANS_TRANSP_LANGUAGELIST:
$endpoint = $endpointbase . "getinterpreterlanguage";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"interpreter_id" => $in["interpreter_id"],
"language_id" => $in["language_id"],
"limit" => 1000,
'status' => 0
);
break;
case MEDTRANS_TRANSP_MANAGELANGUAGE:
$endpoint = $endpointbase . "interpreterlang";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"interpreter_id" => $in["interpreter_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"mode" => $in["mode"],
"lang_code" => $in["lang_code"]
);
if (isset($in["language_id"]))
$data["language_id"] = $in["language_id"];
if (isset($in["flags"]))
$data["flags"] = $in["flags"];
break;
case MEDTRANS_UPLOADS:
$endpoint = $endpointbase . "uploadfile";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"interpreter_id" => $in["interpreter_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"language_id" => $in["language_id"],
"file_type" => INTERPRETER_CERTIFICATE,
"name" => $in["name"],
"data" => $in["data"]
);
return $this->fileUpload($endpoint, $data, $out);
break;
case MEDTRANS_DOWNLOAD:
$endpoint = $endpointbase . "download";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"interpreter_id" => $in["interpreter_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"language_id" => $in["language_id"],
"file_type" => INTERPRETER_CERTIFICATE,
"document_id" => $in["document_id"]
);
list($ret, $name, $data) = $this->fileDownload($endpoint, $data, $out);
$out["file"] = $name;
$out["data"] = $data;
return $ret;
break;
case MEDTRANS_TRANSP_AGENTLANGUAGE:
$endpoint = $endpointbase . "getagentlanguage";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"language_id" => $in["language_id"]
);
break;
case MEDTRANS_TRANSP_DRIVERSCALL:
if ($in["mode"] == MODE_LIST) {
$endpoint = $endpointbase . "getdriverslist";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"driver_id" => $in["driver_id"]
);
} else if ($in['mode'] == MODE_ADD) {
$endpoint = $endpointbase . "createdriver";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"email" => $in["email"],
"firstname" => $in["firstname"],
"lastname" => $in["lastname"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US",
"lic_number" => $in["lic_number"],
"lic_state" => $in["lic_state"],
"expr_month" => $in["expr_month"],
"expr_year" => $in["expr_year"]
);
} else if ($in['mode'] == MODE_UPDATE) {
$endpoint = $endpointbase . "updatedriver";
$data = array(
"agent_id" => $_SESSION["agent_id"],
"driver_id" => $in["driver_id"],
"sessionid" => $_SESSION["agent_sessionid"],
"email" => $in["email"],
"firstname" => $in["firstname"],
"lastname" => $in["lastname"],
"phone" => $in["phone"],
"street" => $in["street"],
"city" => $in["city"],
"zipcode" => $in["zipcode"],
"state" => $in["state"],
"country" => "US",
"lic_number" => $in["lic_number"],
"lic_state" => $in["lic_state"],
"expr_month" => $in["expr_month"],
"expr_year" => $in["expr_year"]
);
}
break;
}
// call the endpoint here
$content = json_encode($data);
$curl = curl_init($endpoint);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type" => "application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 200) {
$out["status"] = "Service error: call to URL $endpoint failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl);
return $ret;
}
$out["status"] = "";
$ret = -1; // PHP_API_OK
curl_close($curl);
$out = json_decode($json_response, true);
$ret = isset($out['internal_return']) ? $out['internal_return'] : -1;
//$out = array_merge($out, $response);
return $ret;
}
protected function fileDownload($endpoint, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$output = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
if ($status != 200) {
$out["status"] = "Service error: call to URL $endpoint failed with status $status, curl_error " . curl_error($ch) . ", curl_errno " . curl_errno($ch);
return -1;
}
curl_close($ch);
$header = substr($output, 0, $header_size);
$body = substr($output, $header_size);
$headers = array();
$data = explode("\r\n", $header);
//$headers['status'] = $data[0];
//array_shift($data);
foreach ($data as $part) {
if (strpos($part, ":") !== false) {
$middle = explode(":", $part);
$headers[trim($middle[0])] = trim($middle[1]);
}
}
return array(0, $headers["X-File-Name"], $body);
}
protected function fileUpload($endpoint, $data, $out) {
$ret = -1;
$uploaddir = realpath('./') . '/tmp/';
$uploadfile = $uploaddir . $data['name'];
if (file_put_contents($uploadfile, $data['data']) === FALSE) {
return $ret;
}
unset($data['name']);
unset($data['data']);
/*
$uploadfile = $uploaddir . basename($_FILES['file_contents']['name']);
if (move_uploaded_file($_FILES['file_contents']['tmp_name'], $uploadfile)) {
// OK
} else {
return $ret;
}
*/
$file_name_with_full_path = realpath($uploadfile);
$data['file_contents'] = '@' . $file_name_with_full_path;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $endpoint);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
unlink($file_name_with_full_path);
if ($status != 200) {
$out["status"] = "Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl);
$ret = -1;
} else {
$out = json_decode($json_response, true);
$ret = 0;
}
return $ret;
}
protected function populateAgentsession($out) {
$_SESSION['agent_id'] = $out['id'];
$_SESSION['city'] = $out['city'];
$_SESSION['email'] = $out['email'];
$_SESSION['firstname'] = $out['firstname'];
$_SESSION['lastname'] = $out['lastname'];
$_SESSION['loc'] = $out['loc'];
$_SESSION['phone'] = $out['phone'];
$_SESSION['state'] = $out['state'];
$_SESSION['username'] = $out['username'];
$_SESSION['zipcode'] = $out['zipcode'];
$_SESSION['transporter'] = $out['transporter'];
$_SESSION['agent_sessionid'] = $out['sessionid'];
$_SESSION['sessionid'] = $out['sessionid'];
$_SESSION['agent_name'] = $out["agent_name"];
$_SESSION['agent_type'] = $out["agent_type"];
// print_r($out);
}
protected function formatedMesage($msgType, $theMessage) {
return "<div class=\"text-left\"><div class=\"alert alert-danger no-border\">" . $theMessage . "</div></div>";
}
protected function renderAgentPage($page_name, $data) {
$this->load->view('template/view_agent_header', $data);
$this->load->view('agent/' . $page_name, $data);
$this->load->view('template/view_agent_footer', $data);
}
protected function testLoginInput(&$username, &$password, &$error_message, &$valid_entry) {
$valid_entry = true;
$username = urlencode(trim($this->input->post('username')));
$password = trim($this->input->post('password'));
if ($username == '' or $password == '') {
$valid_entry = false;
$error_message = 'Enter a Username/Password to continue';
}
}
}