Files
WrenchBoradWeb/www-api/app/Controllers/WrenchApi.php
T
CHIEFSOFT\ameye 74c2b4be38 notifications
2023-06-25 10:21:38 -04:00

643 lines
25 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\API\ResponseTrait;
class WrenchApi extends BaseController
{
use ResponseTrait;
protected $request;
public function __construct()
{
$this->request = $request = \Config\Services::request();
}
public function index()
{
$data['envID'] = getenv('ENV_ID');
$data['home_background'] = getenv('HOME_PAGE_BACKGROUND');
return view('welcome_message',$data);
}
private function endPointList(){
$endpoints = [
'apigate' => ['POST'],
'generics' => ['POST'],
'createuser' => ['POST'],
'homebanners' => ['POST'],
'verifysignuplink' => ['POST'],
'completesignuplink' => ['POST'],
'createmobileuser' => ['POST'],
'completemobileuser' => ['POST'],
'startresetpasword' => ['POST'],
'stepresetpass' => ['POST'],
'userlogin' => ['POST'],
'authlogin' => ['POST'],
'startjoblist' => ['POST'],
'dashdata' => ['POST'],
'getjobsdata' => ['POST'],
'offerslist' => ['POST'],
'offersresponse' => ['POST'],
'activejoblist' => ['POST'],
'loadprofile' => ['POST'],
'updateprofile' => ['POST'],
'account' => ['POST'],
'message' => ['POST'],
'pendingjob' => ['POST'],
'paymenthx' => ['POST'],
'purchasehx' => ['POST'],
'getjob' => ['POST'],
'mybanklist' => ['POST'],
'countrybanks' =>['POST'],
'sendmoney' => ['POST'],
'sendinterest' => ['POST'],
'sendmoneyfee' => ['POST'],
'getpendingjobs' => ['POST'],
'taskmessage' => ['POST'],
'sendtaskmessage' => ['POST'],
'activejobmsglist' => ['POST'],
'getwallets' => ['POST'],
'sitecontact' => ['POST'],
'signupcountry' => ['POST'],
'userscards' => ['POST'],
'blogdata' => ['POST'],
'blogitem' => ['POST'],
'couponhx' => ['POST'],
'couponpending' => ['POST'],
'couponredeem' => ['POST'],
'sendinterestmessage' => ['POST'],
'replyinterestmessage' => ['POST'],
'disableaccount' => ['POST'],
'myjobs' => ['POST'],
'recipients' => ['POST'],
'addrecipient' => ['POST'],
'sendreferral' => ['POST'],
'refferhx' => ['POST'],
'accounttypes' => ['POST'],
'jobmanageragree' => ['POST'],
'jobmanagerlist' => ['POST'],
'jobmanageroffers'=> ['POST'],
'jobmanageractive'=> ['POST'],
'jobmanagercreatejob'=> ['POST'],
'jobmanagerupdatejob'=> ['POST'],
'jobmanagerdeletejob'=> ['POST'],
'activetaskslist' => ['POST'],
'profilepasschange' => ['POST'],
'starttopup' => ['POST'],
'familylist' => ['POST'],
'familyadd' => ['POST'],
'familyupdate' => ['POST'],
'familymanage' => ['POST'],
'pendingjobextend' => ['POST'],
'pendingjobsendtome' => ['POST'],
'pendingjobcancel' => ['POST'],
'assigntask' => ['POST'],
'resources'=> ['POST'],
'uploads'=> ['POST'],
'marketmessage'=> ['POST'],
'marketinterest'=> ['POST'],
'activejobstatus'=> ['POST'],
'activetaskstatus'=> ['POST'],
'offersinterestlist' => ['POST'],
'offersinterestproc' => ['POST'],
'offerinterestmsg' => ['POST'],
'offerinterestlistmsg' => ['POST'],
'payprevcard' => ['POST'],
'paynewcard' => ['POST'],
'paylistcard' => ['POST'],
'payremcard' => ['POST'],
'mynotifications' => ['POST'],
];
return $endpoints;
}
private function prepareEndPointData($endpoint, $in, &$call_backend=true,&$local_out=[]){
switch ($endpoint) {
case 'mynotifications':
$in["action"] = WRENCHBOARD_ACCOUNT_NOTIFICATIONS;
break;
case 'payprevcard':
$in["action"] = WRENCHBOARD_USER_USESAVEDCC;
break;
case 'paynewcard':
$in["action"] = WRENCHBOARD_USER_ADNEWCC;
break;
case 'paylistcard':
$in["action"] = WRENCHBOARD_USER_CARDLIST;
break;
case 'payremcard':
// pending
break;
case 'offerinterestmsg':
$in["action"] = WRENCHBOARD_JOB_MRKTINT_QUEST;
break;
case 'offerinterestlistmsg':
$in["action"] = WRENCHBOARD_JOB_INT_QUESTLST;
break;
case 'offersinterestproc':
$in = $this->procOfferInterest($in);
break;
case 'offersinterestlist':
$in["action"] = WRENCHBOARD_JOB_OFFER_INTLIST;
break;
case 'activejobstatus':
case 'activetaskstatus':
$in = $this->processJobStatus($in);
break;
case 'marketmessage':
$in["action"] = WRENCHBOARD_JOB_SEND_QUESTION;
break;
case 'marketinterest':
$in["action"] = WRENCHBOARD_JOB_SEND_INTEREST;
break;
case 'assigntask':
$in["action"] = WRENCHBOARD_JOB_OFFER_SYSTEM;
break;
case 'pendingjobextend':
$in["action"] = WRENCHBOARD_JOB_EXTEND_EXPIRE;
break;
case 'pendingjobsendtome':
$in["action"] = WRENCHBOARD_JOB_RESEND_MESSAGE;
break;
case 'pendingjobcancel':
$in["action"] = WRENCHBOARD_JOB_CANCEL_OFFER;
break;
case 'familylist':
$in["action"] = WRENCHBOARD_FAMILY_LIST;
break;
case 'activetaskslist':
$in["action"] = WRENCHBOARD_JOB_USERACTIVE;
break;
case 'familyadd':
$in["action"] = WRENCHBOARD_FAMILY_ADD;
break;
case 'familyupdate':
$in["action"] = WRENCHBOARD_FAMILY_UPDATE;
break;
case 'familymanage':
$in["action"] = WRENCHBOARD_FAMILY_MANAGE;
break;
case 'jobmanageractive':
$in["job_mode"] = $in["job_mode"] ?? "ACTIVE";
$in["action"] = WRENCHBOARD_JOB_ACTIVE;
break;
case 'jobmanagercreatejob':
$in["action"] = WRENCHBOARD_JOB_CREATEJOB;
$in["job_mode"] = ADD_JOB;
break;
case 'jobmanagerupdatejob':
$in["action"] = WRENCHBOARD_JOB_CREATEJOB;
$in["job_mode"] = UPDATE_JOB;
break;
case 'jobmanagerdeletejob':
$in["action"] = WRENCHBOARD_JOB_DELETEJOB;
break;
case 'jobmanageroffers':
$in["action"] = WRENCHBOARD_JOB_OFFERS;
break;
case 'stepresetpass':
if($in['step']==300){
$in["action"] = WRENCHBOARD_COMPLETE_PASSWORDRESET;
}
break;
case 'starttopup':
$in["action"] = WRENCHBOARD_ACCOUNT_PREPARE_TOPUP;
break;
case 'profilepasschange':
$in["action"] = WRENCHBOARD_PROFILE_RESETPASS;
break;
case 'addrecipient':
$in["action"] = WRENCHBOARD_ACCOUNT_ADD_RECIPEINT;
break;
case 'jobmanageragree':
$in["action"] = WRENCHBOARD_JOB_POSTAGREE;
break;
case 'jobmanagerlist':
$in["action"] = WRENCHBOARD_JOB_LISTJOBS;
break;
case 'homebanners':
$in["action"] = WRENCHBOARD_ACCOUNT_HOMEBANNERS ;
break;
case 'verifysignuplink':
$in["action"] = WRENCHBOARD_VERIFY_PENDING_LINK ;
break;
case 'disableaccount':
$in['action'] = WRENCHBOARD_USER_DELETEACC;
break;
case 'replyinterestmessage':
$in["action"] = WRENCHBOARD_JOB_REPLY_QUESTION;
break;
case 'sendinterestmessage':
// $in['offer_code'] = $this->input->get('offer_code');
$in['yourmessage'] = $in["question"];
//$in['member_id'] = $_SESSION['member_id']; // just maing sure
$in['msg_type'] = 'JOB';
// $in['action'] = WRENCHBOARD_JOB_SEND_QUESTION;
$in["action"] = WRENCHBOARD_JOB_SEND_QUESTION;
break;
case 'couponredeem':
$in["action"] = WRENCHBOARD_COUPON_REDEEM;
break;
case 'couponpending':
$in["action"] = WRENCHBOARD_COUPON_PENDLIST;
break;
case 'couponhx':
$in["action"] = WRENCHBOARD_COUPON_MEMLIST;
break;
case 'signupcountry':
// checi if in cache if not read
$local_out = [
'result'=>'100',
'signup_country'=>[
['NG', 'Nigeria'],
['US', 'United States']
]
];
$call_backend = false;
break;
case 'blogitem':
$blogData = (new \App\Models\ResultFormatter() )->getBlogItem();
$local_out = [
'result'=>'100',
'blog_data'=> $blogData
];
$call_backend = false;
break;
case 'blogdata':
$blogData = (new \App\Models\ResultFormatter() )->getBlogData();
$local_out = [
'result'=>'100',
'blog_data'=> $blogData
];
$call_backend = false;
break;
case 'userscards':
$in["action"] = WRENCHBOARD_CARDS_GETCARDLIST;
$local_out = [
'result'=>'100',
'result_list'=>[
['title'=>'This is your coupon',
'description'=>'This is the description of the description',
'card_type'=>'COUPON',
'card_style' =>'card1',
'card_icon' =>'icon1',
'assign_id'=> 0,
'Nigeria'],
['title'=>'A Recommended Story',
'description'=>'This is the description of the description',
'card_type'=>'BLOG',
'card_style' =>'card2',
'card_icon' =>'icon1',
'assign_id'=> 0,
'United States'],
['title'=>'You have a new task sent to you',
'description'=>'This is the description of the description',
'card_type'=>'NEWTASK',
'card_style' =>'card1',
'card_icon' =>'icon1',
'assign_id'=> 0,
'United States'],
['title'=>'You just Earned some token',
'description'=>'This is the description of the description',
'card_type'=>'TOKEN',
'card_style' =>'card2',
'card_icon' =>'icon1',
'assign_id'=> 0,
'United States']
]
];
// $call_backend = false;
break;
case 'myjobs': $in["action"] = WRENCHBOARD_ACCOUNT_JOBLIST;
break;
case 'sitecontact':
$local_out = ['result'=>'100','msg'=>'Received'];
$call_backend = false;
break;
case 'generics':
case 'apigate':
//$in["action"] = WRENCHBOARD_ACCOUNT_LOGIN;
break;
case 'startjoblist': $in["action"] = WRENCHBOARD_START_JOBLIST;
if (!array_key_exists("limit",$in)) $in["limit"] = 10;
if (!array_key_exists("page",$in)) $in["page"] = 1;
break;
case 'createmobileuser': $in["action"] = WRENCHBOARD_CREATE_MOBILEUSER;
$in["loc"] = $_SERVER["REMOTE_ADDR"];
$in["news"] = 0;
$in["terms"] = 1;
$in["mobile"] = "MOBILE";
break;
case 'completesignuplink': $in["action"] = WRENCHBOARD_COMPLETE_MOBILEUSER;
$in["loc"] = $_SERVER["REMOTE_ADDR"];
$in["news"] = 0;
$in["terms"] = 1;
$in["mobile"] = "WEB";
break;
case 'completemobileuser': $in["action"] = WRENCHBOARD_COMPLETE_MOBILEUSER;
$in["loc"] = $_SERVER["REMOTE_ADDR"];
break;
case 'startresetpasword':
$in["action"] = WRENCHBOARD_RESET_PASSWORD;
break;
case 'createuser': $in["action"] = WRENCHBOARD_ACCOUNT_PENDING;
$in["street1"] = $in["streetaddress"];
$in["zipcode"] = $in["zip"];
$in["country"] = "US";
$in["loc"] = $_SERVER["REMOTE_ADDR"];
$in["mobile"] = "MOBILE";
break;
case 'activejoblist': $in["action"] = WRENCHBOARD_MOBILE_ACTIVEJOB;
break;
case 'message': $in["action"] = WRENCHBOARD_MOBILE_MESSAGE;
break;
case 'paymenthx': $in["action"] = WRENCHBOARD_MOBILE_PAYMENTHX;
break;
case 'purchasehx': $in["action"] = WRENCHBOARD_MOBILE_PURCHASEHX;
break;
case 'getjobsdata': $in["action"] = WRENCHBOARD_ACCOUNT_JOBLIST;
break;
case 'userlogin': $in["action"] = WRENCHBOARD_ACCOUNT_LOGIN;
if (!isset($in["login_mode"])){
$in["login_mode"] = MOBILE_LOGIN;
}
break;
case 'authlogin':
$in["action"] = WRENCHBOARD_ACCOUNT_AUXLOGIN;
if (!isset($in["login_mode"])){
$in["login_mode"] = MOBILE_LOGIN;
}
break;
case 'dashdata': $in["action"] = WRENCHBOARD_ACCOUNT_DASHDATA;
break;
case 'offerslist': $in["action"] = WRENCHBOARD_MOBILE_OFFERSLIST;
break;
case 'offersresponse': $in["action"] = WRENCHBOARD_MOBILE_OFFERSRESP;
break;
case 'loadprofile': $in["action"] = WRENCHBOARD_MOBILE_LOADPROFILE;
break;
case 'updateprofile': $in["action"] = WRENCHBOARD_MOBILE_UPDATEPROFILE;
break;
case 'account': $in["action"] = WRENCHBOARD_MOBILE_ACCOUNT;
break;
case 'getpendingjobs':
$in["action"] = WRENCHBOARD_ACCOUNT_PENDJOB;
break;
case 'pendingjob':
break;
case 'getjob':
break;
case 'mybanklist':$in["action"] = WRENCHBOARD_USER_GETBANKLIST;
break;
case 'sendmoney':$in["action"] = WRENCHBOARD_USER_SENDMONEY;
$out["internal_return"] = 0;
$in["InitiatingChannel"] = 7;
$in["InitiatingPaymentMethodCode"] = "CA";
$in["InitiatingCurrencyCode"] = '566'; // 566 - NRN - Naira
$in["InitiatingEntityCode"] = "MBA";
$in["transaction_id"] = "T" . rand(120000, 999999);
$in["TerminatingPaymentMethodCode"] = "AC";
$in["TerminatingCurrencyCode"] = '566'; // 566 - NRN - Naira
$in["TerminatingCountryCode"] = 'NG'; // NG - Nigeria
$in["bankid"] = $in["recipientid"];
$in["InitiatingAmount"] = $in["amount"];
$in["TerminatingAmount"] = $in["amount"];
break;
case 'sendinterest':$in["action"] = WRENCHBOARD_USER_SENDJOBINT;
$out["internal_return"] = 0;
break;
case 'sendmoneyfee': $in["action"] = WRENCHBOARD_SMONEY_PROCFEE;
break;
case 'taskmessage': $in["action"] = WRENCHBOARD_MOBILE_TASKMESSAGE;
break;
case 'sendtaskmessage': $in["action"] = WRENCHBOARD_MOBILE_SENDTASKMESSAGE;
break;
case 'activejobmsglist':
$in["action"] = WRENCHBOARD_CONTRACT_MSGLIST;
break;
case 'getwallets': $in["action"] = WRENCHBOARD_ACCOUNT_WALLETS;
break;
case WRENCHBOARD_ACCOUNT_PRICE_COMBO: break ; // 11171);
case WRENCHBOARD_ACCOUNT_JOBPOST_DURATION: break ; //11173);
case 'recipients': $in["action"] = WRENCHBOARD_ACCOUNT_USER_RECIPEINT; break; // 11175);
case 'accounttypes': $in["action"] = WRENCHBOARD_ACCOUNT_ACCOUNT_TYPES; break ; // 11177);
case WRENCHBOARD_ACCOUNT_COUNTRY_COMBO: break ; // 11179);
case WRENCHBOARD_ACCOUNT_JOB_COUNTRY: break ; // 11181);
case 'sendreferral': $in["action"] =WRENCHBOARD_ACCOUNT_SENDREFER; break;
case 'refferhx': $in["action"] =WRENCHBOARD_ACCOUNT_REFFERHX; break;
case 'countrybanks': $in["action"] =WRENCHBOARD_ACCOUNT_COUNTRY_BANKS; break;
}
$in["pid"] = 100;
return $in;
}
public function apigate(){
log_message('critical', "0001");
header('Access-Control-Allow-Origin: *');
log_message('critical', "0002");
$call_backend = true;
/*
//header("Access-Control-Allow-Origin: http://localhost:9057 ");
header('Access-Control-Expose-Headers: Access-Control-Allow-Origin');
//header('Access-Control-Allow-Credentials: true ');
//header("Access-Control-Allow-Headers: Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
header('Access-Control-Allow-Headers :Origin, X-API-KEY, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Allow-Headers, Authorization, observe, enctype, Content-Length, X-Csrf-Token');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');
header('Content-type: application/json');
*/
header("Access-Control-Allow-Headers: Origin, X-API-KEY, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Allow-Headers, Authorization, observe, enctype, Content-Length, X-Csrf-Token");
log_message('critical', "0003");
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, PATCH, OPTIONS");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 3600");
header('content-type: application/json; charset=utf-8');
$method = $_SERVER['REQUEST_METHOD'];
if ($method == "OPTIONS") {
header("HTTP/1.1 200 OK CORS");
log_message('critical', " apigate()-> OPTIONS DIE*****" );
die();
}
//$request = service('request');
// what is the endpoint
$uri = urldecode(current_url(true));
$findme = '?';
$pos = strpos($uri, $findme);
if ($pos > 5) {
$uri = substr($uri, 0, $pos);
}
log_message('critical', "API-GATE URI -> ".$uri );
$pieces = explode('/', $uri);
$psc = count($pieces);
$endpoint = $psc > 0 ? $pieces[$psc - 1] : '';
log_message('critical', "Enpoint-> ".$endpoint );
$endpoints = $this->endPointList();
$out = array();
$res1 = [];
if (array_key_exists($endpoint, $endpoints)) {
} else {
http_response_code(404);
// tell the user product does not exist
echo json_encode([
'message' => 'Endpoint not found.',
'URI' => $uri,
]);
}
// echo "EXYTACT INPUT DATA HERE";
$raw_json = file_get_contents('php://input');
$raw_array = json_decode($raw_json, true);
$local_out =[];
if ($_SERVER["REQUEST_METHOD"] == "POST") { // if upload lets modify all the data
if ( $endpoint == 'uploads'){
log_message('critical', "ENDPOINT TESTING UPLOAD-> ".$endpoint );
$local_out=["test_msg"=>'Yes the upload endpoint was hit********'];
$call_backend = false; // will be decided after file is saved
//$fl_in=[];
$raw_json = file_get_contents('php://input');
$raw_array = json_decode($raw_json, true);
$raw_array["call_backend"] = $call_backend;
$raw_array["system_primary_uploads"] = $this->getSiteConfigurations("system.primary_uploads");
$out = ( new \App\Models\UploadManager() )->reciveUpload($raw_array, $local_out);
$call_backend = $out["call_backend"];
$raw_array["message"] = $out["message"];
}
if (isset($_FILES) && is_array($_FILES) && count($_FILES)>0) {
$raw_array = array_merge($_POST,$_FILES);
}
}
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
log_message('critical', "Enpoint LOC2 HERE -> ".$endpoint );
$get_param = $_GET['reqData'] ?? null;
$raw_array = ($get_param!=null) ? json_decode($get_param, true):[];
}
//$in = $raw_array;
log_message('critical', "wrenchboard_api-CALL RAW DATA".serialize($raw_array) );
//-- move to another module start
$in["loc"] = $_SERVER["REMOTE_ADDR"];
$in = $this->prepareEndPointData($endpoint, $raw_array,$call_backend,$local_out);
log_message('critical', "wrenchboard_api-CALL PREPARE DATA".serialize($in) );
if ( $call_backend == true && $in["action"] !='' ){
$wrenchboard = new \App\Models\BackendModel();
$ret = $wrenchboard->wrenchboard_api($in, $out);
$out['internal_return'] = $ret;
}
else
{
$out = $local_out;
}
return json_encode( ( new \App\Models\ResultFormatter() )->processOutJson($in, $out));
}
private function procOfferInterest($in) {
$proc = $in['proc'];
$in['interest'] = 0;
switch ($proc) {
case 'ACCEPT':
$in['interest'] = JOB_INTEREST_ACCEPT;
break;
case 'REJECT':
$in['interest'] = JOB_INTEREST_REJECT;
break;
case 'CANCEL':
$in['interest'] = JOB_INTEREST_CANCEL;
break;
}
$in["action"] = WRENCHBOARD_JOB_PROC_INTEREST;
return $in;
}
private function processJobStatus($data) {
/*$data['member_id'] = $_SESSION['member_id']; // = $ret->email;
$data['proc'] = $this->input->get('proc');
$data['job_id'] = $this->input->get('jobID');
$data['job_contract'] = $this->input->get('job_contract');
$data['extension']
*/
$data['job_action'] = 0;
switch ($data['job_action']) {
case 'NOTIFY_COMPLETE': // notify completed
$data['job_action'] = CONTRACT_NOTIFY_COMPLETE;
break;
case 'REQUEST_CANCEL': // request cancel
$data['job_action'] = CONTRACT_REQUEST_CANCEL;
break;
case 'ACCEPT_COMPLETE':
$data['job_action'] = CONTRACT_ACCEPT_COMPLETE;
break;
case 'REJECT_COMPLETE':
$data['job_action'] = CONTRACT_REJECT_COMPLETE;
break;
case 'EXTEND_TIMELINE':
$data['job_action'] = CONTRACT_EXTEND_TIMELINE;
break;
case 'CANCEL_CONTRACT':
$data['job_action'] = CONTRACT_CANCEL_CONTRACT;
break;
}
$data['action'] = WRENCHBOARD_CONTRACT_STATUS;
return $data;
}
private function getSiteConfigurations($config_item){
$wrenchboard = new \App\Models\BackendModel();
return $wrenchboard->cfgReadChar($config_item);
}
private function dummyData($raw_array)
{
return [
'internal_return' => 0,
'msg' => 'Not implemented yet',
'raw_data' => $raw_array,
];
}
}