// History Listing #include "clog.h" #include "cgi.h" #include "input.h" #include "wrenchboard_api.h" #include "history.h" #include "market.h" #include "email.h" #include "payments.h" #include "safestring.h" #include #include "pgsql.h" #include "pgsql_wrapper.h" #include "cfg.h" #include long WrenchMarketImport(CVars in, CVars &out); long WrenchPromoLoad(CVars in, CVars &out); long WrenchPromoAdminLogin(CVars in, CVars &out); long WrenchPromoAddList(CVars in, CVars &out); long WrenchPromoGetList( CVars in, CVars &out ); long WrenchPromoGetMember( CVars in, CVars &out ); long WrenchPromoAssignTask( CVars in, CVars &out ); long market_calls(CVars in, CVars &out) { logfmt(logINFO, "market_calls()"); long ret = PHP_API_BAD_PARAM; char vname[700]; char file_section[50]; try { long action = REQ_LONG( in, "action", 1, -1 ); switch(action){ case WRENCHBOARD_MARKET_PLAN01_START: return WrenchMarketImport(in, out); break; case WRENCHBOARD_MARKET_PLAN01_NEXT1: return WrenchPromoLoad(in, out); break; case WRENCHBOARD_PROMOADMIN_LOGIN: return WrenchPromoAdminLogin(in, out); break; //const WRENCHBOARD_PROMOADMIN_ADDLIST = 220015; case WRENCHBOARD_PROMOADMIN_ADDLIST: return WrenchPromoAddList(in, out); break; //#define WRENCHBOARD_PROMOADMIN_GETLIST 220014 case WRENCHBOARD_PROMOADMIN_GETLIST: return WrenchPromoGetList(in, out); break; case WRENCHBOARD_PROMOADMIN_GETMEMBER: return WrenchPromoGetMember(in, out); break; case WRENCHBOARD_PROMOADMIN_ASSIGNTASK: return WrenchPromoAssignTask(in, out); break; } } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long market_calls(CVars in, CVars &out)"); } logfmt(logINFO, "/market_calls()"); return ret; } long WrenchPromoAssignTask( CVars in, CVars &out ) { out["status"] = "OK"; out["task_result"] = "Backend Not Ready"; return 0; } long WrenchPromoGetMember( CVars in, CVars &out ) { char vname[30]; long ret = PHP_API_BAD_PARAM; logfmt( logINFO, "WrenchPromoGetList()" ); out["result"] = "Yes i go to this back end"; try { long admin_id = REQ_LONG(in, "promo_admin_id", 1, -1); REQ_STRING (in, "admin_uid", 5, 120, "(.*)"); REQ_STRING (in, "member_uid", 5, 120, "(.*)"); OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); const PGresult *res; res = pgsql_query("SELECT count(id) FROM promo_member WHERE admin_id = %lu", admin_id); out["sum_total_record"] = pgsql_num_rows(res); res = pgsql_query("SELECT * FROM promo_member" " WHERE admin_id = %lu AND uid = '%s' ",admin_id,in["member_uid"].c_str()); if (res != NULL && pgsql_num_rows(res) > 0) { mapf = pgsql_fetch_assoc(res, 0); CVars rec; map_to_cvars(f, rec); out = rec; ret = PHP_API_OK; out["status"] = "OK"; } } catch (bad_parameter) { out["status"] = "ERROR"; logfmt(logINFO, "ERROR CALL long WrenchPromoGetMember(CVars in, CVars &out)"); } logfmt( logINFO, "/WrenchPromoGetMember()" ); return 0; } long WrenchPromoGetList( CVars in, CVars &out ) { char vname[30]; long ret = PHP_API_BAD_PARAM; logfmt( logINFO, "WrenchPromoGetList()" ); out["result"] = "Yes i go to this back end"; try { long admin_id = REQ_LONG(in, "promo_admin_id", 1, -1); REQ_STRING (in, "admin_uid", 5, 120, "(.*)"); OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); long limit = REQ_LONG(in, "limit", 1, -1); long offset = REQ_LONG(in, "offset", 1, -1); const PGresult *res; res = pgsql_query("SELECT count(id) FROM promo_member WHERE admin_id = %lu", admin_id); out["sum_total_record"] = pgsql_num_rows(res); res = pgsql_query("SELECT * FROM promo_member" " WHERE admin_id = %lu ORDER BY id DESC LIMIT %lu OFFSET %lu ",admin_id,limit,offset); 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++) { mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); snprintf(vname, sizeof (vname), "updated_%05d", i); out[vname] = rec["updated"]; snprintf(vname, sizeof (vname), "uid_%05d", i); out[vname] = rec["uid"]; snprintf(vname, sizeof (vname), "added_%05d", i); out[vname] = rec["added"]; snprintf(vname, sizeof (vname), "firstname_%05d", i); out[vname] = rec["firstname"]; snprintf(vname, sizeof (vname), "lastname_%05d", i); out[vname] = rec["lastname"]; snprintf(vname, sizeof (vname), "email_%05d", i); out[vname] = rec["email"]; snprintf(vname, sizeof (vname), "status_%05d", i); out[vname] = rec["status"]; } } ret = PHP_API_OK; out["status"] = "OK"; } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long WrenchPromoGetList(CVars in, CVars &out)"); } logfmt( logINFO, "/WrenchPromoGetList()" ); return 0; } long WrenchPromoAddList(CVars in, CVars &out){ logfmt(logINFO, "WrenchPromoAdminLogin()"); char vname[30]; long ret = PHP_API_BAD_PARAM; long retF = -1; CVars outX; CVars x; try { REQ_STRING (in, "email", 5, 49, "(.*)"); REQ_STRING (in, "firstname", 5, 25, "(.*)"); REQ_STRING (in, "lastname", 5, 25, "(.*)"); long admin_id = REQ_LONG(in, "promo_admin_id", 1, -1); REQ_STRING (in, "admin_uid", 5, 120, "(.*)"); OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); ret = load_db_record( out, "SELECT *,id AS promo_admin_id FROM promo_admin WHERE status=1 AND id=%lu AND uid::text='%s'", admin_id, in["admin_uid"].c_str() ); if (ret && out["promo_admin_id"].Long() > 0) { retF = load_db_record( outX, "SELECT *,id AS promo_admin_id " "FROM promo_member WHERE (email)=LOWER('%s') AND admin_id= %lu", in["email"].c_str(), admin_id ); if (retF && outX["promo_admin_id"].Long() > 0) { out["status_message"] = "Error Duplicate Found"; ret = PHP_API_OK; out["status"] = "OK"; return 0; } retF = load_db_record( outX, "SELECT *,id AS promo_admin_id " "FROM members_pending WHERE status =1 AND (username)=LOWER('%s') ", in["email"].c_str() ); if (retF && outX["promo_admin_id"].Long() > 0) { out["status_message"] = "Error Already Started Signup"; ret = PHP_API_OK; out["status"] = "OK"; return 0; } retF = load_db_record( outX, "SELECT *,id AS promo_admin_id " "FROM members WHERE (username)=LOWER('%s') ", in["email"].c_str() ); if (retF && outX["promo_admin_id"].Long() > 0) { out["status_message"] = "Error Already Signup"; ret = PHP_API_OK; out["status"] = "OK"; return 0; } x["admin_id"] = admin_id; x["admin_id"].set_valid(true); x["email"] = in["email"]; x["email"].set_valid(true); x["firstname"] = in["firstname"]; x["firstname"].set_valid(true); x["lastname"] = in["lastname"]; x["lastname"].set_valid(true); x["loc"] = in["loc"]; x["loc"].set_valid(true); long sid = insert_db_record(DBS_VALID, "promo_member", "promo_member_id_seq", x); if (sid > 0 ){ out["status_message"] = "New Entry Added"; } // long retF = load_db_record( outX, "SELECT *,id AS promo_admin_id " // "FROM member WHERE (email)=LOWER('%s') AND admin_id= %lu", in["email"].c_str(), admin_id ); // if (retF && retF["promo_admin_id"].Long() > 0) { // out["status_message"] = "Error Duplicate Found"; // ret = PHP_API_OK; // out["status"] = "OK"; // return 0; // } // there will be promo action // pgsql_query("UPDATE promo_admin SET updated=now() WHERE id=%lu", out["promo_admin_id"].Long()); ret = PHP_API_OK; out["status"] = "OK"; } } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long WrenchMarketImport(CVars in, CVars &out)"); } logfmt(logINFO, "/WrenchPromoAdminLogin()"); return ret; } long WrenchPromoAdminLogin(CVars in, CVars &out){ logfmt(logINFO, "WrenchPromoAdminLogin()"); char vname[30]; long ret = PHP_API_BAD_PARAM; try { REQ_STRING (in, "username", 5, 49, "(.*)"); REQ_STRING (in, "password", 5, 49, "(.*)"); OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); ret = load_db_record( out, "SELECT *,id AS promo_admin_id, md5( now()::text )||''||md5( (now() + '1 hr')::text ) AS sessionid FROM promo_admin WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str() ); if (ret && out["promo_admin_id"].Long() > 0) { pgsql_query("UPDATE promo_admin SET updated=now() WHERE id=%lu", out["promo_admin_id"].Long()); ret = PHP_API_OK; out["status"] = "OK"; } } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long WrenchMarketImport(CVars in, CVars &out)"); } logfmt(logINFO, "/WrenchPromoAdminLogin()"); return ret; } long WrenchMarketImport(CVars in, CVars &out) { logfmt(logINFO, "WrenchMarketImport()"); char vname[30]; long ret = PHP_API_BAD_PARAM; try { out["total_record"] = "0"; const PGresult *res; res = pgsql_query("SELECT id AS import_id,* FROM market_import WHERE status = 1 AND completed IS NULL ORDER BY ecount ASC LIMIT 10"); 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++) { mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); market_email(WRENCHBOARD_MARKET_PLAN01_START, rec, rec); pgsql_query("UPDATE market_import SET ecount=ecount+1 WHERE uid::text='%s'", rec["uid"].c_str()); if ( rec["ecount"].Long() > 2 ){ pgsql_query("UPDATE market_import SET completed=now() WHERE uid::text='%s'", rec["uid"].c_str()); } } } ret = PHP_API_OK; out["status"] = "OK"; } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long WrenchMarketImport(CVars in, CVars &out)"); } logfmt(logINFO, "/WrenchMarketImport()"); return ret; } long WrenchPromoLoad(CVars in, CVars &out) { logfmt(logINFO, "WrenchPromoLoad()"); long ret = PHP_API_BAD_PARAM; try { REQ_STRING(in, "promo_owner", 2, 149, "(.*)"); REQ_STRING(in, "promo", 2, 49, "(.*)"); load_db_record(out, "SELECT to_char(now(), 'yyyy') AS YYYY"); if ( load_db_record(out, "SELECT uid AS promo_owner, firstname , lastname , middlename , status,email FROM market_import WHERE uid::text ='%s' AND status = 1", in["promo_owner"].c_str())> 0){ if ( load_db_record(out, "SELECT id FROM members WHERE LOWER(username) = LOWER('%s')", out["email"].c_str())> 0){ pgsql_query("UPDATE market_import SET status = 4 WHERE uid::text = '%s' AND status = 1 ", out["promo_owner"].c_str()); out["status_message"] = "VALID_LINK_NOT_FOUND"; } else { out["status_message"] = "VALID_LINK_FOUND"; } } else{ out["status_message"] = "VALID_LINK_NOT_FOUND"; } if ( load_db_record(out, "SELECT * FROM market_promo WHERE promo::text ='%s' ", in["promo"].c_str())> 0){ } ret = PHP_API_OK; out["status"] = "OK"; } catch (bad_parameter) { logfmt(logINFO, "ERROR CALL long WrenchPromoLoad(CVars in, CVars &out)"); } logfmt(logINFO, "/WrenchPromoLoad()"); return ret ; } /* #define WRENCHBOARD_MARKET_PLAN01_START 220001 #define WRENCHBOARD_MARKET_PLAN01_NEXT1 220003 */