*/ 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; } }