diff --git a/wrenchboard/src/include/email.h b/wrenchboard/src/include/email.h index 972afe10..230a38b9 100644 --- a/wrenchboard/src/include/email.h +++ b/wrenchboard/src/include/email.h @@ -44,6 +44,7 @@ long market_email(long mailtype, CVars in, CVars &out); long plan_notification(CVars in, CVars &out); long SignupPendingAlertMailfile(CVars in); long SignupCompletedAlertMailfile(CVars in); +long promo_email(long mailtype, CVars in, CVars &out); #endif diff --git a/wrenchboard/src/shared_tool/email.cc b/wrenchboard/src/shared_tool/email.cc index 353e5184..65fe8a25 100644 --- a/wrenchboard/src/shared_tool/email.cc +++ b/wrenchboard/src/shared_tool/email.cc @@ -66,6 +66,33 @@ CREATE TABLE members_notification ( return ret; } +long promo_email(long mailtype, CVars in, CVars &out){ + + logfmt(logINFO, "alert_email()"); + CVars x, y, z; + C_CGI_Form form("", ""); + out["alertemail"] = CfgReadChar("transnotif.contact"); + out["signupreport"] = CfgReadChar("transnotif.signupreport"); + + CVars yr; + load_db_record(yr, "SELECT to_char(now(), 'yyyy') AS YYYY"); + vars2form(yr, form); + + char * server_name = getenv("SERVER_NAME"); + form.LetStr("server_name", server_name); + form.LetStr("site_name", "WrenchBoard"); + form.LetStr("site_trade_name", "Connecting Opportunities"); + switch (mailtype) { + + case WRB_CRONJOB_PROCESS_PROMO: + vars2form(in, form); + form.LetStr("email", out["email"]); + form.Email("PROMO/promo_alert.mailfile"); + break; + } + return 0; + +} long alert_email(long mailtype, CVars in, CVars &out) { logfmt(logINFO, "alert_email()"); diff --git a/wrenchboard/src/shared_tool/site_crons.cc b/wrenchboard/src/shared_tool/site_crons.cc index dad3576b..ee592551 100644 --- a/wrenchboard/src/shared_tool/site_crons.cc +++ b/wrenchboard/src/shared_tool/site_crons.cc @@ -212,6 +212,23 @@ long RefreshPromoActivities(CVars in, CVars &out){ } } + + + res = pgsql_query("SELECT * FROM promo_admin WHERE status = 1 ORDER BY updated ASC LIMIT 20"); + 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); + promo_email(WRB_CRONJOB_PROCESS_PROMO, rec, out); // send the reminder email + pgsql_query("UPDATE promo_admin SET updated = now() WHERE id = %lu ", rec["id"].Long()); // mo + } + } + + ret = PHP_API_OK; out["status"] = "OK"; } catch (bad_parameter) {