Files
WrenchBoradWeb/www-api/app/Controllers/WrenchApi.php
T
CHIEFSOFT\ameye 2ecc5c7643 Web Api clean up
2023-07-08 08:41:13 -04:00

576 lines
23 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 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 'familysampletasks':
$in["action"] = WRENCHBOARD_FAMILY_SAMPLETASKS;
break;
case 'familysuggesttasks':
if (!isset($in["banner"])){
$in["banner"] = 'default.jpg';
}
$in["action"] = WRENCHBOARD_FAMILY_SGGESTTASKS;
break;
case 'familywaitingtasks':
$in["action"] = WRENCHBOARD_FAMILY_SGGESTWAITING;
break;
case 'familysuggestlist':
$in["action"] = WRENCHBOARD_FAMILY_SGGESTLIST;
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"];
if (!isset($in["country"]) || $in["country"]==""){
$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 'waitinginterest':
$in["action"] = WRENCHBOARD_JOB_WAITING_INT;
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;
}
$this->doCacheStep($in, $out);
return json_encode( ( new \App\Models\ResultFormatter() )->processOutJson($in, $out));
}
private function doCacheStep($in, $out){
switch ($in["action"]) {
case WRENCHBOARD_ACCOUNT_LOGIN:
case WRENCHBOARD_ACCOUNT_AUXLOGIN:
if (isset($out["uid"]) && $out["uid"]!=''){
$endpoint = "SESSION-".$out["uid"];
$this->saveCache($endpoint,$out);
}
break;
}
// $endpoint = "WRENCH_BLOG_DATA";
// $res1 = $this->getCache($endpoint);
// if (count($res1)==0){
// $rawData = $this->apiData();
// $res1= $rawData['payload']; //[0]['payload'];
// $this->saveCache($endpoint,$res1);
// }
return 0;
}
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 dummyData($raw_array)
{
return [
'internal_return' => 0,
'msg' => 'Not implemented yet',
'raw_data' => $raw_array,
];
}
}