diff --git a/api/application/config/constants.php b/api/application/config/constants.php index bf9bff9f..e421ead1 100644 --- a/api/application/config/constants.php +++ b/api/application/config/constants.php @@ -136,6 +136,7 @@ defined('IMAGE_OPTIMIZE_LAMBDA_URL') OR define('IMAGE_OPTIMIZE_LAMBDA_URL','http defined('VIDEO_SHORT_URL') OR define('VIDEO_SHORT_URL','https://lkt.pdgenie.com/'); defined('CET_SALESPD_INTEGRATION_URL') OR define('CET_SALESPD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdData'); defined('CET_SALESPD_INTEGRATION_IMG_URL') OR define('CET_SALESPD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdPhotographsData'); +defined('CET_SALESPD_INTEGRATION_REINSERTIMG_URL') OR define('CET_SALESPD_INTEGRATION_REINSERTIMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/ReInsertImageData'); defined('CET_CREDIT_PD_INTEGRATION_URL') OR define('CET_CREDIT_PD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdData'); defined('CET_CREDIT_PD_INTEGRATION_IMG_URL') OR define('CET_CREDIT_PD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdPhotographsData'); defined('DIGILOCKER_TOKEN_URI') OR define('DIGILOCKER_TOKEN_URI','https://api.digitallocker.gov.in/public/oauth2/1/token'); @@ -162,6 +163,7 @@ else if(ENVIRONMENT == 'testing') defined('VIDEO_SHORT_URL') OR define('VIDEO_SHORT_URL','https://lkt.pdgenie.com/'); defined('CET_SALESPD_INTEGRATION_URL') OR define('CET_SALESPD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdData'); defined('CET_SALESPD_INTEGRATION_IMG_URL') OR define('CET_SALESPD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdPhotographsData'); + defined('CET_SALESPD_INTEGRATION_REINSERTIMG_URL') OR define('CET_SALESPD_INTEGRATION_REINSERTIMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/ReInsertImageData'); defined('CET_CREDIT_PD_INTEGRATION_URL') OR define('CET_CREDIT_PD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdData'); defined('CET_CREDIT_PD_INTEGRATION_IMG_URL') OR define('CET_CREDIT_PD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdPhotographsData'); defined('DIGILOCKER_TOKEN_URI') OR define('DIGILOCKER_TOKEN_URI','https://api.digitallocker.gov.in/public/oauth2/1/token'); @@ -186,14 +188,15 @@ else if(ENVIRONMENT == 'production') defined('OPTIMIZED_IMAGE_BUCKET_NAME') OR define('OPTIMIZED_IMAGE_BUCKET_NAME','optimized-images-live'); defined('IMAGE_OPTIMIZE_LAMBDA_URL') OR define('IMAGE_OPTIMIZE_LAMBDA_URL','https://4u9t03hvfb.execute-api.ap-south-1.amazonaws.com/live'); defined('VIDEO_SHORT_URL') OR define('VIDEO_SHORT_URL','https://l.pdgenie.com/'); - defined('CET_SALESPD_INTEGRATION_URL') OR define('CET_SALESPD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdData'); + defined('CET_SALESPD_INTEGRATION_URL') OR define('CET_SALESPD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdData'); defined('CET_SALESPD_INTEGRATION_IMG_URL') OR define('CET_SALESPD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/PullSalesPdPhotographsData'); + defined('CET_SALESPD_INTEGRATION_REINSERTIMG_URL') OR define('CET_SALESPD_INTEGRATION_REINSERTIMG_URL','https://demo.devopsmcfinance.com/cet_salespd/api/ReInsertImageData'); defined('CET_CREDIT_PD_INTEGRATION_URL') OR define('CET_CREDIT_PD_INTEGRATION_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdData'); defined('CET_CREDIT_PD_INTEGRATION_IMG_URL') OR define('CET_CREDIT_PD_INTEGRATION_IMG_URL','https://demo.devopsmcfinance.com/cet_creditpd/api/PullCreditPdPhotographsData'); defined('DIGILOCKER_TOKEN_URI') OR define('DIGILOCKER_TOKEN_URI','https://api.digitallocker.gov.in/public/oauth2/1/token'); defined('DIGILOCKER_FILESLIST_URI') OR define('DIGILOCKER_FILESLIST_URI','https://api.digitallocker.gov.in/public/oauth2/2/files/issued'); defined('DIGILOCKER_GETFILE_URI') OR define('DIGILOCKER_GETFILE_URI','https://api.digitallocker.gov.in/public/oauth2/1/file/'); - defined('GCP_BUCKET_NAME') OR define('GCP_BUCKET_NAME','sales-pd-demo'); + defined('GCP_BUCKET_NAME') OR define('GCP_BUCKET_NAME','sales-pd'); } /*********************END of AWS resources Constants*************************************************/ diff --git a/api/application/config/routes.php b/api/application/config/routes.php index 0d8b16fd..969e24a5 100755 --- a/api/application/config/routes.php +++ b/api/application/config/routes.php @@ -423,6 +423,7 @@ $route['deleteS3Image']='Data_Dump_Controller/deleteS3Images'; $route['saveShortsVideo'] = 'PD_Controller/saveShortsVideo'; $route['transferSalesPDToCETApp'] = 'Sales_PD_Controller/transferSalesPDToCETApp'; +$route['transferSalesPDImgToCETApp'] = 'Sales_PD_Controller/transferSalesPDImgToCETApp'; $route['transferCreditPDToCETApp'] = 'SMC_Credit_PD_Controller/transferCreditPDToCETApp'; $route['newSalesPd'] = 'Sales_PD_Controller/cetNewSalesPd'; diff --git a/api/application/controllers/Sales_PD_Controller.php b/api/application/controllers/Sales_PD_Controller.php index 91a3508e..7a22b8df 100644 --- a/api/application/controllers/Sales_PD_Controller.php +++ b/api/application/controllers/Sales_PD_Controller.php @@ -218,7 +218,8 @@ class Sales_PD_Controller extends REST_Controller { foreach ($view_data['section9'] as $key => $value){ if($value['img_name'] != '' ){ $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_data[0]['lender_id']; - $bucket_key = "sales_pd/".$sales_pd_data[0]['sales_pd_id']."/images/".$value['img_name'].".png"; + $img_rand_name = $value['rand_name'] != null ? $value['rand_name'] : $value['img_name']."png" ; + $bucket_key = "sales_pd/".$sales_pd_data[0]['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key,'30 minutes'); $img_url = $value['img'] ? $value['img'] : ($singed_uri ? $singed_uri : ""); $view_data['section9'][$key]['img'] = $img_url; @@ -766,6 +767,7 @@ class Sales_PD_Controller extends REST_Controller { $is_customer_app = isset($records['is_customer_app']) ? $records['is_customer_app'] : null; unset($records['is_customer_app']); + if($records['img_name'] == 'selfie_with_person_met') { //$location = $records['location']; @@ -795,8 +797,16 @@ class Sales_PD_Controller extends REST_Controller { $source=$records['img']; //Google Library - GCP $this->load->library('Googlecloud'); + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < 6; $i++) + { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + $rand_name = $records['img_name'] == 'satellite' ? $records['img_name'].".png" : $records['img_name']."_".$randomString.".png"; $gcpBucketName = GCP_BUCKET_NAME; - $objectName = "pd".$sales_pd_id."/images/".$records['img_name'].".png"; + $objectName = "pd".$sales_pd_id."/images/".$rand_name; $result = $this->googlecloud->uploadFileToGCPBucket($gcpBucketName,$objectName,$source); if($result == true){ $image_inserted++; @@ -807,9 +817,8 @@ class Sales_PD_Controller extends REST_Controller { $table = SALES_PD_DATA.' as SALES_PD_DATA'; $where_condition_array = array('SALES_PD_DATA.sales_pd_id' => $sales_pd_id); $sales_pd_data = $this->Sales_PD_Model->selectCustomRecords($columns,$where_condition_array,$table); - $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_data[0]['lender_id']; - $bucket_key = "sales_pd/".$sales_pd_id."/images/".$records['img_name'].".png"; + $bucket_key = "sales_pd/".$sales_pd_id."/images/".$rand_name; $bucket_data = array('bucket_name' => $bucket_name, 'key' => $bucket_key, 'sourcefile' => $source); $s3result = $this->aws_s3->uploadFileToS3Bucket($bucket_data); if (is_object($s3result) && $s3result['ObjectURL'] != '' && $s3result['@metadata']['statusCode'] == 200) { @@ -818,6 +827,7 @@ class Sales_PD_Controller extends REST_Controller { }else{ log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') '.$records['img_name'].' Image Not Stored In S3'); } if($image_inserted>=1){ unset($records['img']); + $records['rand_name'] = $rand_name; $id = $this->Sales_PD_Model->saveRecords($records,SALEPD_DOCS); log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') Image Saved in DB - id : '.$id); } @@ -1223,7 +1233,8 @@ class Sales_PD_Controller extends REST_Controller { if(count($selfie)) { $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_data[0]['lender_id']; - $bucket_key = "sales_pd/".$records['sales_pd_id']."/images/".$selfie[0]['img_name'].".png"; + $img_rand_name = $selfie[0]['rand_name'] != null ? $selfie[0]['rand_name'] : $selfie[0]['img_name']."png" ; + $bucket_key = "sales_pd/".$records['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key, '30 minutes'); $photo_questions['questions'][$key]['answer_value'] = $singed_uri; // $photo_questions['questions'][$key]['answer_value'] = $selfie[0]['img']; @@ -1248,7 +1259,8 @@ class Sales_PD_Controller extends REST_Controller { if($individual_value['questions'][0]['question_key'] == $img_value['img_name']) { $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_data[0]['lender_id']; - $bucket_key = "sales_pd/".$records['sales_pd_id']."/images/".$img_value['img_name'].".png"; + $img_rand_name = $img_value['rand_name'] != null ? $img_value['rand_name'] : $img_value['img_name']."png" ; + $bucket_key = "sales_pd/".$records['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key,'30 minutes'); $photo_questions['questions'][$key]['questions_group'][$v_key]['questions'][0]['answer_value'] = $singed_uri; // $photo_questions['questions'][$key]['questions_group'][$v_key]['questions'][0]['answer_value'] = $img_value['img']; @@ -1445,7 +1457,8 @@ public function filterSalesPDList_post() { if(!array_key_exists($key,$img_data)) { $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_master_data[0]['lender_id']; - $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$sales_pd_img_data_value['img_name'].".png"; + $img_rand_name = $sales_pd_img_data_value['rand_name'] != null ? $sales_pd_img_data_value['rand_name'] : $sales_pd_img_data_value['img_name']."png" ; + $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key,'30 minutes'); $img_url = $sales_pd_img_data_value['img'] ? $sales_pd_img_data_value['img'] : ($singed_uri ? $singed_uri : ""); $img_data[$key] = array('img_key' => $key,'img_name' => $value['img_name'],'img_data' => [array('img_url' => $img_url,'img_id'=>($sales_pd_img_data_value['doc_id']) ? $sales_pd_img_data_value['doc_id'] : '','location'=>($sales_pd_img_data_value['location']) ? $sales_pd_img_data_value['location'] : '')],'is_multiple' => 1,'section_heading' => $value['img_name']); @@ -1454,7 +1467,8 @@ public function filterSalesPDList_post() { else { $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_master_data[0]['lender_id']; - $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$sales_pd_img_data_value['img_name'].".png"; + $img_rand_name = $sales_pd_img_data_value['rand_name'] != null ? $sales_pd_img_data_value['rand_name'] : $sales_pd_img_data_value['img_name']."png" ; + $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key,'30 minutes'); $img_url = $sales_pd_img_data_value['img'] ? $sales_pd_img_data_value['img'] : ($singed_uri ? $singed_uri : ""); $img_data[$key]['img_data'][] = array('img_url' => $img_url,'img_id'=>($sales_pd_img_data_value['doc_id']) ? $sales_pd_img_data_value['doc_id'] : '','location'=>($sales_pd_img_data_value['location']) ? $sales_pd_img_data_value['location'] : ''); @@ -1468,7 +1482,8 @@ public function filterSalesPDList_post() { else { $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_master_data[0]['lender_id']; - $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$sales_pd_img_data_value['img_name'].".png"; + $img_rand_name = $sales_pd_img_data_value['rand_name'] != null ? $sales_pd_img_data_value['rand_name'] : $sales_pd_img_data_value['img_name']."png" ; + $bucket_key = "sales_pd/".$sales_pd_master_data[0]['sales_pd_id']."/images/".$img_rand_name; $singed_uri = $this->aws_s3->getSingleObjectInaBucketAsSignedURI($bucket_name, $bucket_key,'30 minutes'); $img_url = $sales_pd_img_data_value['img'] ? $sales_pd_img_data_value['img'] : ($singed_uri ? $singed_uri : ""); $img_data[$key] = array('img_key' => $key,'img_name' => $value['img_name'],'img_url' => $img_url,'is_multiple' => 0,'section_heading' => $value['img_name'],'img_id'=>($sales_pd_img_data_value['doc_id']) ? $sales_pd_img_data_value['doc_id'] : '','location'=>($sales_pd_img_data_value['location']) ? $sales_pd_img_data_value['location'] : '');//$sales_pd_img_data_value['img'] @@ -1909,6 +1924,117 @@ public function filterSalesPDList_post() { } } } + + function transferSalesPDImgToCETApp_post(){ + $records = $this->post('records'); + log_message('ERROR',"### CET APP SALES PD-IMG, PDID are :".implode(', ', $records)); + if(!empty($records)) + { + $j = 0;$section_fields=array(); + foreach ($records as $key => $value) + { + $sales_pd_id = $value; + if(!empty($sales_pd_id)){ + $columns = array('SALES_PD_DATA.*','ENTITY.short_name','PRODUCT.abbr','USERPROFILE.smc_emp_code'); + $table = SALES_PD_DATA.' as SALES_PD_DATA'; + $joins = array(array('table' => ENTITY. ' as ENTITY', + 'condition' =>'SALES_PD_DATA.lender_id = ENTITY.entity_id', + 'jointype' => 'INNER'), + array('table' => PRODUCTS. ' as PRODUCT', + 'condition' =>'SALES_PD_DATA.product_id = PRODUCT.product_id', + 'jointype' => 'INNER'), + array('table' => USERPROFILE. ' as USERPROFILE', + 'condition' =>'SALES_PD_DATA.createdby = USERPROFILE.userid', + 'jointype' => 'LEFT') + ); + + $where_condition_array = array('SALES_PD_DATA.sales_pd_id' => $sales_pd_id); + $sales_pd_data = $this->Sales_PD_Model->getJoinRecords($columns,$table,$joins,$where_condition_array); + + if(count($sales_pd_data)>0) + { + $section_fields = array('pdid'=>$sales_pd_data[0]['sales_pd_id'], + 'product'=>$sales_pd_data[0]['abbr'], + 'caseno'=>$sales_pd_data[0]['sales_pd_sno'], + 'completed_date'=>$sales_pd_data[0]['completed_date'] + ); + + // $photograph_data = $this->Sales_PD_Model->selectCustomRecords(array('img_name','case when img IS NOT NULL then CONCAT(img_name, ".png") when rand_name IS NULL then CONCAT(img_name, ".png") else rand_name end AS img'),array('fk_sales_pd_id' => $sales_pd_id,'isactive' => 1),SALEPD_DOCS); + $photograph_data = $this->Sales_PD_Model->selectCustomRecords(array('*'),array('fk_sales_pd_id' => $sales_pd_id,'isactive' => 1),SALEPD_DOCS); + log_message('ERROR', '#### Sales PD ('.$sales_pd_id.') - Total Images'.count($photograph_data)); + if(!empty($photograph_data)){ + $this->load->library('Googlecloud'); + $k=0; + foreach ($photograph_data as $key => $value){ + + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < 6; $i++) + { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + $rand_name = $value['img_name'] == 'satellite' ? $value['img_name'].".png" : $value['img_name']."_".$randomString.".png"; + $section_fields['data']['section9'][$k]['img_name'] = $value['img_name']; + $section_fields['data']['section9'][$k]['img'] = $rand_name; + + $CET_response = cet_salespd::repushwithcetphotographapi($section_fields); + if(isset($CET_response->status) && $CET_response->status == 200){ + $source=$value['img_name'] == 'satellite' ? 'data:image/png;base64,'.$value['img'] : $value['img']; + //Google Library - GCP + $gcpBucketName = GCP_BUCKET_NAME; + $objectName = "pd".$sales_pd_id."/images/".$rand_name; + $gcp_result = $this->googlecloud->uploadFileToGCPBucket($gcpBucketName,$objectName,$source); + if($gcp_result == true){ + log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') '.$value['img_name'].' Image Stored In GCP'); + }else{ log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') '.$records['img_name'].' Image Not Stored In GCP'); } + + // Amazon Library - S3 + $bucket_name = LENDER_BUCKET_NAME_PREFIX.$sales_pd_data[0]['lender_id']; + $bucket_key = "sales_pd/".$sales_pd_id."/images/".$rand_name; + $bucket_data = array('bucket_name' => $bucket_name, 'key' => $bucket_key, 'sourcefile' => $source); + + $s3result = $this->aws_s3->uploadFileToS3Bucket($bucket_data); + if (is_object($s3result) && $s3result['ObjectURL'] != '' && $s3result['@metadata']['statusCode'] == 200) { + log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') '.$value['img_name'].' Image Stored In S3'); + }else{ log_message('ERROR', '### Sales-PD ('.$sales_pd_id.') '.$records['img_name'].' Image Not Stored In S3'); } + + if($gcp_result == true && is_object($s3result) && $s3result['ObjectURL'] != '' && $s3result['@metadata']['statusCode'] == 200){ + $update_fields2 = array('rand_name' => $rand_name); + $this->Sales_PD_Model->updateRecords($update_fields2,SALEPD_DOCS,array('doc_id'=>$value['doc_id'])); + } + log_message('ERROR', '#### Sales PD ('.$sales_pd_id.') - CET response - '.json_encode($CET_response,true)); + } + else{ + log_message('ERROR', '#### Sales PD ('.$sales_pd_id.') - CET response - '.json_encode($CET_response,true)); + } + } + }else{ + log_message('ERROR', '#### Sales PD ('.$sales_pd_id.') - No Images'); + } + } + else + { + log_message('ERROR', '#### Sales PD ('.$sales_pd_id.') - No Data In ParentTable'); + } + }else{ + log_message('ERROR', '#### Sales PDID Not Founded'); + } + } + $data['dataStatus'] = true; + $data['status'] = REST_Controller::HTTP_OK; + $data['reInsertImageDataApiResponse'] = $CET_response; + $this->response($data,REST_Controller::HTTP_OK); + } + else + { + log_message('ERROR', '#### Sales PDID Array Empty'); + $data['dataStatus'] = false; + $data['status'] = REST_Controller::HTTP_NO_CONTENT; + $data['msg'] = 'No Data Found'; + $this->response($data,REST_Controller::HTTP_OK); + } + } diff --git a/api/application/helpers/cet_salespd_helper.php b/api/application/helpers/cet_salespd_helper.php index 8bf91e13..cc96b413 100644 --- a/api/application/helpers/cet_salespd_helper.php +++ b/api/application/helpers/cet_salespd_helper.php @@ -106,7 +106,33 @@ class CET_SALESPD curl_close( $ch ); unlink($file); return $response; - } + } + + public static function repushwithcetphotographapi($fields) + { + $headers = array('Content-Type: application/json'); + try{ + $ch = curl_init(); + $output_data = json_encode( $fields ); + // print_r($output_data);die(); + log_message('ERROR',"ReInsertImageData api Request Format : ".$output_data); + curl_setopt( $ch,CURLOPT_URL, CET_SALESPD_INTEGRATION_REINSERTIMG_URL); + curl_setopt( $ch,CURLOPT_POST, true ); + curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); + curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); + curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true ); + curl_setopt( $ch,CURLOPT_POSTFIELDS, $output_data); + $result = curl_exec($ch ); + $response = json_decode($result); + log_message('ERROR',"ReInsertImageData api response :".json_encode($response)); + curl_close( $ch ); + } + catch (Exception $e) { + $response->error = array($e->getMessage()); + log_message('ERROR', "ReInsertImageData ERR : " . $e->getMessage()); + } + return $response; + } } ?> \ No newline at end of file