Files
digifi-mware/app/Controllers/DigiFiBVN.php
T
CHIEFSOFT\ameye eab96e3504 New card add
2024-08-05 11:30:39 -04:00

205 lines
6.9 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\API\ResponseTrait;
use Exception;
use Firebase\JWT\JWT;
class DigiFiBVN extends BaseController
{
use ResponseTrait;
// protected $db;
var $request;
function __construct()
{
$this->request = \Config\Services::request();
}
public function completeBVNVerify(){
$data = $this->request->getPost();
if ($data['bvn'] != ''
&& $data['verification_id'] !=''
&& $data['otp'] !=''
) {
if ( $data['otp'] !='12345'){
$response = [
'message' => 'Invalid account or OTP',
'call_return' => '0',
'customer'=> [],
"token" =>''
];
return $this->respond($response, 200);
}
$customer = [];
// we need OTP verified here to continue
$sqlC = "SELECT * FROM bvn_checks WHERE bvn ='".$data['bvn']."' AND uid='".$data['verification_id']."'";
$query = $this->db->query($sqlC);
$results = $query->getResultArray();
if ( count($results) > 0 ){
$sqlM = "SELECT * FROM customers WHERE bvn = '".$data['bvn']."' ";
$qu0 = $this->db->query($sqlM);
$customer = $qu0->getResultArray();
if ( count( $customer) == 0 ){
// lets create this USER
$udata = [
'bvn' => $data['bvn'],
'firstname' =>'firstname-'.rand(1,1000),
'lastname' => 'lastname-'.rand(1,1000)
];
$udata = [
'bvn' => $data['bvn'],
'firstname' => $results[0]["firstname"],
'lastname' => $results[0]["lastname"],
];
$customer = $this->insert_db('customers',$udata);
/** --- */
$sqlM = "SELECT * FROM customers WHERE bvn = '".$data['bvn']."' ";
$qu0 = $this->db->query($sqlM);
$customer = $qu0->getResultArray();
}
}
$final_out = $data;
$key = getenv('JWT_SECRET');
$iat = time(); // current timestamp value
$exp = $iat + 3600;
$payload = array(
"iss" => "Issuer of the JWT",
"aud" => "Audience that the JWT",
"sub" => "Subject of the JWT",
"iat" => $iat, //Time the JWT issued at
"exp" => $exp, // Expiration time of token
"user_detail" => $final_out,
);
$token = JWT::encode($payload, $key, 'HS256');
$response = [
'message' => 'Account Verified',
'call_return' => '100',
'customer'=> $customer,
"token" =>$token
];
return $this->respond($response, 200);
} else {
$response = [
'message' => 'Invalid account found',
'call_return' => '100',
'token' => ''
];
return $this->fail($response, 409);
}
}
/*
"uid" => "3119b744-42ad-4834-bb83-b737588754ca",
"firstname"=>'Firstname',
"lastname"=>'lastname',
"last_login"=> "2024-04-26 13:35:19.750027",
"test" => $results,
*/
public function startBVNVerify()
{
$data = $this->request->getPost();
if ($data['bvn'] != '') {
$bvnData = $this->APIcall("POST", "http://10.10.10.48:6332/api/verify/bvn", json_encode($data));
$udata = [
'bvn' => $data['bvn']
];
$addedData = $this->insert_db('bvn_checks',$udata);
if( $addedData["uid"] ==''){
$response = [
'message' => 'Failure',
'call_return' => '100',
'token' => '',
'test_bvn' => $bvnData
];
return $this->fail($response, 500);
}
/*
*| Type | Collation | Nullable | Default
-------------+-----------------------------+-----------+----------+----------------------------------------
id | integer | | not null | nextval('bvn_checks_id_seq'::regclass)
uid | uuid | | | uuid_generate_v4()
bvn | character varying(15) | | not null |
status | integer | | | 1
added | timestamp without time zone | | | now()
updated | timestamp without time zone | | | now()
firstname | character varying(35) | | |
lastname | character varying(35) | | |
middlename | character varying(35) | | |
gender | character varying(5) | | |
birthdate | timestamp without time zone | | |
phone | character varying(35) | | |
nationality | character varying(15) | | |
Indexes:
"bvn_checks_id_key" UNIQUE CONSTRAINT, btree (id)
"bvn": "10000000001",
"firstname": "John",
"lastname": "Doe",
"middlename": "Favor",
"phone": "080000000001",
"birthdate": "1944-04-04",
"gender": "m",
"nationality": "Nigerian",
*/
$bvn = $data['bvn'];
$firstname = $bvnData["res"]["data"]["firstname"];
$lastname = $bvnData["res"]["data"]["lastname"];
$middlename = $bvnData["res"]["data"]["middlename"];
$phone = $bvnData["res"]["data"]["phone"];
$birthdate = $bvnData["res"]["data"]["birthdate"];
$gender = $bvnData["res"]["data"]["gender"];
$nationality = $bvnData["res"]["data"]["nationality"];
$sqlUpdate = "UPDATE bvn_checks SET firstname ='$firstname', lastname='$lastname', middlename='$middlename' , phone='$phone' , birthdate='$birthdate' , gender='$gender' , nationality='$nationality' WHERE bvn = '$bvn' ";
$query = $this->db->query($sqlUpdate);
$response = [
'message' => 'Verification text sent to user',
'call_return' => '100',
'verification_id' => $addedData["uid"],
'status' => $bvnData["res"]["status"],
'test_bvn' => $bvnData["res"]["data"]
];
return $this->respond($response, 200);
} else {
$response = [
'message' => 'Failure',
'call_return' => '100',
'token' => ''
];
return $this->fail($response, 409);
}
//return json_encode( $response );
}
}