<?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'] !='') {
            $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)
                  ];
                  $customer =  $this->insert_db('customers',$udata);
              }
           }

            $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'] != '') {
            $udata = [
                'bvn' => $data['bvn']
            ];
           $addedData =  $this->insert_db('bvn_checks',$udata);

            if(  $addedData["uid"] ==''){
                $response = [
                    'message' => 'Failure',
                    'call_return' => '100',
                    'token' => ''
                ];
                return $this->fail($response, 500);
            }

            $response = [
                'message' => 'Verification text sent to user',
                'call_return' => '100',
                'verification_id' => $addedData["uid"],
            ];

            return $this->respond($response, 200);
        } else {
            $response = [
                'message' => 'Failure',
                'call_return' => '100',
                'token' => ''
            ];
            return $this->fail($response, 409);
        }


        //return json_encode( $response );

    }
}
