sparqapi/api/application/controllers/Test.php

215 lines
8.6 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once APPPATH . '/libraries/REST_Controller.php';
class Test extends REST_Controller {
/**
* load list modal, library and helpers
*/
function __Construct(){
parent::__Construct();
$this->external_path = $this->config->item('external_data_path');
$this->load->helper(array('form', 'url'));
$this->load->model('PD_Model');
$this->load->library('asynclibrary');
$this->load->library('AWS_REKONITION');
$this->load->helper('MYUTIL');
}
/**
* @desc : Function to perform multiple task in background
* @param :void
* @return : void
*/
public function ind_get(){
//echo base_url();
print_r(getallheaders());
$url = base_url()."test/sendmail";
$urls = base_url()."test/insert";
$param = array('email' => "jagroop@gmail.com" );
$param1 = array('name' => "Jagroop Singh",
'email' => "jagroop@gmail.com" );
// $async1 = $this->asynclibrary->do_in_background($url, $param);
// $async2 = $this->asynclibrary->do_in_background($urls, $param1);
// print_r($async1);
// print_r($async2);
}
/**
* @desc : Function to send mail
* @param :void
* @return : void
*/
public function sendmail_post(){
// $this->load->library('email');
$user_email = $_POST['email'];
// $message = "Testing";
// $this->email->from('wolfy@gmail.com', 'Wolfy Singh');
// $this->email->to($user_email);
// $this->email->subject("test");
// $this->email->message($message);
// $this->email->send();
$id = $this->db->insert('t_city_master',array('city_name'=> $user_email));
// echo $user_email;
// print_r($id);
}
/**
* @desc : Function to call insert() method
* of test_model to insert data in database
* @param :void
* @return : void
*/
public function insert_post(){
$user_email = $_POST['name'];
$this->db->insert('t_city_master',array('city_name'=>$user_email));
// $email = $this->input->post('email');
// $name = $this->input->post('name');
// $this->test_model->insert($email, $name);
//echo "insert";
}
public function compareFaces_post()
{
$pdid = $this->post('pdid');
$src = $this->post('src');
$dest = $this->post('dest');
$coapplicant = $this->post('applicant_id');
$src_url_type = $this->post('src_url_type');
$dest_url_type = $this->post('dest_url_type');
$res_data = array('nxt_action' => null);
// echo $src;die();
if($src_url_type == 'base64')//make local img
{
//src base64 should be w/o the mime header part - data:image/png;base64,
$src_local_file = APPPATH.'docs/'.MYUTIL::getRandomString(10).'-'.date('Y-m-d-H-i-s').'.png';
$ifp = fopen( $src_local_file, 'wb' );
//$data = explode( ',', $src );
fwrite( $ifp, base64_decode( $src ) );
fclose( $ifp );
$src = $src_local_file;
}
if($dest_url_type == 'base64')//make local img
{
$dest_local_file = APPPATH.'docs/'.MYUTIL::getRandomString(10).'-'.date('Y-m-d-H-i-s').'.png';
$ifp = fopen( $dest_local_file, 'wb' );
//$data = explode( ',', $src );
fwrite( $ifp, base64_decode( $dest ) );
fclose( $ifp );
$dest = $dest_local_file;
}
//check no of faces in src img
$no_of_faces_in_src_img = $this->aws_rekonition->detectFaces($src);
if(is_object($no_of_faces_in_src_img) && isset($no_of_faces_in_src_img['FaceDetails']) && count($no_of_faces_in_src_img['FaceDetails']) > 1)
{
foreach($no_of_faces_in_src_img as $k => $v)
{
$res_data[$k] = $v;
// echo '***********************';
}
$res_data['nxt_action'] = 'pick_src_img';
//if no faces more than two then return all face details to
//front end and let user pick the src img
$this->response($res_data,REST_Controller::HTTP_OK);
}
$compare_analysis_data = $this->aws_rekonition->comparePhotos($src,$dest);
if(is_object($compare_analysis_data))
{
foreach($compare_analysis_data as $k => $v)
{
$res_data[$k] = $v;
// echo '***********************';
}
}
//update face api result in main table
//$where_condition_array = array('pd_id' => $pdid);// pdid coapplicant id get store in coapp
$where_condition_array = array('pd_id' => $pdid,'isactive' => 1,'pd_co_applicant_id' => $coapplicant);
$this->PD_Model->updateRecords(['faceapi_result' => json_encode($res_data)],PDAPPLICANTSDETAILS,$where_condition_array);
//delete local files if created
if($dest_url_type == 'base64')
{
unlink($dest);
}
if($src_url_type == 'base64')
{
unlink($src);
}
$this->response($res_data,REST_Controller::HTTP_OK);
}
function handleGoolgeVideoFile($file,$pd_details)
{
$file_content = $this->googleapi->downloadDriveFile($file['id']);
if($file_content)
{
//store locally
$is_downloaded = file_put_contents($this->external_path.'/pd_reports/'.$pd_details[0]['pd_id'].'/'.$file['id'].'.mp4',$file_content);
$bucketname = LENDER_BUCKET_NAME_PREFIX.$pd_details[0]['fk_lender_id'];
// $bucketname = LENDER_BUCKET_NAME_PREFIX.'1';
$key = 'pd'.$pd_details[0]['pd_id'].'/video/'.$file['id'].'.mp4';
$bucket_data = array('bucket_name'=>$bucketname,'key'=>$key,'sourcefile'=>($this->external_path.'/pd_reports/'.$pd_details[0]['pd_id'].'/'.$file['id'].'.mp4'));
$s3result= $this->aws_s3->uploadFileToS3Bucket($bucket_data);
if(is_object($s3result) && $s3result['ObjectURL'] != '' && $s3result['@metadata']['statusCode'] == 200)
{
$record_data = array('fk_pd_id' => $pd_details[0]['pd_id'],'composition_id' => $file['id'].'.mp4','is_call_ended' => 1,'twilo_status'=>'completed','s3_copied' => 1,'vsp' => 'google');
$this->PD_Model->saveRecords($record_data,VIDEO_ROOM_INFO);
//echo 'done';
unlink($this->external_path.'/pd_reports/'.$pd_details[0]['pd_id'].'/'.$file['id'].'.mp4');
$file_content = $this->googleapi->deleteDriveFile($file['id']);
}
}
}
function updateGoogleVideoStatus_get()
{
$this->load->library('Googleapi');
$pdid = $this->get('pdid');
$pd_details = $this->PD_Model->getPDMasterDetails($pdid);
if(($pd_details[0]['fk_pd_type'] == 2 || $pd_details[0]['fk_pd_type'] == 3) && $pd_details[0]['gmeet_code'] != "")
{
$driveFilesList = $this->googleapi->getDriveFilesList($pd_details[0]['gmeet_code']);
if(count($driveFilesList))
{
log_message('ERROR','###Videos Found'.count($driveFilesList).' - PDID - '. $pdid);
foreach ($driveFilesList as $key => $file)
{
$this->handleGoolgeVideoFile($file,$pd_details);
}
$data['dataStatus'] = true;
$data['status'] = REST_Controller::HTTP_OK;
// $data['msg'] = 'Officers Records Not Found!';
$this->response($data,REST_Controller::HTTP_OK);
}
else
{
log_message('ERROR','###Videos not found/not available in drive yet Found'.count($driveFilesList).' - PDID - '. $pdid);
$data['dataStatus'] = true;
$data['status'] = REST_Controller::HTTP_NO_CONTENT;
// $data['msg'] = 'Officers Records Not Found!';
$this->response($data,REST_Controller::HTTP_OK);
}
}
}
}