298 lines
11 KiB
PHP
298 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
use CodeIgniter\Controller;
|
|
use CodeIgniter\HTTP\CLIRequest;
|
|
use CodeIgniter\HTTP\IncomingRequest;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
use Exception;
|
|
use Twilio\Rest\Client;
|
|
|
|
/**
|
|
* Class BaseController
|
|
*
|
|
* BaseController provides a convenient place for loading components
|
|
* and performing functions that are needed by all your controllers.
|
|
* Extend this class in any new controllers:
|
|
* class Home extends BaseController
|
|
*
|
|
* For security be sure to declare any new methods as protected or private.
|
|
*/
|
|
abstract class BaseController extends Controller
|
|
{
|
|
/**
|
|
* Instance of the main Request object.
|
|
*
|
|
* @var CLIRequest|IncomingRequest
|
|
*/
|
|
protected $request;
|
|
use ResponseTrait;
|
|
/**
|
|
* An array of helpers to be loaded automatically upon
|
|
* class instantiation. These helpers will be available
|
|
* to all other controllers that extend BaseController.
|
|
*
|
|
* @var list<string>
|
|
*/
|
|
protected $db;
|
|
private $con_name = 'digifi_db'; // 'wrench_blog';
|
|
protected $helpers = [];
|
|
|
|
/**
|
|
* Be sure to declare properties for any property fetch you initialized.
|
|
* The creation of dynamic property is deprecated in PHP 8.2.
|
|
*/
|
|
// protected $session;
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
|
{
|
|
// Do Not Edit This Line
|
|
parent::initController($request, $response, $logger);
|
|
|
|
// Preload any models, libraries, etc, here.
|
|
|
|
// E.g.: $this->session = \Config\Services::session();
|
|
|
|
try {
|
|
$this->db = \Config\Database::connect($this->con_name);
|
|
} catch (Exception $e) {
|
|
echo 'Caught Data Connect Exception ::: ', $e->getMessage(), "\n";
|
|
}
|
|
}
|
|
|
|
protected function insert_db($table_name, $insert_data) : array{
|
|
$row = [];
|
|
$this->db->table($table_name)->insert($insert_data);
|
|
|
|
$query = $this->db->query("SELECT * FROM $table_name ORDER BY id DESC LIMIT 1");
|
|
$row = $query->getRowArray();
|
|
// echo $row->name;
|
|
return $row;
|
|
}
|
|
|
|
protected function update_db($table_name, $update_data, $where_data) : array{
|
|
$row = [];
|
|
// bad $this->db->table($table_name)->where('id', '=', $where_data)->update($update_data);
|
|
$query = $this->db->query("SELECT * FROM $table_name ORDER BY id DESC LIMIT 1");
|
|
$row = $query->getRowArray();
|
|
return $row;
|
|
}
|
|
|
|
public function APIcall($method, $url, $data) {
|
|
// $curl = curl_init();
|
|
$curl = curl_init($url);
|
|
switch ($method) {
|
|
case "GET":
|
|
$params2 = '';
|
|
foreach($data as $key2=>$value2)
|
|
$params2 .= $key2.'='.$value2.'&';
|
|
|
|
$params2 = trim($params2, '&');
|
|
$url = $url.'?'.$params2;// add param to URL
|
|
log_message('critical', "API URL FINAL =>".$url );
|
|
//curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
|
|
//curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
//curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
|
|
break;
|
|
case "POST":
|
|
curl_setopt($curl, CURLOPT_POST, 1);
|
|
if ($data)
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
|
break;
|
|
case "PUT":
|
|
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
|
|
if ($data)
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
|
break;
|
|
}
|
|
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
'APIKEY: RegisteredAPIkey',
|
|
'Content-Type: application/json',
|
|
));
|
|
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
|
$result = curl_exec($curl);
|
|
|
|
if(!$result) {
|
|
echo("Connection failure!");
|
|
}
|
|
curl_close($curl);
|
|
return json_decode($result, true);
|
|
}
|
|
|
|
public function randomPassword( $length = 8 )
|
|
{
|
|
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?";
|
|
$length = rand(10, 16);
|
|
$password = substr( str_shuffle(sha1(rand() . time()) . $chars ), 0, $length );
|
|
return $password;
|
|
}
|
|
public function sendSMS_twillo($to_number, $sms_message):string{
|
|
|
|
// Find your Account SID and Auth Token at twilio.com/console
|
|
// and set the environment variables. See http://twil.io/secure
|
|
$sid = getenv("TWILIO_ACCOUNT_SID");
|
|
$token = getenv("TWILIO_AUTH_TOKEN");
|
|
$twilio = new \Twilio\Rest\Client($sid, $token); //Twilio\Rest\Client
|
|
|
|
$message = $twilio->messages->create(
|
|
"+2348141331999", // To
|
|
[
|
|
"body" =>
|
|
$sms_message,
|
|
"from" => "+14706008089",
|
|
]
|
|
);
|
|
return $message->body;
|
|
}
|
|
public function sendSMS($to_number, $sms_message):string{
|
|
$API_KEY ="TLYsgMTZBeasJHHimcWXG1QPHmjH7FPwnbKwiqTEwGCu6TrK0v13hCn8N6SYZp";
|
|
$BASE_URL = "https://api.ng.termii.com";
|
|
log_message('error', "SMS TO API---=>". $to_number);
|
|
|
|
$curl = curl_init();
|
|
|
|
$data = array(
|
|
"to"=> $to_number,
|
|
"from"=> "DigiFI",
|
|
"sms"=> $sms_message,
|
|
"type"=> "plain",
|
|
"channel"=> "generic",
|
|
"api_key"=> $API_KEY,
|
|
);
|
|
$post_data = json_encode($data);
|
|
curl_setopt_array($curl, array(
|
|
CURLOPT_URL => 'https://termii.com/api/sms/send',
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => '',
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 0,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
|
CURLOPT_POSTFIELDS => $post_data,
|
|
CURLOPT_HTTPHEADER => array(
|
|
'Content-Type: application/json'
|
|
),
|
|
));
|
|
|
|
$response = curl_exec($curl);
|
|
log_message('error', "SMS TO API Response---=>". $response);
|
|
curl_close($curl);
|
|
return $response;
|
|
}
|
|
|
|
private function sendSMS33($smsNumber,$smsMessage){
|
|
|
|
$base_url = "https://v3.api.termii.com";
|
|
$api_key = "TLYsgMTZBeasJHHimcWXG1QPHmjH7FPwnbKwiqTEwGCu6TrK0v13hCn8N6SYZp";
|
|
|
|
$curl = curl_init();
|
|
$data = array("api_key" => $api_key, "to" => $smsNumber, "from" => "digiFi",
|
|
"sms" => $smsMessage, "type" => "plain", "channel" => "generic" );
|
|
|
|
$post_data = json_encode($data);
|
|
|
|
curl_setopt_array($curl, array(
|
|
CURLOPT_URL => $base_url."/api/sms/send",
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => "",
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 0,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_CUSTOMREQUEST => "POST",
|
|
CURLOPT_POSTFIELDS => $post_data,
|
|
CURLOPT_HTTPHEADER => array(
|
|
"Content-Type: application/json"
|
|
),
|
|
));
|
|
|
|
$response = curl_exec($curl);
|
|
|
|
curl_close($curl);
|
|
return $response;
|
|
}
|
|
|
|
public function readCustomer($uid){
|
|
$userUid = trim($uid);
|
|
$mysql ="SELECT * from customers where uid::text ='".$userUid."'";
|
|
$query = $this->db->query($mysql);
|
|
return $query->getRowArray();
|
|
}
|
|
|
|
public function coreVerifyEmployerMessage($application_uid){
|
|
|
|
$data['application_uid'] = $application_uid;
|
|
|
|
$findEmp ="SELECT c.firstname,c.lastname,a.uid AS application_uid, a.*
|
|
FROM applications a
|
|
LEFT JOIN customers c ON c.uid =a.customer_uid
|
|
WHERE a.status =2 AND a.uid = '".trim($application_uid)."'";
|
|
// log_message('error', "findEmp---=>" . $findEmp);
|
|
|
|
$query = $this->db->query($findEmp);
|
|
$row = $query->getResult('array');
|
|
$employer_uid = $row[0]['employer_uid'];
|
|
$application_uid = $row[0]['application_uid'];
|
|
|
|
$sigNatory = $this->pickEmployerSignatory($employer_uid);
|
|
|
|
$to_number = $sigNatory["phone"]; // "2347032847884"; // "16784574345"; //
|
|
|
|
if ($row[0]['uid']!='' && $application_uid !='' ){
|
|
$this->moveEmployerChecksToZero($application_uid); // all previous login is to employer verification is invalid invalid
|
|
|
|
log_message('error', "Call API---=>");
|
|
$api_data = $row[0];
|
|
$api_data["signatory_password"] = $this->randomPassword(); // "1000011";
|
|
$api_data["signatory_email"] = $sigNatory['email']; //"ameye+signatory@chiefsoft.com";
|
|
$api_data["signatory_name"] = $sigNatory['name']; //"Signatory Name";
|
|
$api_data["signatory_uid"] = $sigNatory['uid']; //"Signatory Name";
|
|
$api_data["processing_bank_name"] = "Processing Bank";
|
|
$api_data["processing_bank_email"] = "processingbank@email.com";
|
|
|
|
$udata = [
|
|
'employer_uid' => $employer_uid,
|
|
'password' => md5($api_data["signatory_password"]),
|
|
'username' => $api_data["signatory_email"],
|
|
'signatory_uid'=> $api_data["signatory_uid"],
|
|
'application_uid'=>$data['application_uid']
|
|
];
|
|
$addedData = $this->insert_db('employer_checks',$udata);
|
|
|
|
$sms_message = "Your OTP = 1234";
|
|
$this->sendSMS($to_number, $sms_message);
|
|
|
|
$checkData = $this->APIcall("POST", "http://10.10.10.48:6332/api/verify/employer", json_encode($api_data));
|
|
}else{
|
|
log_message('error', "Not found API---=>");
|
|
}
|
|
|
|
|
|
}
|
|
private function pickEmployerSignatory($employer_uid):array{
|
|
$signatoryQRy = "SELECT s.* FROM employers_signatory s LEFT JOIN employers e ON e.id =s.employer_id WHERE e.uid ='$employer_uid' ORDER BY s.id ASC LIMIT 1";
|
|
log_message('error', "pickSignatory---=>" . $signatoryQRy);
|
|
$query = $this->db->query($signatoryQRy);
|
|
$row = $query->getResult('array');
|
|
return $row[0];
|
|
}
|
|
|
|
private function moveEmployerChecksToZero($application_uid): int {
|
|
$sqlZeroSql = "UPDATE employer_checks SET status = 0 WHERE status = 1 AND application_uid='$application_uid'";
|
|
$query = $this->db->query($sqlZeroSql);
|
|
return 0;
|
|
}
|
|
}
|