This commit is contained in:
2020-02-05 07:15:32 -05:00
parent 5d9da78cf6
commit 67159b0132
3 changed files with 382 additions and 402 deletions
+36 -15
View File
@@ -142,27 +142,27 @@ long SessionCheck(long uid, const char *sessionid, int create) {
return -1L; // Invalif parameters return -1L; // Invalif parameters
} }
// Clean old sessions // Clean old sessions
pgsql_exec("DELETE FROM members_session WHERE uid=%ld AND updated < (now() - interval '15 minutes')", uid); pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '15 minutes')", uid);
// Update/check existing session // Update/check existing session
if (create == 0 && pgsql_exec("UPDATE members_session SET updated=NOW() WHERE uid=%ld AND sessionid='%s'", uid, sessionid) > 0) { if (create == 0 && pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid) > 0) {
return 1L; // Session updated return 1L; // Session updated
} }
if (create > 0) { if (create > 0) {
// Check session i? // Check session i?
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE uid=%ld AND sessionid<>'%s'", uid, sessionid); 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) { if (res != NULL && pgsql_num_rows(res) > 0) {
return -2L; // Active sessions found return -2L; // Active sessions found
} }
CVars sess; // Do we have the same session already? CVars sess; // Do we have the same session already?
if (load_db_record(sess, "SELECT * FROM members_session WHERE uid=%lu AND sessionid='%s'", uid, sessionid) > 0) { 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 uid=%ld AND sessionid='%s'", uid, sessionid); pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
return sess["id"].Long(); return sess["id"].Long();
} }
// Create a new session // Create a new session
sess["uid"] = uid; sess["member_id"] = uid;
sess["uid"].set_valid(true); sess["member_id"].set_valid(true);
sess["sessionid"] = sessionid; sess["session"] = sessionid;
sess["sessionid"].set_valid(true); sess["session"].set_valid(true);
long sid = insert_db_record(DBS_VALID, "members_session", "members_session_id_seq", sess); long sid = insert_db_record(DBS_VALID, "members_session", "members_session_id_seq", sess);
if (sid > 0) { if (sid > 0) {
return sid; // New session created return sid; // New session created
@@ -181,9 +181,11 @@ long LoginCoreGradeAccount(CVars in, CVars &out) {
REQ_STRING(in, "sessionid", 4, 40, "(.*)"); REQ_STRING(in, "sessionid", 4, 40, "(.*)");
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str());
ret = load_db_record(out, "SELECT UPPER( md5( now()::text ) ) AS sessionid, *,id AS member_id FROM members WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str());
if (ret) { if (ret) {
if (SessionCheck(out["id"].Long(), in["sessionid"].c_str(), 1) > 0) { if (SessionCheck(out["member_id"].Long(), out["sessionid"].c_str(), 1) > 0) {
out["stauts"] = "OK"; out["stauts"] = "OK";
ret = PHP_API_OK; ret = PHP_API_OK;
} else { } else {
@@ -218,6 +220,9 @@ added timestamp without time zone DEFAULT now(),
ALTER TABLE ONLY members_pending ALTER TABLE ONLY members_pending
ADD CONSTRAINT members_pending_id_key UNIQUE (id); ADD CONSTRAINT members_pending_id_key UNIQUE (id);
*/ */
REQ_STRING(in, "username", 5, 49, "(.*)"); REQ_STRING(in, "username", 5, 49, "(.*)");
REQ_STRING(in, "firstname", 2, 49, "(.*)"); REQ_STRING(in, "firstname", 2, 49, "(.*)");
REQ_STRING(in, "lastname", 2, 49, "(.*)"); REQ_STRING(in, "lastname", 2, 49, "(.*)");
@@ -225,6 +230,9 @@ ADD CONSTRAINT members_pending_id_key UNIQUE (id);
OPTIONAL(in, "phone") REQ_STRING(in, "phone", 3, 15, "(.*)"); OPTIONAL(in, "phone") REQ_STRING(in, "phone", 3, 15, "(.*)");
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
out["pending_id"] = "0";
out["status_message"] = "Pending";
int r1, r2, r3; int r1, r2, r3;
char verify_link[100]; char verify_link[100];
srand(time(NULL)); srand(time(NULL));
@@ -238,6 +246,15 @@ ADD CONSTRAINT members_pending_id_key UNIQUE (id);
const char *loc = getenv("REMOTE_ADDR"); const char *loc = getenv("REMOTE_ADDR");
const PGresult *res = pgsql_query("SELECT * FROM members WHERE LOWER(username) = LOWER('%s') ", in["username"].c_str());
if (res != NULL && pgsql_num_rows(res) > 0) {
out["status_message"] = "Unable to create account, try another username or reset password";
} else {
// dulpicate condition satisfied
CVars x; CVars x;
x["username"] = in["username"]; x["username"] = in["username"];
x["username"].set_valid(true); x["username"].set_valid(true);
@@ -256,13 +273,17 @@ ADD CONSTRAINT members_pending_id_key UNIQUE (id);
ret = insert_db_record(DBS_VALID, "members_pending", "members_pending_id_seq", x); ret = insert_db_record(DBS_VALID, "members_pending", "members_pending_id_seq", x);
if (ret > 0) { if (ret > 0) {
pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), ret); pgsql_query("UPDATE members_pending SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), ret);
out["pending_id"] = ret; out["pending_id"] = ret;
out["pending_id"].set_valid(true); out["pending_id"].set_valid(true);
x["pending_id"] = ret; x["pending_id"] = ret;
x["pending_id"].set_valid(true); x["pending_id"].set_valid(true);
AccountPendingMail(x); AccountPendingMail(x);
} }
}
return ret; return ret;
} }
@@ -292,7 +313,7 @@ long CreateCoreGradeAccount(CVars in, CVars &out) {
x["phone"].set_valid(true); x["phone"].set_valid(true);
x["loc"] = loc; x["loc"] = loc;
x["loc"].set_valid(true); x["loc"].set_valid(true);
x["password"] = out["password"];; x["password"] = out["password"];
x["password"].set_valid(true); x["password"].set_valid(true);
ret = insert_db_record(DBS_VALID, "members", "members_id_seq", x); ret = insert_db_record(DBS_VALID, "members", "members_id_seq", x);
@@ -303,9 +324,9 @@ long CreateCoreGradeAccount(CVars in, CVars &out) {
x["member_id"] = ret; x["member_id"] = ret;
x["member_id"].set_valid(true); x["member_id"].set_valid(true);
// pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["pass1"].c_str(), ret); // pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["pass1"].c_str(), ret);
pgsql_query("UPDATE members_pending SET status = 5 WHERE id = %lu", out["pending_id"].Long()); pgsql_query("UPDATE members_pending SET status = 5,verified=now() WHERE id = %lu", out["pending_id"].Long());
AccountPendingMail(x); // AccountPendingMail(x); welcome email
} }
+42 -57
View File
@@ -12,15 +12,11 @@
#include "cfg.h" #include "cfg.h"
#include <curl/curl.h> #include <curl/curl.h>
long groups_calls(CVars in, CVars &out) {
long groups_calls(CVars in, CVars &out)
{
logfmt(logINFO, "groups_calls()"); logfmt(logINFO, "groups_calls()");
out["result"] = "YES I GET TO BACK END"; out["result"] = "YES I GET TO BACK END";
long action = REQ_LONG(in, "action", 0, -1); long action = REQ_LONG(in, "action", 0, -1);
switch( action ) switch (action) {
{
case COREGRADE_GROUP_ACCEPTGROUP: case COREGRADE_GROUP_ACCEPTGROUP:
@@ -39,8 +35,7 @@ long groups_calls(CVars in, CVars &out)
return 0; return 0;
} }
long CreateCoreGradeGroup(CVars in, CVars &out) long CreateCoreGradeGroup(CVars in, CVars &out) {
{
long ret = PHP_API_BAD_PARAM; long ret = PHP_API_BAD_PARAM;
out = in; out = in;
@@ -51,26 +46,35 @@ long CreateCoreGradeGroup(CVars in, CVars &out)
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
CVars x; CVars x;
x["group_name"] = in["group_name"]; x["group_name"].set_valid( true ); x["group_name"] = in["group_name"];
x["description"] = in["description"]; x["description"].set_valid( true ); x["group_name"].set_valid(true);
x["invite"] = "1"; x["invite"].set_valid( true ); x["description"] = in["description"];
x["member_id"] = in["member_id"]; x["member_id"].set_valid( true ); x["description"].set_valid(true);
x["loc"] = in["loc"]; x["loc"].set_valid( true ); x["invite"] = "1";
x["invite"].set_valid(true);
x["member_id"] = in["member_id"];
x["member_id"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
ret = insert_db_record(DBS_VALID, "members_groups", "members_groups_id_seq", x); ret = insert_db_record(DBS_VALID, "members_groups", "members_groups_id_seq", x);
if ( ret > 0 ) if (ret > 0) {
{ if (in["contribute"].Long() > 0) {
if ( in["contribute"].Long() > 0 )
{
pgsql_exec("UPDATE members_groups SET contribute=NOW() WHERE id=%lu ", ret); pgsql_exec("UPDATE members_groups SET contribute=NOW() WHERE id=%lu ", ret);
} }
out["group_id"] = ret; out["group_id"].set_valid( true ); out["group_id"] = ret;
x["group_id"] = ret; x["group_id"].set_valid( true ); out["group_id"].set_valid(true);
x["group_id"] = ret;
x["group_id"].set_valid(true);
CVars y; CVars y;
y["member_id"] = in["member_id"]; y["member_id"].set_valid( true ); y["member_id"] = in["member_id"];
y["admin_status"] = in["member_id"]; y["admin_status"].set_valid( true ); y["member_id"].set_valid(true);
y["group_id"] = out["group_id"]; y["group_id"].set_valid( true ); y["admin_status"] = in["member_id"];
y["loc"] = in["loc"]; y["loc"].set_valid( true ); y["admin_status"].set_valid(true);
y["group_id"] = out["group_id"];
y["group_id"].set_valid(true);
y["loc"] = in["loc"];
y["loc"].set_valid(true);
//ALTER TABLE group_members ADD admin_status INT REFERENCES members(id); //ALTER TABLE group_members ADD admin_status INT REFERENCES members(id);
CoreGradeGroupCreateMember(y, out); CoreGradeGroupCreateMember(y, out);
CreateCoreGradeGroupMail(y); CreateCoreGradeGroupMail(y);
@@ -78,8 +82,7 @@ long CreateCoreGradeGroup(CVars in, CVars &out)
return ret; return ret;
} }
long CoreGradeGroupCreateMember(CVars in, CVars &out) long CoreGradeGroupCreateMember(CVars in, CVars &out) {
{
long ret = PHP_API_BAD_PARAM; long ret = PHP_API_BAD_PARAM;
out = in; out = in;
REQ_LONG(in, "member_id", 1, -1); REQ_LONG(in, "member_id", 1, -1);
@@ -87,44 +90,26 @@ long CoreGradeGroupCreateMember(CVars in, CVars &out)
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)"); OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
CVars x; CVars x;
x["group_id"] = in["group_id"]; x["group_id"].set_valid( true ); x["group_id"] = in["group_id"];
x["member_id"] = in["member_id"]; x["member_id"].set_valid( true ); x["group_id"].set_valid(true);
x["loc"] = in["loc"]; x["loc"].set_valid( true ); x["member_id"] = in["member_id"];
if (in["admin_status"].Long() > 0) x["member_id"].set_valid(true);
{ x["loc"] = in["loc"];
x["admin_status"] = in["admin_status"]; x["admin_status"].set_valid( true ); x["loc"].set_valid(true);
if (in["admin_status"].Long() > 0) {
x["admin_status"] = in["admin_status"];
x["admin_status"].set_valid(true);
} }
ret = insert_db_record(DBS_VALID, "group_members", "group_members_id_seq", x); ret = insert_db_record(DBS_VALID, "group_members", "group_members_id_seq", x);
if ( ret > 0 ) if (ret > 0) {
{ out["group_member_id"] = ret; out["group_member_id"].set_valid( true ); out["group_member_id"] = ret;
x["group_member_id"] = ret; x["group_member_id"].set_valid( true ); out["group_member_id"].set_valid(true);
x["group_member_id"] = ret;
x["group_member_id"].set_valid(true);
GroupCreateMemberMail(x); GroupCreateMemberMail(x);
pgsql_exec("UPDATE members_groups SET accepted = (SELECT count(*) FROM group_members WHERE group_id = %lu ) WHERE id=%lu", x["group_id"].Long(), x["group_id"].Long()); pgsql_exec("UPDATE members_groups SET accepted = (SELECT count(*) FROM group_members WHERE group_id = %lu ) WHERE id=%lu", x["group_id"].Long(), x["group_id"].Long());
} }
return ret; return ret;
} }
//****************************************************************************** //******************************************************************************
/*
CREATE TABLE group_members (
id SERIAL,
member_id INT REFERENCES members(id),
group_name VARCHAR(100) UNIQUE NOT NULL,
description VARCHAR(250),
added timestamp without time zone DEFAULT now(),
balance integer DEFAULT 0,
contribute timestamp without time zone,
alert integer DEFAULT 0,
status integer DEFAULT 1,
invite integer DEFAULT 0,
accepted integer DEFAULT 0,
rejected integer DEFAULT 0,
loc INET
);
ALTER TABLE ONLY members_groups
ADD CONSTRAINT members_groups_id_key UNIQUE (id);
*/
+71 -97
View File
@@ -16,46 +16,27 @@
#include "account.h" #include "account.h"
#include "storeface.h" #include "storeface.h"
long CreateBulkTopupBatch(CVars in, CVars &out) {
long CreateBulkTopupBatch(CVars in, CVars &out)
{
long ret = 0; long ret = 0;
REQ_STRING(in, "batch_name", 1, 50, "(.*)"); REQ_STRING(in, "batch_name", 1, 50, "(.*)");
REQ_LONG(in, "customer_id", 1, -1); REQ_LONG(in, "customer_id", 1, -1);
CVars cust; CVars cust;
cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); cust["customer_id"] = in["customer_id"];
cust["batch_name"] = in["batch_name"]; cust["batch_name"].set_valid(true); cust["customer_id"].set_valid(true);
cust["batch_name"] = in["batch_name"];
cust["batch_name"].set_valid(true);
out["bulk_id"] = insert_db_record(DBS_VALID, "bulktopup_batch", "bulktopup_batch_id_seq", cust); out["bulk_id"] = insert_db_record(DBS_VALID, "bulktopup_batch", "bulktopup_batch_id_seq", cust);
if (out["bulk_id"].Long() > 0 ) if (out["bulk_id"].Long() > 0) {
{
ret = out["bulk_id"].Long(); ret = out["bulk_id"].Long();
} }
return ret; return ret;
} }
long AddBulkTopupBatchItem(CVars in, CVars &out)
{ long AddBulkTopupBatchItem(CVars in, CVars &out) {
long ret = 0; long ret = 0;
/*
CREATE TABLE bulktopup_batch_items
(
id serial NOT NULL,
bulk_id INT REFERENCES bulktopup_batch(id),
customer_id INT REFERENCES customer(id),
topup_name VARCHAR(50),
topup_number VARCHAR(15) NOT NULL,
topup_amount INT DEFAULT 0,
topup_network VARCHAR(10),
order_id VARCHAR(25),
deliver_status VARCHAR(15),
status integer DEFAULT 1,
added TIMESTAMP DEFAULT NOW()
);
*/
REQ_STRING(in, "topup_name", 1, 50, "(.*)"); REQ_STRING(in, "topup_name", 1, 50, "(.*)");
REQ_STRING(in, "topup_number", 1, 15, "(.*)"); REQ_STRING(in, "topup_number", 1, 15, "(.*)");
@@ -65,27 +46,31 @@ added TIMESTAMP DEFAULT NOW()
REQ_LONG(in, "bulk_id", 1, -1); REQ_LONG(in, "bulk_id", 1, -1);
CVars cust; CVars cust;
cust["topup_name"] = in["topup_name"]; cust["topup_name"].set_valid(true); cust["topup_name"] = in["topup_name"];
cust["topup_number"] = in["topup_number"]; cust["topup_number"].set_valid(true); cust["topup_name"].set_valid(true);
cust["topup_network"] = in["topup_network"]; cust["topup_network"].set_valid(true); cust["topup_number"] = in["topup_number"];
cust["topup_amount"] = in["topup_amount"]; cust["topup_amount"].set_valid(true); cust["topup_number"].set_valid(true);
cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); cust["topup_network"] = in["topup_network"];
cust["bulk_id"] = in["bulk_id"]; cust["bulk_id"].set_valid(true); cust["topup_network"].set_valid(true);
cust["topup_amount"] = in["topup_amount"];
cust["topup_amount"].set_valid(true);
cust["customer_id"] = in["customer_id"];
cust["customer_id"].set_valid(true);
cust["bulk_id"] = in["bulk_id"];
cust["bulk_id"].set_valid(true);
out["bulk_item_id"] = insert_db_record(DBS_VALID, "bulktopup_batch_items", "bulktopup_batch_items_id_seq", cust); out["bulk_item_id"] = insert_db_record(DBS_VALID, "bulktopup_batch_items", "bulktopup_batch_items_id_seq", cust);
if (out["bulk_item_id"].Long() > 0 ) if (out["bulk_item_id"].Long() > 0) {
{
ret = out["bulk_item_id"].Long(); ret = out["bulk_item_id"].Long();
} }
return ret; return ret;
} }
long UpdateBulkTopupItem(CVars in, CVars &out)
{ long UpdateBulkTopupItem(CVars in, CVars &out) {
long ret = 0; long ret = 0;
REQ_LONG(in, "bulk_id", 1, -1); REQ_LONG(in, "bulk_id", 1, -1);
REQ_LONG(in, "customer_id", 1, -1); REQ_LONG(in, "customer_id", 1, -1);
if ( load_db_record( out, "SELECT id FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL",in["bulk_id"].Long() ) ) if (load_db_record(out, "SELECT id FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL", in["bulk_id"].Long())) {
{
pgsql_exec("UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu", in["bulk_id"].Long(), in["customer_id"].Long()); pgsql_exec("UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu", in["bulk_id"].Long(), in["customer_id"].Long());
ret = in["bulk_id"].Long(); ret = in["bulk_id"].Long();
} }
@@ -93,8 +78,7 @@ long ret =0;
return ret; return ret;
} }
long DeliverBulkTopupItem(CVars in, CVars &out) long DeliverBulkTopupItem(CVars in, CVars &out) {
{
CVars xx; CVars xx;
CVars yy; CVars yy;
long ret = 0; long ret = 0;
@@ -102,42 +86,44 @@ long ret = 0;
REQ_LONG(in, "item_id", 1, -1); REQ_LONG(in, "item_id", 1, -1);
REQ_STRING(in, "payment_code", 1, 50, "(.*)"); REQ_STRING(in, "payment_code", 1, 50, "(.*)");
if ( load_db_record( out, "SELECT gid AS paymentitemid FROM interswitch_biller_payment_items WHERE paymentcode = '%lu'",in["payment_code"].Long() ) ) if (load_db_record(out, "SELECT gid AS paymentitemid FROM interswitch_biller_payment_items WHERE paymentcode = '%lu'", in["payment_code"].Long())) {
{
in["paymentitemid"] = out["paymentitemid"]; in["paymentitemid"] = out["paymentitemid"];
xx["paymentitemid"] = out["paymentitemid"]; xx["paymentitemid"] = out["paymentitemid"];
in["paymentitemid"].set_valid(true); in["paymentitemid"].set_valid(true);
xx["paymentitemid"].set_valid(true); xx["paymentitemid"].set_valid(true);
} } else {
else
{
return 0; return 0;
} }
if ( load_db_record( out, "SELECT * FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL",in["bulk_id"].Long() ) ) if (load_db_record(out, "SELECT * FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL", in["bulk_id"].Long())) {
{ if (load_db_record(yy, "SELECT * FROM bulktopup_batch_items WHERE id= %lu AND status <> 5 AND completed IS NULL", in["item_id"].Long())) {
if ( load_db_record( yy, "SELECT * FROM bulktopup_batch_items WHERE id= %lu AND status <> 5 AND completed IS NULL",in["item_id"].Long() ) ) xx["customer_id"] = out["customer_id"];
{ xx["customer_id"].set_valid(true);
xx["customer_id"]= out["customer_id"]; xx["customer_id"].set_valid( true ); xx["amount"] = yy["topup_amount"];
xx["amount"]= yy["topup_amount"]; xx["amount"].set_valid( true ); xx["amount"].set_valid(true);
xx["recipient_no"]= yy["topup_number"]; xx["topup_number"].set_valid( true ); xx["recipient_no"] = yy["topup_number"];
xx["bulk_topup_item_id"] = yy["id"]; xx["bulk_topup_item_id"].set_valid( true ); xx["topup_number"].set_valid(true);
xx["bulk_topup_item_id"] = yy["id"];
xx["bulk_topup_item_id"].set_valid(true);
// pgsql_exec( "UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu",in["bulk_id"].Long(),in["customer_id"].Long()); // pgsql_exec( "UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu",in["bulk_id"].Long(),in["customer_id"].Long());
xx["trans_not_id"] = CreateTopupOrder(xx, out); xx["trans_not_id"] = CreateTopupOrder(xx, out);
if ( xx["trans_not_id"].Long() > 0 ) if (xx["trans_not_id"].Long() > 0) {
{
pgsql_exec("UPDATE bulktopup_batch_items SET order_id = '%s', payment_code = '%s' WHERE id = %lu", out["orderid"].c_str(), in["payment_code"].c_str(), in["item_id"].Long()); pgsql_exec("UPDATE bulktopup_batch_items SET order_id = '%s', payment_code = '%s' WHERE id = %lu", out["orderid"].c_str(), in["payment_code"].c_str(), in["item_id"].Long());
xx["customermobile"]=xx["recipient_no"]; xx["customermobile"].set_valid( true ); xx["customermobile"] = xx["recipient_no"];
xx["customerid"]= xx["customer_id"]; xx["customerid"].set_valid( true ); // bad but true xx["customermobile"].set_valid(true);
xx["orderid"] =out["orderid"]; xx["orderid"].set_valid( true ); xx["customerid"] = xx["customer_id"];
xx["order_id"] =out["orderid"]; xx["order_id"].set_valid( true ); xx["customerid"].set_valid(true); // bad but true
xx["orderid"] = out["orderid"];
xx["orderid"].set_valid(true);
xx["order_id"] = out["orderid"];
xx["order_id"].set_valid(true);
xx["trans_not_id"].set_valid(true); xx["trans_not_id"].set_valid(true);
xx["payment_code"] = in["payment_code"]; xx["payment_code"].set_valid( true ); xx["payment_code"] = in["payment_code"];
xx["payment_code"].set_valid(true);
if ( DeliverTopOrderByBalance(xx,out) == 100 ) if (DeliverTopOrderByBalance(xx, out) == 100) {
{
pgsql_exec("UPDATE bulktopup_batch_items SET completed=now(),status=5 WHERE id = %lu", in["item_id"].Long()); pgsql_exec("UPDATE bulktopup_batch_items SET completed=now(),status=5 WHERE id = %lu", in["item_id"].Long());
} }
} }
@@ -149,47 +135,40 @@ long ret = 0;
return ret; return ret;
} }
long DeliverTopOrderByBalance(CVars in, CVars &out) long DeliverTopOrderByBalance(CVars in, CVars &out) {
{
long retval = 0; long retval = 0;
long process_status = 0; long process_status = 0;
// in["amount"] - arrives as niara - send cents/kobo to interswitch // in["amount"] - arrives as niara - send cents/kobo to interswitch
out["route_id"] = "0"; out["route_id"] = "0";
out["route_etisalat"] = "0"; out["route_etisalat"] = "0";
if( load_db_record( out,"SELECT id AS route_id FROM airtime_route WHERE payment_code ='%s'",in["payment_code"].c_str() ) ) if (load_db_record(out, "SELECT id AS route_id FROM airtime_route WHERE payment_code ='%s'", in["payment_code"].c_str())) {
{
out["route_etisalat"] = "1"; out["route_etisalat"] = "1";
}else{ } } else {
}
if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance
{ {
if ( load_db_record( out, "SELECT * FROM customer WHERE id = %lu",in["customer_id"].Long() ) ) if (load_db_record(out, "SELECT * FROM customer WHERE id = %lu", in["customer_id"].Long())) {
{
long amount_in_cents = in["amount"].Long()*100; long amount_in_cents = in["amount"].Long()*100;
if ( out["balance"].Long() < amount_in_cents ) if (out["balance"].Long() < amount_in_cents) {
{
out["status"] = "Insufficient Balance for Purchase"; out["status"] = "Insufficient Balance for Purchase";
out["status_code"] = "F0004"; out["status_code"] = "F0004";
} } else {
else
{
in["amount"] = amount_in_cents; in["amount"] = amount_in_cents;
in["amount"].set_valid(true); in["amount"].set_valid(true);
//-------------------------------------------------- //--------------------------------------------------
pgsql_exec("UPDATE customer SET balance = balance - %lu WHERE id=%lu ", amount_in_cents, in["customer_id"].Long()); pgsql_exec("UPDATE customer SET balance = balance - %lu WHERE id=%lu ", amount_in_cents, in["customer_id"].Long());
//-------------------------------------------------- //--------------------------------------------------
//retval = INTW_sendBillPaymentAdvice( in, out ); //retval = INTW_sendBillPaymentAdvice( in, out );
if ( out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0 ) if (out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0) {
{
retval = DeliverMobilseEtisalat(in, out); retval = DeliverMobilseEtisalat(in, out);
out["ResponseCode"] = retval; out["ResponseCode"] = retval;
} }
else else {
{
retval = INTW_sendBillPaymentAdvice(in, out); retval = INTW_sendBillPaymentAdvice(in, out);
} }
@@ -201,9 +180,7 @@ long process_status=0;
out["email_alert"] = "I am sending Email of Success"; out["email_alert"] = "I am sending Email of Success";
//CustomerAirSale( in); //CustomerAirSale( in);
VirtualAirSaleAlert(out); VirtualAirSaleAlert(out);
} } else {
else
{
//-------------------------------------------------- //--------------------------------------------------
pgsql_exec("UPDATE customer SET balance = balance + %lu WHERE id=%lu ", amount_in_cents, in["customer_id"].Long()); pgsql_exec("UPDATE customer SET balance = balance + %lu WHERE id=%lu ", amount_in_cents, in["customer_id"].Long());
//-------------------------------------------------- //--------------------------------------------------
@@ -215,9 +192,7 @@ long process_status=0;
} }
} }
} } else { // customer not found
else
{ // customer not found
out["status"] = "Account not found"; out["status"] = "Account not found";
out["status_code"] = "F0003"; out["status_code"] = "F0003";
} }
@@ -227,9 +202,7 @@ long process_status=0;
return process_status; return process_status;
} }
long CreateTopupOrder(CVars in, CVars &out) {
long CreateTopupOrder(CVars in, CVars &out)
{
CVars cust; CVars cust;
CVars xx; CVars xx;
char xtid[12]; char xtid[12];
@@ -250,10 +223,14 @@ long ret =0;
in["orderid"].set_valid(true); in["orderid"].set_valid(true);
cust["amount"] = in["amount"]; cust["amount"].set_valid(true); cust["amount"] = in["amount"];
cust["description"] = in["description"]; cust["description"].set_valid(true); cust["amount"].set_valid(true);
cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); cust["description"] = in["description"];
cust["recipient_no"] = in["recipient_no"]; cust["recipient_no"].set_valid(true); cust["description"].set_valid(true);
cust["customer_id"] = in["customer_id"];
cust["customer_id"].set_valid(true);
cust["recipient_no"] = in["recipient_no"];
cust["recipient_no"].set_valid(true);
cust["orderid"].set_valid(true); cust["orderid"].set_valid(true);
out = in; out = in;
@@ -261,17 +238,14 @@ long ret =0;
out["order_id"] = insert_db_record(DBS_VALID, "trans_notification", "trans_notification_id_seq", cust); out["order_id"] = insert_db_record(DBS_VALID, "trans_notification", "trans_notification_id_seq", cust);
if (out["order_id"].Long() > 0 ) if (out["order_id"].Long() > 0) {
{
sprintf(xtid, "9%011lu", out["order_id"].Long()); sprintf(xtid, "9%011lu", out["order_id"].Long());
xx["orderid"] = xtid; xx["orderid"] = xtid;
pgsql_exec("UPDATE trans_notification SET orderid ='%s' WHERE id=%lu AND customer_id = %lu ", xtid, out["order_id"].Long(), in["customer_id"].Long()); pgsql_exec("UPDATE trans_notification SET orderid ='%s' WHERE id=%lu AND customer_id = %lu ", xtid, out["order_id"].Long(), in["customer_id"].Long());
out["orderid"] = xtid; out["orderid"] = xtid;
ret = out["order_id"].Long(); ret = out["order_id"].Long();
} } else {
else
{
out["orderid"] = ""; out["orderid"] = "";
} }
return ret; return ret;