2159 lines
76 KiB
C++
2159 lines
76 KiB
C++
// Account management toosl
|
|
#include "clog.h"
|
|
#include "cgi.h"
|
|
#include "input.h"
|
|
#include "wrenchboard_api.h"
|
|
#include "account.h"
|
|
#include "email.h"
|
|
#include "safestring.h"
|
|
#include <string>
|
|
#include "pgsql.h"
|
|
#include "pgsql_wrapper.h"
|
|
#include "cfg.h"
|
|
#include <curl/curl.h>
|
|
#include "smoney.h"
|
|
#include "account_mngt.h"
|
|
#include "creditcards.h"
|
|
#include "payments.h"
|
|
|
|
#include "sel_data.h"
|
|
#include "history.h"
|
|
|
|
#include "jobs.h"
|
|
#include "reco_engine.h" //error in file name
|
|
|
|
#define CREATE_BY_EMAIL 1000
|
|
#define CREATE_BY_PHONE 2000
|
|
|
|
struct MemoryStruct {
|
|
char *memory;
|
|
size_t size;
|
|
};
|
|
|
|
static size_t
|
|
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) {
|
|
size_t realsize = size * nmemb;
|
|
struct MemoryStruct *mem = (struct MemoryStruct *) userp;
|
|
|
|
mem->memory = (char*) realloc(mem->memory, mem->size + realsize + 1);
|
|
if (mem->memory == NULL) {
|
|
/* out of memory! */
|
|
logfmt(logINFO, "not enough memory (realloc returned NULL)");
|
|
return 0;
|
|
}
|
|
|
|
memcpy(&(mem->memory[mem->size]), contents, realsize);
|
|
mem->size += realsize;
|
|
mem->memory[mem->size] = 0;
|
|
|
|
return realsize;
|
|
}
|
|
|
|
static const string base64_chars =
|
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
"abcdefghijklmnopqrstuvwxyz"
|
|
"0123456789+/";
|
|
|
|
static inline bool is_base64(unsigned char c) {
|
|
return (isalnum(c) || (c == '+') || (c == '/'));
|
|
}
|
|
|
|
|
|
string base64_decode(string const& encoded_string) {
|
|
int in_len = encoded_string.size();
|
|
int i = 0;
|
|
int j = 0;
|
|
int in_ = 0;
|
|
|
|
unsigned char char_array_4[4], char_array_3[3];
|
|
std::string ret;
|
|
|
|
while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
|
|
char_array_4[i++] = encoded_string[in_];
|
|
in_++;
|
|
if (i == 4) {
|
|
for (i = 0; i < 4; i++)
|
|
char_array_4[i] = base64_chars.find(char_array_4[i]);
|
|
|
|
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
|
|
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
|
|
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
|
|
|
|
for (i = 0; (i < 3); i++)
|
|
ret += char_array_3[i];
|
|
i = 0;
|
|
}
|
|
}
|
|
|
|
if (i) {
|
|
for (j = i; j < 4; j++)
|
|
char_array_4[j] = 0;
|
|
|
|
for (j = 0; j < 4; j++)
|
|
char_array_4[j] = base64_chars.find(char_array_4[j]);
|
|
|
|
char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
|
|
char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
|
|
char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
|
|
|
|
for (j = 0; (j < i - 1); j++) ret += char_array_3[j];
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/*
|
|
CREATE TABLE members_log (
|
|
id SERIAL,
|
|
member_id INT REFERENCES members(id),
|
|
mlog TEXT,
|
|
loc INET,
|
|
status INT DEFAULT 1,
|
|
created timestamp without time zone DEFAULT now()
|
|
);
|
|
*/
|
|
long LoginLogger( long member_id, long login_mode);
|
|
long WrenchBoardMobileSendMoney(CVars in, CVars &out);
|
|
long WrenchBoardMobileSendJobInterest(CVars in, CVars &out);
|
|
long WrenchReturnPendingJobList(CVars in, CVars &out);
|
|
long WrenchBoardMobileSendUserWallet(CVars in, CVars &out);
|
|
long WrenchBoardStartBalanceTopup(CVars in, CVars &out);
|
|
long WrenchBoardCompleteBalanceTopup(CVars in, CVars &out);
|
|
long WrenchResendSendReferLoadLink(CVars in, CVars &out);
|
|
long WrenchBoardDeleteAccount(CVars in, CVars &out);
|
|
long VerifyWrenchAccountLink(CVars in, CVars &out);
|
|
|
|
long test() {
|
|
FILE* oldFile = Output2FILE::Stream();
|
|
FILE* pFile = fopen(WRENCHBOARD_CONFIG"/../logs/somefile.log", "a");
|
|
Output2FILE::Stream() = pFile;
|
|
//...
|
|
FILE_LOG(logINFO) << "Some text...";
|
|
logfmt(logINFO, "Some text...");
|
|
//...
|
|
fclose(pFile);
|
|
Output2FILE::Stream() = oldFile;
|
|
return 0L;
|
|
}
|
|
|
|
long account_calls(CVars in, CVars &out) {
|
|
logfmt(logINFO, "account_calls()");
|
|
out["result"] = "YES I GET TO BACK END";
|
|
long action = REQ_LONG(in, "action", 0, -1);
|
|
CVars x;
|
|
long ret = 0;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
const PGresult *res;
|
|
logfmt(logINFO, "action = %ld", action);
|
|
logfmt(logINFO, "google = %ld", WRENCHBOARD_GOOGLE_LOGIN);
|
|
//test();
|
|
|
|
switch (action) {
|
|
case WRENCHBOARD_CREATE_MOBILEUSER:
|
|
return CreateMobileWrenchBoardAccount(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_COMPLETE_MOBILEUSER:
|
|
return CompleteMobileAccountCreation(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_RESET_PASSWORD:
|
|
return WrenchResetMemberPass(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_MOBILE_MESSAGE:
|
|
return WrenchReturnMemberMessages(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_MOBILE_ACTIVEJOB:
|
|
return WrenchMemberActiveJobs(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_TESTEMAIL:
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case WRENCHBOARD_SAVE_GALLERY:
|
|
return WrenchUpdateSiteGallery(in, out);
|
|
break;
|
|
|
|
|
|
|
|
case WRENCHBOARD_SEND_CONTACTUS:
|
|
logfmt(logINFO, "ContactUS()");
|
|
REQ_STRING(in, "email", 5, 49, "(.*)");
|
|
REQ_STRING(in, "firstname", 1, 49, "(.*)");
|
|
REQ_STRING(in, "lastname", 1, 40, "(.*)");
|
|
REQ_STRING(in, "your_message", 4, 400, "(.*)");
|
|
//OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)");
|
|
|
|
in["loc"] = loc;
|
|
in["loc"].set_valid(true);
|
|
|
|
x["firstname"] = in["firstname"];
|
|
x["firstname"].set_valid(true);
|
|
x["lastname"] = in["lastname"];
|
|
x["lastname"].set_valid(true);
|
|
x["email"] = in["email"];
|
|
x["email"].set_valid(true);
|
|
x["your_message"] = in["your_message"];
|
|
x["your_message"].set_valid(true);
|
|
if (in["loc"].length() > 0) x["loc"] = in["loc"];
|
|
x["loc"].set_valid(true);
|
|
|
|
|
|
ret = insert_db_record(DBS_VALID, "contacts", "contacts_id_seq", x);
|
|
if (ret > 0) {
|
|
x["contact_id"] = ret;
|
|
x["contact_id"].set_valid(true);
|
|
//ContactMessage(x); RETIRED
|
|
account_email(ACCOUNT_CONTACT_ALERT, x, out);
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_LOGIN:
|
|
return LoginWrenchBoardAccount(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_FACEBOOK_LOGIN:
|
|
return LoginWrenchBoardFacebook(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_GOOGLE_LOGIN:
|
|
return LoginWrenchBoardGoogle(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_APPLE_LOGIN:
|
|
return LoginWrenchBoardApple(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_PENDING:
|
|
/*
|
|
if ( load_db_record(out, "SELECT uid FROM members_pending WHERE LOWER(username)=LOWER('%s')",in["username"].c_str()) ){
|
|
out["acc"]="DULPICATE";
|
|
return -1;
|
|
}
|
|
if ( load_db_record(out, "SELECT uid FROM members WHERE LOWER(username)=LOWER('%s')",in["username"].c_str()) ){
|
|
out["acc"]="DULPICATE";
|
|
return -1;
|
|
}*/
|
|
return CreateWrenchBoardAccountPending(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_CREATEACC:
|
|
/*if ( load_db_record(out, "SELECT uid FROM members_pending WHERE LOWER(username)=LOWER('%s')",in["username"].c_str()) ){
|
|
out["acc"]="DULPICATE";
|
|
return -1;
|
|
}
|
|
if ( load_db_record(out, "SELECT uid FROM members WHERE LOWER(username)=LOWER('%s')",in["username"].c_str()) ){
|
|
out["acc"]="DULPICATE";
|
|
return -1;
|
|
}*/
|
|
return CreateWrenchBoardAccount(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_LOG_MEMBER:
|
|
return LogWrenchBoardMember(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_RESETPASS:
|
|
return WrenchResetMemberPass(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_RESEND_PENDING_LINK:
|
|
REQ_LONG(in, "pending_id", 1, -1);
|
|
account_email(ACCOUNT_RESEND_PENDING, in, out); // ALERT CUSTOMER OF LOGIN
|
|
break;
|
|
|
|
case WRENCHBOARD_DELETE_PENDING_LINK:
|
|
REQ_LONG(in, "pending_id", 1, -1);
|
|
pgsql_exec("UPDATE members_pending SET status=7,username='DEL-%lu' WHERE id=%lu AND status = 1", in["pending_id"].Long(), in["pending_id"].Long());
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_SENDREFER:
|
|
return WrenchSendRefer(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_REFERLINK:
|
|
return WrenchSendReferLoadLink(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_REFRESENDLNK:
|
|
return WrenchResendSendReferLoadLink(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_SESSION_VERIFY:
|
|
return VerifySession(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_UPDATE_PROFILE:
|
|
return WrenchUpdateProfile(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_TERMS:
|
|
return WrenchUpdateAccountTerms(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_MDESCRIPTION:
|
|
return WrenchUpdateAccountDescription(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_SETPASSWD:
|
|
return WrenchResetPass(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_SAVESKILL:
|
|
return WrenchSaveSkill(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_DELSKILL:
|
|
return WrenchDeleteSaveSkill(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_DELETE_RECACC:
|
|
REQ_LONG(in, "recipient_id", 1, -1);
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
if (pgsql_exec("UPDATE sendmoney_recipient SET status=7 WHERE member_id=%lu AND id=%lu AND status = 1", in["member_id"].Long(), in["recipient_id"].Long())) {
|
|
ret = PHP_API_OK;
|
|
}
|
|
break;
|
|
|
|
// case WRENCHBOARD_START_JOBLIST:
|
|
// return WrenchReturnStartJobList(in, out);
|
|
// break;
|
|
//
|
|
case WRENCHBOARD_START_JOBLIST:
|
|
case WRENCHBOARD_ACCOUNT_JOBLIST:
|
|
return WrenchReturnJobList(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_PENDJOB: // user pending job
|
|
return WrenchReturnPendingJobList(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_DASHDATA:
|
|
return WrenchLoadDashData(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_GETBANKLIST:
|
|
return WrenchReturnMemberBankAccount(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_SENDMONEY:
|
|
return WrenchBoardMobileSendMoney(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_SENDJOBINT:
|
|
return WrenchBoardMobileSendJobInterest(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_ADNEWCC:
|
|
return WrenchNewCardPayment(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_USESAVEDCC:
|
|
return WrenchCardRechargePayment(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_USER_SETTINGS:
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_STRING(in, "pref_id", 4, 6, "(.*)");
|
|
REQ_LONG(in, "status", 1, -1);
|
|
|
|
res = pgsql_query("SELECT id FROM members_settings WHERE member_id=%lu AND pref_id='%s' ", in["member_id"].Long(), in["pref_id"].c_str());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
pgsql_exec("UPDATE members_settings SET status=%lu WHERE member_id=%lu AND pref_id='%s' ",in["status"].Long(), in["member_id"].Long(), in["pref_id"].c_str());
|
|
}
|
|
else{
|
|
CVars xx;
|
|
xx["member_id"] = in["member_id"]; xx["member_id"].set_valid(true);
|
|
xx["pref_id"] = in["pref_id"]; xx["pref_id"].set_valid(true);
|
|
xx["status"] = in["status"]; xx["status"].set_valid(true);
|
|
insert_db_record(DBS_VALID, "members_settings", "members_settings_id_seq", xx);
|
|
}
|
|
ret = PHP_API_OK;
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_WALLETS:
|
|
logfmt(logINFO, "/WRENCHBOARD_ACCOUNT_WALLETS()");
|
|
return WrenchBoardMobileSendUserWallet(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_PREPARE_TOPUP:
|
|
logfmt(logINFO, "/WRENCHBOARD_ACCOUNT_PREPARE_TOPUP()");
|
|
return WrenchBoardStartBalanceTopup(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_COMPLETE_TOPUP:
|
|
logfmt(logINFO, "/WRENCHBOARD_ACCOUNT_COMPLETE_TOPUP()");
|
|
return WrenchBoardCompleteBalanceTopup(in, out);
|
|
break;
|
|
case WRENCHBOARD_USER_DELETEACC:
|
|
return WrenchBoardDeleteAccount(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_PRICE_COMBO:
|
|
return getJobPriceCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_JOBPOST_DURATION:
|
|
return getJobPostDuration(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_USER_RECIPEINT:
|
|
return getUserRecipientCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_ADD_RECIPEINT:
|
|
return member_addrecipient(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_ACCOUNT_TYPES:
|
|
return getAccountTypeCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_COUNTRY_COMBO:
|
|
return getCountryCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_JOB_COUNTRY:
|
|
return getCountryJobCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_COUNTRY_BANKS:
|
|
return getBankCombo(in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_ACCOUNT_REFFERHX:
|
|
return WrenchRefferHx( in, out);
|
|
break;
|
|
|
|
case WRENCHBOARD_VERIFY_PENDING_LINK:
|
|
return VerifyWrenchAccountLink( in, out);
|
|
break;
|
|
case WRENCHBOARD_ACCOUNT_HOMEBANNERS:
|
|
return WrenchHomeBanners(in, out);
|
|
break;
|
|
}
|
|
logfmt(logINFO, "/account_calls()");
|
|
return ret;
|
|
}
|
|
|
|
#define PHP_API_TRANSFER_COMPLETE 200
|
|
|
|
|
|
|
|
|
|
long VerifyWrenchAccountLink(CVars in, CVars &out) {
|
|
logfmt(logINFO, "VerifyWrenchAccountLink()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const PGresult *res;
|
|
REQ_STRING(in, "verify_link", 2, 120, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
out["status_text"] = "Start";
|
|
out["status"] = "-1";
|
|
try {
|
|
res = pgsql_query("SELECT uid AS pending_uid,id AS pending_id FROM members_pending WHERE verify_link ='%s' AND expire > now() AND status = 1 LIMIT 1",in["verify_link"].c_str());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
out["pending_uid"] = rec["pending_uid"]; out["pending_uid"].set_valid( true );
|
|
out["pending_id"] = rec["pending_id"]; out["pending_id"].set_valid( true );
|
|
out["status_text"] = "Link Verfied";
|
|
out["status"] = "0";
|
|
ret = PHP_API_OK;
|
|
}
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/VerifyWrenchAccountLink()");
|
|
return ret;
|
|
}
|
|
|
|
long WrenchBoardDeleteAccount(CVars in, CVars &out)
|
|
{
|
|
long ret = 0;
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_STRING(in, "reason", 2, 149, "(.*)");
|
|
CVars xx;
|
|
xx["member_id"] = in["member_id"]; xx["member_id"].set_valid(true);
|
|
xx["reason"] = in["reason"]; xx["reason"].set_valid(true);
|
|
out["delete_id"] = insert_db_record(DBS_VALID, "members_delete", "members_delete_id_seq", xx);
|
|
ret = PHP_API_OK;
|
|
/*
|
|
DO THE DELETE HERE NOW
|
|
*/
|
|
return ret;
|
|
}
|
|
|
|
long WrenchBoardCompleteBalanceTopup(CVars in, CVars &out){
|
|
logfmt(logINFO, "WrenchBoardCompleteBalanceTopup()");
|
|
long trx_id = 0;
|
|
const PGresult *res;
|
|
|
|
try {
|
|
REQ_STRING(in, "tx_ref", 2, 50, "(.*)");
|
|
REQ_STRING(in, "transaction_id", 2, 50, "(.*)");
|
|
REQ_LONG(in, "status", 1, -1);
|
|
|
|
res = pgsql_query("SELECT id AS trx_id,member_id FROM flutterwave_payments WHERE tx_ref = '%s' AND status=0",in["tx_ref"].c_str());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
|
|
in["member_id"] = rec["member_id"]; in["member_id"].set_valid( true );
|
|
in["trx_id"] = rec["trx_id"]; in["trx_id"].set_valid( true );
|
|
|
|
pgsql_exec("UPDATE flutterwave_payments SET transaction_id = '%s', " \
|
|
"status=%lu,updated=now(),return_status='%s' WHERE id = %lu AND status=0 AND " \
|
|
"tx_ref='%s' ", in["transaction_id"].c_str(),in["status"].Long(),in["return_status"].c_str(),rec["trx_id"].Long(), in["tx_ref"].c_str());
|
|
|
|
if ( in["status"].Long() == 5){
|
|
return WrenchMemberTopupPayment( in, out ); // This start the actual crediting
|
|
}
|
|
}
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long WrenchBoardCompleteBalanceTopup(CVars in, CVars &out)");
|
|
}
|
|
return trx_id;
|
|
}
|
|
|
|
long WrenchBoardStartBalanceTopup(CVars in, CVars &out){
|
|
logfmt(logINFO, "WrenchBoardStartBalanceTopup()");
|
|
long trx_id = 0;
|
|
/*
|
|
$data['tx_ref'] = 'wrench-'.rand(1000000000,9999999999);
|
|
$data['currency'] = "NGN";
|
|
$data['customer_email'] = $_SESSION['username'];
|
|
$data['customer_phone_number'] = '';
|
|
$data['customer_name'] = $_SESSION['firstname'].' '.$_SESSION['lastname'];
|
|
$data['consumer_id'] = $_SESSION['member_id'];
|
|
$data['consumer_mac'] = $_SESSION['member_id']."-912ba-1192a";
|
|
$data['redirect_url'] = base_url() . "dash"; //"https://oameye.work.wrenchboard.com/dash";
|
|
$data['public_key'] = "FLWPUBK_TEST-54c90141b028789d671067bd72f781a9-X";
|
|
*/
|
|
out["public_key"] = CfgReadChar("flutterwave.public_key");
|
|
|
|
try {
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_LONG(in, "amount", 1, -1);
|
|
REQ_STRING(in, "currency", 2, 10, "(.*)");
|
|
CVars x;
|
|
x["member_id"] = in["member_id"];
|
|
x["member_id"].set_valid(true);
|
|
x["amount"] = in["amount"];
|
|
x["amount"].set_valid(true);
|
|
x["currency"] = in["currency"];
|
|
x["currency"].set_valid(true);
|
|
|
|
trx_id = insert_db_record(DBS_VALID, "flutterwave_payments", "flutterwave_payments_id_seq", x);
|
|
|
|
if (trx_id > 0) {
|
|
load_db_record(out, "SELECT fp.member_id AS consumer_id,fp.tx_ref,fp.tx_ref,fp.currency,m.phone,m.uid AS consumer_mac " \
|
|
"FROM flutterwave_payments fp LEFT JOIN members m ON m.id=fp.member_id WHERE fp.id =%lu",trx_id);
|
|
}
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long WrenchBoardStartBalanceTopup(CVars in, CVars &out)");
|
|
}
|
|
return trx_id;
|
|
}
|
|
long WrenchBoardMobileSendUserWallet(CVars in, CVars &out) {
|
|
logfmt(logINFO, "WrenchBoardMobileSendUserWallet()");
|
|
char vname[30];
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_STRING(in, "sessionid", 2, 149, "(.*)");
|
|
logfmt(logINFO, "WrenchBoardMobileSendUserWallet() Verify Session ");
|
|
if ( VerifySession(in, out) != PHP_API_OK ){
|
|
return 0;
|
|
}
|
|
|
|
try {
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
out["total_record"] = "0";
|
|
const PGresult *res;
|
|
res = pgsql_query("SELECT w.amount,c.*,w.amount AS current_balance FROM members_wallet w LEFT JOIN currency c ON c.code=w.currency WHERE w.member_id =%lu ORDER BY c.lorder DESC", in["member_id"].Long());
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
out["total_record"] = pgsql_num_rows(res);
|
|
|
|
for (int i = 0, n = pgsql_num_rows(res); i < n; i++) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, i);
|
|
if (f.empty()) continue;
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
|
|
snprintf(vname, sizeof (vname), "amount_%05d", i);
|
|
out[vname] = rec["amount"];
|
|
snprintf(vname, sizeof (vname), "currency_%05d", i);
|
|
out[vname] = rec["currency"];
|
|
|
|
// amount | id | code | description | symbol | action_type | lorder | current_balance
|
|
snprintf(vname, sizeof (vname), "description_%05d", i);
|
|
out[vname] = rec["description"];
|
|
|
|
snprintf(vname, sizeof (vname), "symbol_%05d", i);
|
|
out[vname] = rec["symbol"];
|
|
|
|
snprintf(vname, sizeof (vname), "action_type_%05d", i);
|
|
out[vname] = rec["action_type"];
|
|
|
|
snprintf(vname, sizeof (vname), "code_%05d", i);
|
|
out[vname] = rec["code"];
|
|
|
|
}
|
|
}
|
|
ret = PHP_API_OK;
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long WrenchBoardMobileSendUserWallet(CVars in, CVars &out)");
|
|
}
|
|
logfmt(logINFO, "/WrenchBoardMobileSendUserWallet()");
|
|
return ret;
|
|
|
|
}
|
|
|
|
long WrenchBoardMobileSendJobInterest(CVars in, CVars &out) {
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_LONG(in, "job_id", 1, -1);
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_STRING(in, "sessionid", 2, 149, "(.*)");
|
|
|
|
|
|
if ( load_db_record(out, "SELECT offer_code FROM members_jobs_offer WHERE id ='%lu' AND expire>= now() AND status = 1 AND public_view > 0", in["job_id"].Long())> 0){
|
|
in["offer_code"] = out["offer_code"];
|
|
in["offer_code"].set_valid( true );
|
|
|
|
ret = WrenchJobsOfferInterest(in, out);
|
|
if ( ret == PHP_CREATED_OK ){
|
|
ret = 200;
|
|
}
|
|
else{
|
|
ret = 100; // message will be in the status string to display
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
|
|
$data = $this->getSessionArray();
|
|
$data['offer_code'] = $this->input->get('job_contract');
|
|
$data['member_id'] = $_SESSION['member_id']; // just maing sure
|
|
|
|
$data['action'] = WRENCHBOARD_JOB_SEND_INTEREST;
|
|
$this->load->model('backend_model');
|
|
$out = array();
|
|
$res = $this->backend_model->wrenchboard_api($data, $out);
|
|
if ($res == PHP_CREATED_OK) {
|
|
echo 'Success - ' . $out['status'];
|
|
} else {
|
|
echo 'Error - ' . $out['status'];
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
return ret;
|
|
}
|
|
long WrenchBoardMobileSendMoney(CVars in, CVars &out){
|
|
logfmt(logINFO, "long *************** WrenchBoardMobileSendMoney(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
try{
|
|
int r1, r2, r3;
|
|
char send_trxid[25];
|
|
srand(time(NULL));
|
|
r1 = abs(rand()*1000);
|
|
srand(time(NULL));
|
|
r2 = abs(rand() * r1);
|
|
srand(time(NULL));
|
|
r3 = abs(rand() * r2);
|
|
sprintf(send_trxid, "T%04lu", r1);
|
|
|
|
logfmt(logINFO, "Recipient ID =====() %lu",in["bankid"].Long() );
|
|
out["sendmoney_message"] ="Processing...";
|
|
|
|
|
|
REQ_LONG(in, "bankid", 1, -1);
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_STRING(in, "sessionid", 2, 149, "(.*)");
|
|
OPTIONAL(in, "comment") REQ_STRING(in, "comment", 2, 149, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
REQ_LONG(in, "amount", 1, -1);
|
|
|
|
|
|
in["action"] = WRENCHBOARD_SMONEY_MEMBER;
|
|
in["senderid"] = in["member_id"];
|
|
in["InitiatingEntityCode"] = "MBA";
|
|
in["InitiatingAmount"] = in["amount"];
|
|
|
|
long fee = member_sendmoney_fee(in, out);
|
|
|
|
in["Fee"] = fee;
|
|
|
|
in["InitiatingChannel"] = "7";
|
|
in["InitiatingPaymentMethodCode"] = "CA";
|
|
in["InitiatingCurrencyCode"] = "566";
|
|
in["recipientid"] = in["bankid"]; in["recipientid"].set_valid( true );
|
|
in["transaction_id"] = send_trxid; in["transaction_id"].set_valid( true );
|
|
in["TerminatingPaymentMethodCode"] = "AC";
|
|
in["TerminatingAmount"] = in["amount"];
|
|
in["TerminatingCurrencyCode"] = "566";
|
|
in["TerminatingCountryCode"] = "NG";
|
|
|
|
logfmt(logINFO, "Recipient ID Final =====() %lu",in["recipientid"].Long() );
|
|
ret = smoney_calls(in, out);
|
|
if ( ret == PHP_API_OK){
|
|
out["sendmoney_message"] ="Completed - Estimated delivery time is 2 to 4 Hours.";
|
|
ret = PHP_API_TRANSFER_COMPLETE;
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long WrenchBoardMobileSendMoney(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
|
|
long WrenchLoadDashData(CVars in, CVars &out) {
|
|
logfmt(logINFO, "WrenchLoadDashData()");
|
|
char vname[30];
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
try {
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
// REQ_LONG(in, "page", 1, -1);
|
|
// const PGresult *res;
|
|
|
|
const PGresult *res = pgsql_query("SELECT * FROM members WHERE id=%lu", member_id);
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
ret = PHP_API_OK;
|
|
out["status"] = "OK";
|
|
out = rec;
|
|
}
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long medTrReasonList(CVars in, CVars &out)");
|
|
}
|
|
logfmt(logINFO, "/WrenchLoadDashData()");
|
|
return ret;
|
|
}
|
|
|
|
long WrenchResetMemberPass(CVars in, CVars &out) {
|
|
|
|
logfmt(logINFO, "long WrenchResetMemberPass(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
long member_id = 0;
|
|
try {
|
|
|
|
REQ_STRING(in, "email", 2, 49, "(.*)");
|
|
|
|
if (load_db_record(out, "SELECT id AS member_id FROM members WHERE username = '%s'", in["email"].c_str())) {
|
|
member_id = out["member_id"].Long();
|
|
}
|
|
|
|
|
|
CVars xx;
|
|
if (member_id > 0) {
|
|
|
|
int r1, r2, r3;
|
|
char verify_link[100];
|
|
srand(time(NULL));
|
|
r1 = abs(rand()*100000000);
|
|
xx["member_id"] = member_id;
|
|
xx["member_id"].set_valid(true);
|
|
xx["email"] = in["email"];
|
|
xx["email"].set_valid(true);
|
|
xx["loc"] = loc;
|
|
xx["loc"].set_valid(true);
|
|
|
|
out["password_reset_id"] = insert_db_record(DBS_VALID, "password_reset", "password_reset_id_seq", xx);
|
|
|
|
if (out["password_reset_id"].Long() > 0) {
|
|
in["password_reset_id"] = out["password_reset_id"];
|
|
in["password_reset_id"].set_valid(true);
|
|
pgsql_exec("UPDATE password_reset SET expired = now() + '1 day',pass_link=md5(now()::text)||''||md5(%d::text) WHERE id = %lu", r1, out["password_reset_id"].Long());
|
|
account_email(ACCOUNT_PASSWORD_RESET, in, out);
|
|
}
|
|
|
|
|
|
}// if member_id
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long WrenchResetMemberPass(CVars in, CVars out)");
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
long LogWrenchBoardMember(CVars in, CVars &out) {
|
|
|
|
logfmt(logINFO, "long LogWrenchBoardMember(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
try {
|
|
REQ_STRING(in, "mlog", 2, 149, "(.*)");
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
CVars xx;
|
|
|
|
xx["member_id"] = in["member_id"];
|
|
xx["member_id"].set_valid(true);
|
|
xx["mlog"] = in["mlog"];
|
|
xx["mlog"].set_valid(true);
|
|
xx["loc"] = loc;
|
|
xx["loc"].set_valid(true);
|
|
|
|
out["request_id"] = insert_db_record(DBS_VALID, "members_log", "members_log_id_seq", xx);
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long LogWrenchBoardMember(CVars in, CVars out)");
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
long LogManagerAction(CVars in, CVars &out) {
|
|
|
|
logfmt(logINFO, "long LogManagerAction(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_STRING(in, "log_msg", 2, 149, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
REQ_LONG(in, "managers_id", 1, -1);
|
|
|
|
CVars xx;
|
|
|
|
xx["managers_id"] = in["managers_id"];
|
|
xx["managers_id"].set_valid(true);
|
|
xx["log_msg"] = in["log_msg"];
|
|
xx["log_msg"].set_valid(true);
|
|
xx["loc"] = in["loc"];
|
|
xx["loc"].set_valid(true);
|
|
|
|
out["request_id"] = insert_db_record(DBS_VALID, "managers_actions", "managers_actions_id_seq", xx);
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long LogManagerAction(CVars in, CVars out)");
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* This return the list of jobs on the home page of the apps*/
|
|
long WrenchReturnPendingJobList(CVars in, CVars &out) {
|
|
logfmt(logINFO, "WrenchReturnPendingJobList()");
|
|
char vname[30];
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
try {
|
|
long limit = REQ_LONG(in, "limit", 1, -1);
|
|
// REQ_LONG(in, "page", 1, -1);
|
|
REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
out["total_record"] = "0";
|
|
|
|
const PGresult *res;
|
|
/*
|
|
|
|
res = pgsql_query("SELECT j.title,j.description,m.job_id,m.expire "
|
|
"FROM members_jobs_offer m "
|
|
"LEFT JOIN members_jobs j ON j.id=m.job_id "
|
|
"WHERE m.status = 1 AND m.client_id=0 "
|
|
"AND m.expire IS NOT NULL "
|
|
"AND m.public_view = 1 "
|
|
"ORDER BY m.expire DESC LIMIT %lu", in["limit"].Long());
|
|
*/
|
|
|
|
|
|
res = pgsql_query("SELECT mo.member_id, to_char(mo.added, 'Day Mon dd, yyyy HH:MI AM') AS sent,j.title,j.description,m.job_id,to_char( m.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire FROM members_offer_interest mo "
|
|
" LEFT JOIN members_jobs_offer m ON m.id = mo.offer_id "
|
|
" LEFT JOIN members_jobs j ON j.id=m.job_id "
|
|
" WHERE m.status = 1 AND m.client_id=0 "
|
|
" AND m.expire IS NOT NULL AND m.expire> now() AND m.public_view = 1 "
|
|
" AND mo.member_id = %lu ORDER BY mo.added DESC LIMIT %lu", in["member_id"].Long(), in["limit"].Long());
|
|
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
out["total_record"] = pgsql_num_rows(res);
|
|
|
|
for (int i = 0, n = pgsql_num_rows(res); i < n; i++) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, i);
|
|
if (f.empty()) continue;
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
|
|
snprintf(vname, sizeof (vname), "title_%05d", i);
|
|
out[vname] = rec["title"];
|
|
|
|
snprintf(vname, sizeof (vname), "description_%05d", i);
|
|
out[vname] = rec["description"];
|
|
|
|
snprintf(vname, sizeof (vname), "id_%05d", i);
|
|
out[vname] = rec["job_id"];
|
|
|
|
snprintf(vname, sizeof (vname), "expire_%05d", i);
|
|
out[vname] = rec["expire"];
|
|
|
|
snprintf(vname, sizeof (vname), "sent_%05d", i);
|
|
out[vname] = rec["sent"];
|
|
|
|
}
|
|
}
|
|
ret = PHP_API_OK;
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long WrenchReturnPendingJobList(CVars in, CVars &out)");
|
|
}
|
|
logfmt(logINFO, "/WrenchReturnPendingJobList()");
|
|
return ret;
|
|
}
|
|
|
|
|
|
/* This return the list of jobs on the home page of the apps*/
|
|
long WrenchReturnStartJobList(CVars in, CVars &out) {
|
|
logfmt(logINFO, "WrenchReturnStartJobList()");
|
|
char vname[30];
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
try {
|
|
long limit = REQ_LONG(in, "limit", 1, -1);
|
|
REQ_LONG(in, "page", 1, -1);
|
|
|
|
out["total_record"] = "0";
|
|
|
|
const PGresult *res;
|
|
|
|
res = pgsql_query("SELECT j.title,j.description,m.job_id,m.expire "
|
|
"FROM members_jobs_offer m "
|
|
"LEFT JOIN members_jobs j ON j.id=m.job_id "
|
|
"WHERE m.status = 1 AND m.client_id=0 "
|
|
"AND m.expire IS NOT NULL "
|
|
"AND m.public_view = 1 "
|
|
"AND m.expire > now() "
|
|
"ORDER BY m.expire DESC LIMIT %lu", in["limit"].Long());
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
out["total_record"] = pgsql_num_rows(res);
|
|
|
|
for (int i = 0, n = pgsql_num_rows(res); i < n; i++) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, i);
|
|
if (f.empty()) continue;
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
|
|
snprintf(vname, sizeof (vname), "title_%05d", i);
|
|
out[vname] = rec["title"];
|
|
|
|
snprintf(vname, sizeof (vname), "description_%05d", i);
|
|
out[vname] = rec["description"];
|
|
|
|
snprintf(vname, sizeof (vname), "expire_%05d", i);
|
|
out[vname] = rec["expire"];
|
|
|
|
snprintf(vname, sizeof (vname), "id_%05d", i);
|
|
out[vname] = rec["job_id"];
|
|
}
|
|
}
|
|
ret = PHP_API_OK;
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long medTrReasonList(CVars in, CVars &out)");
|
|
}
|
|
logfmt(logINFO, "/WrenchReturnStartJobList()");
|
|
return ret;
|
|
}
|
|
|
|
|
|
|
|
long WrenchUpdateSiteGallery(CVars in, CVars &out) {
|
|
long ret = PHP_API_BAD_PARAM;
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
REQ_LONG(in, "gallery_type", 1, -1);
|
|
OPTIONAL(in, "gallery") REQ_STRING(in, "gallery", 4, 150, "(.*)");
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
|
|
const PGresult *res = pgsql_query("SELECT id FROM members_site_gallery WHERE member_id=%lu AND gallery_type = %lu", in["member_id"].Long(), in["gallery_type"].Long());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
pgsql_exec("UPDATE members_site_gallery SET gallery = '%s' WHERE member_id=%ld AND id=%lu", in["gallery"].c_str(), in["member_id"].Long(), in["gallery_type"].Long());
|
|
ret = PHP_API_OK;
|
|
// NO WAY FOR DUPLICATE
|
|
} else {
|
|
CVars x;
|
|
x["member_id"] = member_id;
|
|
x["member_id"].set_valid(true);
|
|
x["gallery"] = in["gallery"];
|
|
x["gallery"].set_valid(true);
|
|
x["loc"] = loc;
|
|
x["loc"].set_valid(true);
|
|
x["gallery_type"] = in["gallery_type"];
|
|
x["gallery_type"].set_valid(true);
|
|
long sid = insert_db_record(DBS_VALID, "members_site_gallery", "members_site_gallery_id_seq", x);
|
|
ret = PHP_API_OK;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
long WrenchDeleteSaveSkill(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchDeleteSaveSkill(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
long member_id = 0;
|
|
|
|
try {
|
|
|
|
long savedskill_id = REQ_LONG(in, "savedskill_id", 1, -1);
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
CVars x;
|
|
const PGresult *res = pgsql_query("SELECT * FROM members_skills WHERE member_id=%lu AND id=%lu ", in["member_id"].Long(), in["savedskill_id"].Long());
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
pgsql_exec("UPDATE members_skills SET status = 0 WHERE member_id=%ld AND id=%lu", in["member_id"].Long(), in["savedskill_id"].Long());
|
|
ret = PHP_API_OK;
|
|
// NO WAY FOR DUPLICATE
|
|
} else {
|
|
|
|
}
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long WrenchDeleteSaveSkill(CVars in, CVars out)");
|
|
return ret;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
long WrenchSaveSkill(CVars in, CVars &out) {
|
|
|
|
logfmt(logINFO, "long WrenchSaveSkill(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
long member_id = 0;
|
|
try {
|
|
long category_id = REQ_LONG(in, "category_id", 1, -1);
|
|
long skill_id = REQ_LONG(in, "skill_id", 1, -1);
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
CVars x;
|
|
const PGresult *res = pgsql_query("SELECT * FROM members_skills WHERE member_id=%lu AND skill_id=%lu AND category_id=%lu", in["member_id"].Long(), in["skill_id"].Long(), in["category_id"].Long());
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
// NO WAY FOR DUPLICATE
|
|
// let us see the status
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
//if (f.empty()) continue;
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
if (rec["status"].Long() == 0) {
|
|
logfmt(logINFO, "~~~~~**** Update the status");
|
|
pgsql_exec("UPDATE members_skills SET status = 1 WHERE status = 0 AND member_id=%ld AND id=%lu", in["member_id"].Long(), rec["id"].Long());
|
|
ret = PHP_API_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
CVars x;
|
|
x["member_id"] = member_id;
|
|
x["member_id"].set_valid(true);
|
|
x["category_id"] = in["category_id"];
|
|
x["category_id"].set_valid(true);
|
|
x["skill_id"] = in["skill_id"];
|
|
x["skill_id"].set_valid(true);
|
|
long sid = insert_db_record(DBS_VALID, "members_skills", "members_skills_id_seq", x);
|
|
ret = PHP_API_OK;
|
|
}
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long WrenchSaveSkill(CVars in, CVars out)");
|
|
return ret;
|
|
|
|
}
|
|
|
|
long WrenchResetPass(CVars in, CVars &out) {
|
|
|
|
logfmt(logINFO, "long WrenchResetMemberPass(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
long member_id = 0;
|
|
try {
|
|
|
|
REQ_STRING(in, "pass_link", 10, 350, "(.*)");
|
|
REQ_STRING(in, "newpass", 8, 15, "(.*)");
|
|
|
|
CVars x;
|
|
const PGresult *res = pgsql_query("SELECT * FROM password_reset WHERE expired>now() AND status = 0 AND pass_link='%s'", in["pass_link"].c_str());
|
|
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
//if (f.empty()) continue;
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
in["reset_id"] = rec["id"];
|
|
in["reset_id"].set_valid(true);
|
|
// good to go
|
|
|
|
if (pgsql_exec("UPDATE members SET password = md5('%s') WHERE id = %lu AND status = 1 ", in["newpass"].c_str(), rec["member_id"].Long())) {
|
|
pgsql_exec("UPDATE password_reset SET status = 5 WHERE member_id=%ld AND pass_link='%s'", rec["member_id"].Long(), in["pass_link"].c_str());
|
|
ret = PHP_API_OK;
|
|
account_email(ACCOUNT_PASSWORD_COMPLT, in, out);
|
|
out["status"] = "Completed";
|
|
}
|
|
} else {
|
|
out["status"] = "Inavlid Process";
|
|
}
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["log_status"] = "Invalid Log Action";
|
|
}
|
|
logfmt(logINFO, "/long WrenchResetMemberPass(CVars in, CVars out)");
|
|
|
|
|
|
return ret;
|
|
|
|
|
|
}
|
|
|
|
long WrenchUpdateAccountDescription(CVars in, CVars &out) {
|
|
long ret = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "long WrenchUpdateAccountDescription(CVars in, CVars out)");
|
|
REQ_STRING(in, "description", 0, 500, "(.*)");
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
CVars x;
|
|
const PGresult *res = pgsql_query("SELECT id AS detail_id FROM members_detail WHERE member_id=%lu", member_id);
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
|
|
x["description"] = in["description"];
|
|
x["description"].set_valid(true);
|
|
update_db_record(DBS_VALID, "members_detail", x, rec["detail_id"].Long());
|
|
ret = PHP_API_OK;
|
|
} else {
|
|
x["member_id"] = member_id;
|
|
x["member_id"].set_valid(true);
|
|
x["description"] = in["description"];
|
|
x["description"].set_valid(true);
|
|
long sid = insert_db_record(DBS_VALID, "members_detail", "members_detail_id_seq", x); //members_session_id_seq
|
|
ret = PHP_API_OK;
|
|
}
|
|
|
|
|
|
return ret;
|
|
}
|
|
|
|
long WrenchUpdateAccountTerms(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchUpdateAccountTerms(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
out["terms_update"] = "";
|
|
try {
|
|
long action_item = REQ_LONG(in, "action_item", 1, -1);
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
switch (action_item) {
|
|
case ACCOUNT_AGREE_JOBS:
|
|
pgsql_exec("UPDATE members SET post_jobs=NOW() WHERE id=%lu ", member_id);
|
|
ret = PHP_API_OK;
|
|
out["terms_update"] = "completed";
|
|
break;
|
|
|
|
case ACCOUNT_AGREE_REFER:
|
|
pgsql_exec("UPDATE members SET refer=NOW() WHERE id=%lu ", member_id);
|
|
ret = PHP_API_OK;
|
|
out["terms_update"] = "completed";
|
|
break;
|
|
}
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid Parameters";
|
|
}
|
|
logfmt(logINFO, "/long WrenchUpdateAccountTerms(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
long WrenchUpdateProfile(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchUpdateProfile(CVars in, CVars out) ******* RETIRE THIS FUNCTION - no country change");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_STRING(in, "firstname", 3, 49, "(.*)");
|
|
REQ_STRING(in, "lastname", 3, 49, "(.*)");
|
|
REQ_STRING(in, "email", 5, 150, "(.*)");
|
|
REQ_STRING(in, "state", 3, 150, "(.*)");
|
|
REQ_STRING(in, "city", 3, 150, "(.*)");
|
|
REQ_STRING(in, "country", 1, 3, "(.*)");
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
CVars x;
|
|
x["firstname"] = in["firstname"];
|
|
x["firstname"].set_valid(true);
|
|
x["lastname"] = in["lastname"];
|
|
x["lastname"].set_valid(true);
|
|
x["email"] = in["email"];
|
|
x["email"].set_valid(true);
|
|
x["state"] = in["state"];
|
|
x["state"].set_valid(true);
|
|
x["city"] = in["city"];
|
|
x["city"].set_valid(true);
|
|
x["country"] = in["country"];
|
|
x["country"].set_valid(true);
|
|
|
|
update_db_record(DBS_VALID, "members", x, member_id);
|
|
ret = PHP_API_OK;
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid Parameters";
|
|
}
|
|
logfmt(logINFO, "/long WrenchUpdateProfile(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
long WrenchResendSendReferLoadLink(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchResendSendReferLoadLink(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_STRING(in, "uid", 3, 45, "(.*)");
|
|
if (load_db_record(out, "SELECT id AS refer_id, * FROM members_refer_friend WHERE status<>5 AND uid ='%s'", in["uid"].c_str()) > 0)
|
|
{
|
|
const PGresult *res = pgsql_query("UPDATE members_refer_friend SET sent=now() WHERE uid='%s'", out["uid"].c_str());
|
|
in["refer_id"] = out["refer_id"];
|
|
in["refer_id"].set_valid(true);
|
|
account_email(ACCOUNT_SEND_REFEREMAIL, in, out);
|
|
out["status"] = "Refer message sent";
|
|
ret = PHP_API_OK;
|
|
}
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid Parameters";
|
|
}
|
|
logfmt(logINFO, "/long WrenchResendSendReferLoadLink(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
long WrenchSendReferLoadLink(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchSendReferLoadLink(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_STRING(in, "refer_link", 3, 45, "(.*)");
|
|
if (load_db_record(out, "SELECT uid FROM members_refer_friend WHERE updated IS NULL AND refer_link ='%s'", in["refer_link"].c_str()) > 0)
|
|
{
|
|
const PGresult *res = pgsql_query("UPDATE members_refer_friend SET updated=now() WHERE uid='%s'", out["uid"].c_str());
|
|
}
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid Parameters";
|
|
}
|
|
logfmt(logINFO, "/long WrenchSendReferLoadLink(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
/**************************************************************************************************************************/
|
|
long WrenchSendRefer(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long WrenchSendRefer(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
//out = in;
|
|
out["status"] = "";
|
|
REQ_STRING(in, "ref_firstname", 3, 49, "(.*)");
|
|
REQ_STRING(in, "ref_lastname", 3, 49, "(.*)");
|
|
REQ_STRING(in, "ref_email", 5, 150, "(.*)");
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
const PGresult *res = pgsql_query("SELECT * FROM members_pending WHERE email='%s'", in["ref_email"].c_str());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
out["status"] = "Unable to add this email";
|
|
return ret;
|
|
}
|
|
|
|
const PGresult *res1 = pgsql_query("SELECT * FROM members WHERE email='%s'", in["ref_email"].c_str());
|
|
if (res1 != NULL && pgsql_num_rows(res1) > 0) {
|
|
out["status"] = "Unable to add this email";
|
|
return ret;
|
|
}
|
|
|
|
const PGresult *res2 = pgsql_query("SELECT * FROM members_refer_friend WHERE email='%s' AND status IN (1,4,5)", in["ref_email"].c_str());
|
|
if (res2 != NULL && pgsql_num_rows(res2) > 0) {
|
|
out["status"] = "Unable to add this email";
|
|
return ret;
|
|
}
|
|
|
|
CVars x;
|
|
x["member_id"] = in["member_id"];
|
|
x["member_id"].set_valid(true);
|
|
x["firstname"] = in["ref_firstname"];
|
|
x["firstname"].set_valid(true);
|
|
x["email"] = in["ref_email"];
|
|
x["email"].set_valid(true);
|
|
x["lastname"] = in["ref_lastname"];
|
|
x["lastname"].set_valid(true);
|
|
|
|
int r1, r2, r3;
|
|
char refer_link[100];
|
|
srand(time(NULL));
|
|
r1 = abs(rand()*100000000);
|
|
srand(time(NULL));
|
|
r2 = abs(rand() * r1);
|
|
srand(time(NULL));
|
|
r3 = abs(rand() * r2);
|
|
sprintf(refer_link, "WRENREF-%09lu-%08lu-%08lu", r1, r2, r3);
|
|
x["refer_link"] = refer_link;
|
|
x["refer_link"].set_valid(true);
|
|
long refer_id = 0;
|
|
refer_id = insert_db_record(DBS_VALID, "members_refer_friend", "members_refer_friend_id_seq", x);
|
|
|
|
if (refer_id > 0) {
|
|
const PGresult *res4 = pgsql_query("UPDATE members_refer_friend SET sent=now() WHERE id=%lu", refer_id);
|
|
in["refer_id"] = refer_id;
|
|
in["refer_id"].set_valid(true);
|
|
account_email(ACCOUNT_SEND_REFEREMAIL, in, out); // ALERT REFER EMAIL
|
|
out["status"] = "Refer message sent";
|
|
ret = PHP_API_OK;
|
|
}
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid Parameters";
|
|
}
|
|
logfmt(logINFO, "/long WrenchSendRefer(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
/**************************************************************************************************************************/
|
|
long account_session_check(CVars in, CVars out) {
|
|
logfmt(logINFO, "long account_session_check(CVars in, CVars out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
|
|
if (load_db_record(out, "SELECT uid FROM members_session WHERE sessionid='%s'", in["sessionid"].c_str()) > 0) {
|
|
if (SessionCheck(out["uid"].Long(), in["sessionid"].c_str(), 0) > 0) {
|
|
out["status"] = "Session valid";
|
|
ret = PHP_API_OK;
|
|
}
|
|
}
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Invalid session ID";
|
|
}
|
|
logfmt(logINFO, "/long account_session_check(CVars in, CVars out)");
|
|
return ret;
|
|
}
|
|
|
|
/**************************************************************************************************************************/
|
|
long VerifySession(CVars in, CVars &out) {
|
|
long ret = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "long SessionCheck(long uid, const char *sessionid, int create )");
|
|
try {
|
|
REQ_STRING(in, "sessionid", 4, 140, "(.*)");
|
|
long member_id = REQ_LONG(in, "member_id", 1, -1);
|
|
|
|
long session_expire_minutes = 15;
|
|
|
|
if (load_db_record(out, "SELECT s.* FROM members_session s LEFT JOIN members m ON m.id=s.member_id WHERE s.member_id=%lu AND s.updated > (now() - interval '%lu minutes') AND s.session='%s'", member_id, session_expire_minutes, in["sessionid"].c_str()) > 0) {
|
|
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", member_id, in["sessionid"].c_str());
|
|
ret = PHP_API_OK;
|
|
} else {
|
|
// Clean old sessions
|
|
pgsql_exec("DELETE FROM members_session WHERE member_id=%lu AND session='%s'", member_id, in["sessionid"].c_str());
|
|
ret = PHP_API_BAD_PARAM;
|
|
}
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
ret = PHP_API_BAD_PARAM;
|
|
}
|
|
|
|
logfmt(logINFO, "/long SessionCheck(CVars in, CVars &out )");
|
|
return ret; // No route
|
|
}
|
|
|
|
/**************************************************************************************************************************/
|
|
long SessionCheck(long uid, const char *sessionid, int create) {
|
|
logfmt(logINFO, "long SessionCheck(long uid, const char *sessionid, int create )");
|
|
// Sanity check
|
|
if (uid < 1 || sessionid == NULL || strlen(sessionid) < 4) {
|
|
return -1L; // Invalif parameters
|
|
}
|
|
|
|
long session_expire_minutes = 15;
|
|
|
|
// Clean old sessions
|
|
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '%lu minutes')", uid, session_expire_minutes);
|
|
// Update/check existing session
|
|
if (create == 0) {
|
|
// do we still have this session
|
|
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session='%s'", uid, sessionid);
|
|
if (res == NULL && pgsql_num_rows(res) == 0) {
|
|
return -2L; // Active sessions found Already deleted
|
|
}
|
|
|
|
//Udate the session if you get here
|
|
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
|
|
return 1L; // Session updated
|
|
}
|
|
|
|
|
|
|
|
if (create > 0) {
|
|
// Check session i?
|
|
|
|
|
|
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session<>'%s'", uid, sessionid);
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
return -2L; // Active sessions found
|
|
}
|
|
CVars sess; // Do we have the same session already?
|
|
if (load_db_record(sess, "SELECT * FROM members_session WHERE member_id=%lu AND session='%s'", uid, sessionid) > 0) {
|
|
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
|
|
return sess["id"].Long();
|
|
}
|
|
// Create a new session
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
sess["loc"] = loc;
|
|
sess["loc"].set_valid(true);
|
|
sess["member_id"] = uid;
|
|
sess["member_id"].set_valid(true);
|
|
sess["session"] = sessionid;
|
|
sess["session"].set_valid(true);
|
|
long sid = insert_db_record(DBS_VALID, "members_session", "members_session_id_seq", sess); //members_session_id_seq
|
|
if (sid > 0) {
|
|
return sid; // New session created
|
|
}
|
|
return -3L; // Failed to create new session
|
|
}
|
|
logfmt(logINFO, "/long SessionCheck(long uid, const char *sessionid, int create )");
|
|
return 0L; // No route
|
|
}
|
|
|
|
/*
|
|
CREATE TABLE mobile_login (
|
|
id SERIAL,
|
|
member_id INT REFERENCES members(id) UNIQUE NOT NULL,
|
|
added timestamp without time zone DEFAULT now(),
|
|
updated timestamp without time zone DEFAULT now()
|
|
);
|
|
ALTER TABLE ONLY mobile_login
|
|
ADD CONSTRAINT mobile_login_id_key UNIQUE (id);
|
|
*/
|
|
long LoginLogger( long member_id, long login_mode){
|
|
CVars sess;
|
|
long ret = 0;
|
|
try {
|
|
switch( login_mode ){
|
|
case MOBILE_LOGIN:
|
|
if (load_db_record(sess, "SELECT * FROM mobile_login WHERE member_id=%lu", member_id) > 0) {
|
|
pgsql_exec("UPDATE mobile_login SET updated=NOW() WHERE member_id=%ld", member_id);
|
|
}else{
|
|
sess["member_id"] = member_id;
|
|
sess["member_id"].set_valid(true);
|
|
insert_db_record(DBS_VALID, "mobile_login", "mobile_login_id_seq", sess); //members_session_id_seq
|
|
}
|
|
break;
|
|
}
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
ret = PHP_API_BAD_PARAM;
|
|
}
|
|
return ret;
|
|
}
|
|
/*
|
|
#define WEBSITE_LOGIN 1100
|
|
#define MOBILE_LOGIN 1101
|
|
#define FACEBOOK_LOGIN 1102
|
|
#define APPLE_LOGIN 1103
|
|
#define GOOGLE_LOGIN 1104
|
|
#define LOGIN_MODE_GENERAL 1100
|
|
#define LOGIN_MODE_FAMILY 1105
|
|
*/
|
|
long LoginWrenchBoardFamilyLogin(CVars in, CVars &out);
|
|
long WrenchBoardCreateFamilyAcc(CVars in, CVars &out);
|
|
|
|
long WrenchBoardCreateFamilyAcc(CVars in, CVars &out){
|
|
|
|
return 0;
|
|
}
|
|
long LoginWrenchBoardFamilyLogin(CVars in, CVars &out){
|
|
long ret = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "********~~~~~~~~ ------LoginWrenchBoardFamilyLogin()");
|
|
|
|
try {
|
|
REQ_STRING(in, "username", 5, 49, "(.*)");
|
|
REQ_STRING(in, "pin", 4, 10, "(.*)");
|
|
const PGresult *res = pgsql_query(" SELECT id AS family_id,* FROM members_family "
|
|
" WHERE username='%s' AND pin='%s' ", in["username"].c_str(),in["pin"].c_str());
|
|
if (res != NULL && pgsql_num_rows(res) > 0) {
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, 0);
|
|
CVars rec;
|
|
map_to_cvars(f, rec);
|
|
if( rec["family_member_id"]==""){
|
|
logfmt(logINFO, "LoginWrenchBoardFamilyLogin()- Need to Construct Account Now------->");
|
|
WrenchBoardCreateFamilyAcc(rec,out);
|
|
}
|
|
out = rec;
|
|
ret = PHP_LOGIN_OK;
|
|
}
|
|
out["status"] = "OK";
|
|
} catch (bad_parameter) {
|
|
logfmt(logINFO, "ERROR CALL long WrenchFamilyUpdate(CVars in, CVars &out)");
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
long LoginWrenchBoardAccount(CVars in, CVars &out) {
|
|
long ret = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "LoginWrenchBoardAccount()");
|
|
long login_mode = REQ_LONG(in, "login_mode", 1, -1);
|
|
if( login_mode == LOGIN_MODE_FAMILY){
|
|
return LoginWrenchBoardFamilyLogin(in, out);
|
|
}
|
|
|
|
REQ_STRING(in, "username", 5, 49, "(.*)");
|
|
REQ_STRING(in, "password", 5, 49, "(.*)");
|
|
REQ_STRING(in, "sessionid", 4, 140, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
// $in["login_mode"] = MOBILE_LOGIN;
|
|
// long login_mode = REQ_LONG(in, "login_mode", 0, -1);
|
|
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
in["loc"] = loc;
|
|
in["loc"].set_valid(true);
|
|
|
|
load_db_record(in, "SELECT upper(md5(now()::text))||''|| upper(md5(now()::date::text)) AS sessionid");
|
|
ret = load_db_record(out, "SELECT *,id AS member_id , to_char(last_login, 'Day Mon dd, yyyy HH:MI AM') AS last_login2 FROM members WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str());
|
|
if (ret) {
|
|
CVars vw;
|
|
vw["currency"] = "NAIRA"; // this might become a variable based on the country
|
|
vw["currency"].set_valid( true );
|
|
long wallet_id = CheckWallet(out["member_id"].Long(),vw);
|
|
|
|
load_db_record( out, "SELECT amount AS balance FROM members_wallet WHERE member_id = %lu AND currency='%s' ", out["member_id"].Long(), vw["currency"].c_str());
|
|
|
|
|
|
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld ", out["member_id"].Long());
|
|
// remove all existing session
|
|
|
|
if (SessionCheck(out["id"].Long(), in["sessionid"].c_str(), 1) > 0) {
|
|
out["stauts"] = "OK";
|
|
/*LOAD THE SESSION INTO OUT now */
|
|
load_db_record(out, "SELECT session FROM members_session WHERE member_id=%lu ORDER BY id DESC LIMIT 1", out["member_id"].Long());
|
|
//===============================================================================================================================
|
|
pgsql_query("UPDATE members SET last_login = now() , loc='%s' WHERE id = %lu",loc, out["member_id"].Long());
|
|
account_email(ACCOUNT_LOGIN_ALERT, out, out); // ALERT CUSTOMER OF LOGIN
|
|
ret = PHP_LOGIN_OK;
|
|
LoginLogger(out["member_id"].Long(),login_mode);
|
|
} else {
|
|
out["status"] = "Session check failed";
|
|
}
|
|
} else {
|
|
out["status"] = "Invalid username and/or password";
|
|
}
|
|
|
|
|
|
logfmt(logINFO, "/LoginWrenchBoardAccount()");
|
|
return ret;
|
|
}
|
|
|
|
long LoginWrenchBoardFacebook(CVars in, CVars &out) {
|
|
long res = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "LoginWrenchBoardFacebook()");
|
|
REQ_STRING(in, "fb_id", 5, 49, "(.*)");
|
|
in["external_idp_provider_id"] = in["fb_id"].Long();
|
|
in["external_idp_provider"] = 1L; // Facebook
|
|
in["fb_id"].set_valid(false);
|
|
REQ_STRING(in, "email", 6, 49, "(.*)");
|
|
OPTIONAL(in, "firstname") REQ_STRING(in, "firstname", 1, 49, "(.*)");
|
|
else in["firstname"] = "";
|
|
OPTIONAL(in, "lastname") REQ_STRING(in, "lastname", 1, 49, "(.*)");
|
|
else in["lastname"] = "";
|
|
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
res = LoginWrenchBoardExternal(in, out);
|
|
logfmt(logINFO, "/LoginWrenchBoardFacebook()");
|
|
return res;
|
|
}
|
|
|
|
long LoginWrenchBoardGoogle(CVars in, CVars &out) {
|
|
long res = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "LoginWrenchBoardGoogle()");
|
|
REQ_STRING(in, "google_id", 5, 49, "(.*)");
|
|
in["external_idp_provider_id"] = in["google_id"].Long();
|
|
in["external_idp_provider"] = 2L; // Google
|
|
in["google_id"].set_valid(false);
|
|
REQ_STRING(in, "email", 6, 49, "(.*)");
|
|
OPTIONAL(in, "firstname") REQ_STRING(in, "firstname", 1, 49, "(.*)");
|
|
else in["firstname"] = "";
|
|
OPTIONAL(in, "lastname") REQ_STRING(in, "lastname", 1, 49, "(.*)");
|
|
else in["lastname"] = "";
|
|
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
res = LoginWrenchBoardExternal(in, out);
|
|
logfmt(logINFO, "/LoginWrenchBoardGoogle()");
|
|
return res;
|
|
}
|
|
|
|
long LoginWrenchBoardApple(CVars in, CVars &out) {
|
|
long res = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "LoginWrenchBoardApple()");
|
|
REQ_STRING(in, "apple_id", 5, 49, "(.*)");
|
|
in["external_idp_provider_id"] = in["apple_id"];
|
|
in["external_idp_provider"] = 3L; // Apple
|
|
in["apple_id"].set_valid(false);
|
|
REQ_STRING(in, "email", 6, 49, "(.*)");
|
|
OPTIONAL(in, "firstname") REQ_STRING(in, "firstname", 1, 49, "(.*)");
|
|
else in["firstname"] = "";
|
|
OPTIONAL(in, "lastname") REQ_STRING(in, "lastname", 1, 49, "(.*)");
|
|
else in["lastname"] = "";
|
|
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
res = LoginWrenchBoardExternal(in, out);
|
|
logfmt(logINFO, "/LoginWrenchBoardApple()");
|
|
return res;
|
|
}
|
|
|
|
long LoginWrenchBoardExternal(CVars in, CVars &out) {
|
|
long res = PHP_API_BAD_PARAM;
|
|
logfmt(logINFO, "LoginWrenchBoardExternal()");
|
|
const char * loc = getenv("REMOTE_ADDR");
|
|
in["loc"] = loc;
|
|
in["loc"].set_valid(true);
|
|
|
|
long ret = load_db_record(out, "SELECT * FROM members WHERE LOWER(email)=LOWER('%s') AND password IS NOT NULL", in["email"].c_str());
|
|
if (ret > 0) {
|
|
out["status"] = "Email is already registered";
|
|
} else {
|
|
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE LOWER(email)=LOWER('%s') AND external_idp_provider_id='%s' AND external_idp_provider=%ld", in["email"].c_str(), in["external_idp_provider_id"].c_str(), in["external_idp_provider"].Long());
|
|
if (ret > 0) {
|
|
logfmt(logINFO, "External account already exists");
|
|
} else {
|
|
logfmt(logINFO, "Create new FB account");
|
|
CVars xx;
|
|
xx["username"] = in["email"];
|
|
xx["username"].set_valid(true);
|
|
xx["firstname"] = in["firstname"];
|
|
xx["firstname"].set_valid(true);
|
|
xx["lastname"] = in["lastname"];
|
|
xx["lastname"].set_valid(true);
|
|
xx["email"] = in["email"];
|
|
xx["email"].set_valid(true);
|
|
xx["loc"] = in["loc"];
|
|
xx["loc"].set_valid(true);
|
|
xx["external_idp_provider"] = in["external_idp_provider"];
|
|
xx["external_idp_provider"].set_valid(true);
|
|
xx["external_idp_provider_id"] = in["external_idp_provider_id"];
|
|
xx["external_idp_provider_id"].set_valid(true);
|
|
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", xx);
|
|
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE id='%ld'", out["member_id"].Long());
|
|
}
|
|
if (out["member_id"].Long() > 0) {
|
|
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld ", out["member_id"].Long());
|
|
// remove all existing session
|
|
if (SessionCheck(out["id"].Long(), in["sessionid"].c_str(), 1) > 0) {
|
|
out["stauts"] = "OK";
|
|
pgsql_query("UPDATE members SET last_login = now() WHERE id = %lu", out["member_id"].Long());
|
|
/*LOAD THE SESSION INTO OUT now */
|
|
load_db_record(out, "SELECT session FROM members_session WHERE member_id=%lu ORDER BY id DESC LIMIT 1", out["member_id"].Long());
|
|
//===============================================================================================================================
|
|
account_email(ACCOUNT_LOGIN_ALERT, out, out); // ALERT CUSTOMER OF LOGIN
|
|
res = PHP_LOGIN_OK;
|
|
} else {
|
|
out["status"] = "Session check failed";
|
|
}
|
|
}
|
|
}
|
|
logfmt(logINFO, "/LoginWrenchBoardExternal()");
|
|
return res;
|
|
}
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
long AddMobileTopuNumber(CVars in, CVars &out) {
|
|
long ret = -1;
|
|
long pin = REQ_LONG(in, "pin", 1, -1);
|
|
long customer_id = REQ_LONG(in, "customer_id", 1, -1);
|
|
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
|
|
REQ_STRING(in, "seller_number", 10, 11, "(.*)");
|
|
|
|
CVars x;
|
|
x["pin"] = in["pin"];
|
|
x["pin"].set_valid(true);
|
|
x["customer_id"] = in["customer_id"];
|
|
x["customer_id"].set_valid(true);
|
|
x["loc"] = in["loc"];
|
|
x["loc"].set_valid(true);
|
|
x["seller_number"] = in["seller_number"];
|
|
x["seller_number"].set_valid(true);
|
|
|
|
ret = insert_db_record(DBS_VALID, "mobile_sales_auth", "mobile_sales_auth_id_seq", x);
|
|
|
|
out["status"] = ret;
|
|
out["auth_id"] = ret;
|
|
|
|
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
long InitiateAddCustomerBalance(CVars in, CVars &out) {
|
|
logfmt(logINFO, "AddCustomerBalance()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
// REQ_LONG( in, "whattodo", 1, -1 );
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/AddCustomerBalance()");
|
|
return ret;
|
|
}
|
|
|
|
long CompleteAddCustomerBalance(CVars in, CVars &out) {
|
|
logfmt(logINFO, "AddCustomerBalance()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
// REQ_LONG( in, "whattodo", 1, -1 );
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/AddCustomerBalance()");
|
|
return ret;
|
|
}
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
long VerifyEmailWrenchBoardAccount(CVars in, CVars &out) {
|
|
logfmt(logINFO, "VerifyEmailWrenchBoardAccount()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
long account_id = REQ_LONG(in, "account_id", 1, -1);
|
|
// ret = load_db_record( out, "SELECT * FROM members WHERE id = %lu", account_id );
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/VerifyEmailWrenchBoardAccount()");
|
|
return ret;
|
|
}
|
|
//******************************************************************************
|
|
|
|
long VerifyPhoneWrenchBoardAccount(CVars in, CVars &out) {
|
|
logfmt(logINFO, "VerifyPhoneWrenchBoardAccount()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
// REQ_LONG( in, "whattodo", 1, -1 );
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/VerifyPhoneWrenchBoardAccount()");
|
|
return ret;
|
|
}
|
|
//******************************************************************************
|
|
|
|
long EditProfileWrenchBoardAccount(CVars in, CVars &out) {
|
|
logfmt(logINFO, "EditProfileWrenchBoardAccount()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
long account_id = REQ_LONG(in, "account_id", 1, -1);
|
|
REQ_STRING(in, "State", 2, 20, "(.*)");
|
|
REQ_STRING(in, "Zipcode", 3, 15, "(.*)");
|
|
REQ_STRING(in, "Country", 2, 5, "(.*)");
|
|
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/EditProfileWrenchBoardAccount()");
|
|
return ret;
|
|
}
|
|
//******************************************************************************
|
|
|
|
long LoadProfileWrenchBoardAccount(CVars in, CVars &out) {
|
|
logfmt(logINFO, "LoadProfileWrenchBoardAccount()");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
long account_id = REQ_LONG(in, "account_id", 1, -1);
|
|
const PGresult* res = pgsql_query("SELECT * FROM members WHERE id = %lu", account_id);
|
|
if (res && pgsql_num_rows(res) > 0) {
|
|
}
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "ERROR";
|
|
}
|
|
|
|
logfmt(logINFO, "/LoadProfileWrenchBoardAccount()");
|
|
return ret;
|
|
}
|
|
//******************************************************************************
|
|
//*****************************************************************************/
|
|
|
|
long ETSL_configure(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long ETSL_configure(CVars in, CVars &out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
|
|
out["etisalat_endpoint"] = "http://etisalat.service.chiefsoft.com/etisalat_payquic.php";
|
|
|
|
|
|
ret = PHP_API_OK;
|
|
|
|
} catch (bad_parameter) {
|
|
|
|
out["status"] = "Bad parameter";
|
|
|
|
} catch (...) {
|
|
|
|
out["status"] = "Unhandled exception in INTW_configure";
|
|
|
|
}
|
|
logfmt(logINFO, "/long ETSL_configure(CVars in, CVars &out)");
|
|
return ret;
|
|
}
|
|
|
|
long DeliverMobilseEtisalat(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long INTW_sendBillPaymentAdvice(CVars in, CVars &out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
try {
|
|
int customerId = REQ_LONG(in, "customerid", 1, -1);
|
|
int paymentItemId = REQ_LONG(in, "paymentitemid", 1, -1);
|
|
int amount = REQ_LONG(in, "amount", 0, -1);
|
|
|
|
REQ_STRING(in, "customermobile", 5, 15, "(.*)");
|
|
OPTIONAL(in, "customeremail") REQ_STRING(in, "customeremail", 1, 100, "(.*)");
|
|
OPTIONAL(in, "order_id") REQ_STRING(in, "order_id", 1, 25, "(.*)");
|
|
char CustomerMobile[15];
|
|
char CustomerEmail[100];
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(CustomerEmail, "%s", in["customeremail"].c_str());
|
|
sprintf(CustomerMobile, "%s", in["customermobile"].c_str());
|
|
|
|
|
|
//topalert = "sales@payquic.com";
|
|
out["topalert"] = CfgReadChar("transnotif.topalert");
|
|
sprintf(CustomerEmail, "%s", out["topalert"].c_str());
|
|
|
|
|
|
CVars customer; // Load customer
|
|
ret = load_db_record(customer, "SELECT email,firstname,lastname FROM customer WHERE status=1 AND id = %lu", customerId);
|
|
if (ret < 1L) {
|
|
throw new bad_parameter(out, "customerid");
|
|
}
|
|
|
|
CVars paymentitem; // Load payment item
|
|
ret = load_db_record(paymentitem, "SELECT id,billerid,billername,name,amount,paymentcode FROM interswitch_biller_payment_items WHERE gid = %lu", paymentItemId);
|
|
if (ret < 1L) {
|
|
out["advice"] = "PaymentID not found or not valid !!!";
|
|
throw new bad_parameter(out, "paymentitemid");
|
|
}
|
|
|
|
// Check amount
|
|
if (amount < 1L) {
|
|
amount = paymentitem["amount"].Long();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Create record
|
|
CVars advice;
|
|
|
|
advice["customerid"] = customerId;
|
|
advice["customerid"].set_valid(true);
|
|
advice["billerid"] = paymentitem["billerid"];
|
|
advice["billerid"].set_valid(true);
|
|
advice["billerpaymentitemgid"] = paymentItemId;
|
|
advice["billerpaymentitemgid"].set_valid(true);
|
|
advice["amount"] = amount;
|
|
advice["amount"].set_valid(true);
|
|
advice["paymentcode"] = paymentitem["paymentcode"];
|
|
advice["paymentcode"].set_valid(true);
|
|
advice["order_id"] = in["order_id"];
|
|
advice["order_id"].set_valid(true);
|
|
advice["customeremail"] = in["customeremail"];
|
|
advice["customeremail"].set_valid(true);
|
|
advice["customermobile"] = in["customermobile"];
|
|
advice["customermobile"].set_valid(true);
|
|
|
|
out["bill_payment_advice_id"] = insert_db_record(DBS_VALID, "interswitch_bill_payment_advice", "interswitch_bill_payment_advice_id_seq", advice);
|
|
if (out["bill_payment_advice_id"].Long() < 1L) {
|
|
//throw new runtime_error("Failed to create interswitch bill payment advice record");
|
|
return PHP_API_BAD_PARAM;
|
|
}
|
|
|
|
// Initiate interswitch session
|
|
CVars setup;
|
|
ETSL_configure(in, setup);
|
|
|
|
|
|
|
|
CVars transaction;
|
|
|
|
|
|
|
|
transaction["detail_id"] = out["bill_payment_advice_id"];
|
|
transaction["detail_id"].set_valid(true);
|
|
transaction["type"] = 1L;
|
|
/* SendBillPaymentAdvice */ transaction["type"].set_valid(true);
|
|
out["transaction_id"] = insert_db_record(DBS_VALID, "interswitch_transaction", "interswitch_transaction_id_seq", transaction);
|
|
if (out["transaction_id"].Long() < 1L) {
|
|
// throw new runtime_error("Failed to create interswitch transaction record");
|
|
return PHP_API_BAD_PARAM;
|
|
}
|
|
|
|
|
|
char uniqueRef[20];
|
|
memset(uniqueRef, 0, 20);
|
|
// TransferCode - RequestReference - UniqueRef => request prefix for terminal owner + ID
|
|
sprintf(uniqueRef, "ETSL%08lu", out["transaction_id"].Long());
|
|
//sprintf( uniqueRef, "%s%09s", setup["interswitch_pfix"].c_str(), out["transaction_id"].c_str() );
|
|
transaction["transfer_code"] = uniqueRef;
|
|
transaction["transfer_code"].set_valid(true);
|
|
|
|
CVars cxc;
|
|
cxc["transfer_code"] = transaction["transfer_code"];
|
|
cxc["transfer_code"].set_valid(true);
|
|
update_db_record(DBS_VALID, "interswitch_transaction", cxc, out["transaction_id"].Long());
|
|
logfmt(logINFO, "Here -> 1");
|
|
logfmt(logINFO, "SENDING TRANSACTION - setup[interswitch_tid].c_str() ->%s", setup["interswitch_tid"].c_str());
|
|
// Prepare call
|
|
const int statusSize = 1024;
|
|
char status[statusSize];
|
|
char transactionRef[statusSize];
|
|
memset(status, 0, statusSize); // Clear?
|
|
memset(transactionRef, 0, statusSize); // Clear?
|
|
|
|
char xtid[12];
|
|
|
|
sprintf(xtid, "%s", setup["interswitch_tid"].c_str());
|
|
|
|
logfmt(logINFO, "SENDING PAQUIC ETISALAT TRANSACTION->%s", xtid);
|
|
out["ResponseCode"] = "99999";
|
|
long ret1 = GateDeliverMobilseEtisalat(in, out);
|
|
|
|
if (out["statusCode"].Long() == 0 && out["errorCode"].Long() == 0) {
|
|
ret = 90000L;
|
|
//'message' => '<?xml version="1.0" encoding="utf-8"?><result><statusCode>0</statusCode><errorCode>0</errorCode><errorDescription>Successful Transaction 0305055755074473</errorDescription><instanceId>0305055755074473</instanceId></result>'
|
|
|
|
try {
|
|
CVars txt;
|
|
txt["responsecode"] = "90000";
|
|
txt["responsecode"].set_valid(true);
|
|
txt["transactionref"] = out["errorDescription"];
|
|
txt["transactionref"].set_valid(true);
|
|
update_db_record(DBS_VALID, "interswitch_transaction", txt, out["transaction_id"].Long());
|
|
} catch (...) {
|
|
out["status"] = "I see no good response from interswitch";
|
|
}
|
|
|
|
CVars fr0;
|
|
fr0["status"] = "5";
|
|
fr0["status"].set_valid(true);
|
|
update_db_record(DBS_VALID, "interswitch_bill_payment_advice", fr0, out["bill_payment_advice_id"].Long());
|
|
|
|
} else {
|
|
|
|
try {
|
|
CVars txt0;
|
|
txt0["responsecode"] = "99999";
|
|
txt0["responsecode"].set_valid(true);
|
|
txt0["transactionref"] = out["errorDescription"];
|
|
txt0["transactionref"].set_valid(true);
|
|
update_db_record(DBS_VALID, "interswitch_transaction", txt0, out["transaction_id"].Long());
|
|
} catch (...) {
|
|
out["status"] = "I see no good response from interswitch";
|
|
}
|
|
|
|
CVars fr1;
|
|
fr1["status"] = "7";
|
|
fr1["status"].set_valid(true);
|
|
update_db_record(DBS_VALID, "interswitch_bill_payment_advice", fr1, out["bill_payment_advice_id"].Long());
|
|
}
|
|
|
|
out["statusCode"].set_valid(true);
|
|
|
|
|
|
} catch (bad_parameter) {
|
|
out["status"] = "Incorrect parameter";
|
|
ret = PHP_API_BAD_PARAM;
|
|
} catch (...) {
|
|
out["status"] = "Unhandled exception in INTW_sendBillPaymentAdvice";
|
|
}
|
|
logfmt(logINFO, "/long INTW_sendBillPaymentAdvice(CVars in, CVars &out)");
|
|
return ret;
|
|
|
|
|
|
|
|
}
|
|
|
|
long GateDeliverMobilseEtisalat(CVars in, CVars &out) {
|
|
logfmt(logINFO, "long DeliverMobilseEtisalat(CVars in, CVars &out)");
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
CURL *curl;
|
|
CURLcode res;
|
|
|
|
struct MemoryStruct chunk;
|
|
|
|
chunk.memory = (char*) malloc(1); /* will be grown as needed by the realloc above */
|
|
chunk.size = 0; /* no data at this point */
|
|
|
|
curl_global_init(CURL_GLOBAL_ALL);
|
|
|
|
/* get a curl handle */
|
|
curl = curl_easy_init();
|
|
|
|
if (curl) {
|
|
// Prepare data
|
|
string data = "";
|
|
CVars::iterator i;
|
|
int j = 0; // Will limit to 200 variables
|
|
for (i = in.begin(); i != in.end() && j < 200; i++) {
|
|
logfmt(logINFO, "IN: %s=%s", i->first.c_str(), i->second.c_str());
|
|
if (j > 0) {
|
|
data += "&";
|
|
}
|
|
data += i->first.c_str();
|
|
data += "=";
|
|
data += i->second.c_str();
|
|
j++;
|
|
}
|
|
logfmt(logINFO, "DATA: %s", data.c_str());
|
|
curl_easy_setopt(curl, CURLOPT_URL, "http://etisalat.service.chiefsoft.com/etisalat_payquic.php");
|
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
|
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) &chunk);
|
|
res = curl_easy_perform(curl);
|
|
if (res != CURLE_OK) {
|
|
// Error
|
|
out["status"] = curl_easy_strerror(res);
|
|
logfmt(logINFO, "ERROR: %s", out["status"].c_str());
|
|
ret = PHP_API_BAD_PARAM;
|
|
} else {
|
|
logfmt(logINFO, "%lu bytes retrieved\n", (long) chunk.size);
|
|
data = (const char *) chunk.memory;
|
|
istringstream buffer(data);
|
|
string temp, key, val;
|
|
size_t found;
|
|
while (std::getline(buffer, temp)) {
|
|
logfmt(logINFO, "line: %s", temp.c_str());
|
|
found = temp.find_first_of("=");
|
|
key = temp.substr(0, found);
|
|
val = temp.substr(found + 1);
|
|
out[key] = base64_decode(val);
|
|
logfmt(logINFO, "'%s' => '%s'", key.c_str(), out[key].c_str());
|
|
}
|
|
ret = PHP_API_OK;
|
|
}
|
|
curl_easy_cleanup(curl);
|
|
|
|
if (chunk.memory) {
|
|
free(chunk.memory);
|
|
}
|
|
}
|
|
curl_global_cleanup();
|
|
logfmt(logINFO, "/long DeliverMobilseEtisalat(CVars in, CVars &out)");
|
|
return ret;
|
|
}
|
|
|
|
/*
|
|
void TeleSignAddJob(const char *CustomerId, const char *AutheticationId, const char *CountryCode, const char *PhoneNumber, const char *PIN) {
|
|
// I make sure that headerlist is erased before rebuilding it with the soap function
|
|
curl_slist_free_all(headerlist);
|
|
headerlist = curl_slist_append(headerlist, "Host: www.telesign.com");
|
|
headerlist = curl_slist_append(headerlist, "Content-Type: text/xml");
|
|
headerlist = curl_slist_append(headerlist, "SOAPAction: \"https://www.telesign.com/api/RequestCALL\"");
|
|
sprintf(TeleSignSoapReq, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\
|
|
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \
|
|
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\
|
|
<soap:Body>\
|
|
<RequestCALL xmlns=\"https://www.telesign.com/api/\">\
|
|
<CustomerID>%s</CustomerID>\
|
|
<AuthenticationID>%s</AuthenticationID>\
|
|
<CountryCode>%s</CountryCode>\
|
|
<PhoneNumber>%s</PhoneNumber>\
|
|
<VerificationCode>%s</VerificationCode>\
|
|
<RedialCount>1</RedialCount>\
|
|
</RequestCALL>\
|
|
</soap:Body>\
|
|
</soap:Envelope>", CustomerId, AutheticationId, CountryCode, PhoneNumber, PIN);
|
|
//FILE_LOG(logINFO) << TeleSignSoapReq;
|
|
curl_easy_setopt(ch, CURLOPT_POSTFIELDS, TeleSignSoapReq);
|
|
curl_easy_setopt(ch, CURLOPT_HTTPHEADER, headerlist);
|
|
curl_easy_perform(ch);
|
|
}
|
|
*/
|
|
/*
|
|
* vi:ts=2
|
|
*/
|