diff --git a/wrenchboard/email/HOLIDAY/independence_ng_2025.mailfile b/wrenchboard/email/HOLIDAY/independence_ng_2025.mailfile new file mode 100644 index 00000000..983c4ad6 --- /dev/null +++ b/wrenchboard/email/HOLIDAY/independence_ng_2025.mailfile @@ -0,0 +1,161 @@ +Subject: View opportunities at {{site_name}} + + + + + +View opportunities at {{site_name}} + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + +
+WrenchBoard +
+{{site_trade_name}} +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+Dear {{firstname}}, +
+   Welcome to {{site_name}}; please follow the link below to learn about our opportunities. +
+
+
+ Click here to view opportunities +
+ + + + + +
+ + Apple + + + + Android + +
+
+ +
+  We value your privacy. If you did not initiate this process or have any further support questions, don't hesitate to get in touch with us at {{server_name}}/contact
+
+ +
+
+{{site_name}} Team +
+{{server_name}} +
+
+ + + \ No newline at end of file diff --git a/wrenchboard/src/include/wrenchboard_api.h b/wrenchboard/src/include/wrenchboard_api.h index e0e2a6a5..c3b4f5f1 100644 --- a/wrenchboard/src/include/wrenchboard_api.h +++ b/wrenchboard/src/include/wrenchboard_api.h @@ -169,6 +169,7 @@ enum { PARTNER_STRIPE }; #define WRB_CRONJOB_PROCESSTRANSFER 781 #define WRB_CRONJOB_AUTO_OFFEREXPIRE 785 +#define WRB_CRONJOB_HOLIDAY_BROADCAST 786 #define WRB_CRONJOB_PENDINGSM 790 diff --git a/wrenchboard/src/shared_tool/email.cc b/wrenchboard/src/shared_tool/email.cc index edd7873e..17409ec6 100644 --- a/wrenchboard/src/shared_tool/email.cc +++ b/wrenchboard/src/shared_tool/email.cc @@ -290,9 +290,12 @@ long cron_email(long mailtype, CVars in, CVars &out) { form.Email("REMINDER/offer_pending_reminder.mailfile"); break; - - - + case WRB_CRONJOB_HOLIDAY_BROADCAST: + vars2form(x, form); // need to remove + vars2form(in, form); + form.LetStr("email", in["email"].c_str()); + form.Email("HOLIDAY/independence_ng_2025.mailfile"); + break; } } catch (bad_parameter) { diff --git a/wrenchboard/src/shared_tool/site_crons.cc b/wrenchboard/src/shared_tool/site_crons.cc index ca2ebfee..d5aa98b2 100644 --- a/wrenchboard/src/shared_tool/site_crons.cc +++ b/wrenchboard/src/shared_tool/site_crons.cc @@ -32,6 +32,7 @@ long ProcessTransferJobs(CVars in, CVars &out); long ScheduleTransferJobs(CVars in, CVars &out); long TestNotificationsJobs(CVars in, CVars &out); long ProcessExpiredOffers(CVars in, CVars &out); +long ScheduleHolidayJobs(CVars in, CVars &out); /* CREATE TABLE cron_jobs ( @@ -147,14 +148,45 @@ long sitecrons_calls(CVars in, CVars &out) { CronTracker(ct, co); return ProcessExpiredOffers(in, out); break; - - +//define('WRB_CRONJOB_HOLIDAY_BROADCAST', 786); + case WRB_CRONJOB_HOLIDAY_BROADCAST: + return ScheduleHolidayJobs(in, out); + break; } logfmt(logINFO, "/sitecrons_calls()"); return ret; } +long ScheduleHolidayJobs(CVars in, CVars &out){ + char vname[30]; + long ret = PHP_API_BAD_PARAM; + try { + out["total_record"] = "0"; + const PGresult *res; + res = pgsql_query("SELECT * FROM holiday_message WHERE status = 1 AND completed IS NULL ORDER BY id DESC LIMIT 5"); + + 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); + cron_email(WRB_CRONJOB_HOLIDAY_BROADCAST, rec, out); // send the cron email + pgsql_query("UPDATE holiday_message SET status = 5, completed = now() WHERE id = %lu ", rec["id"].Long()); // move the status so no retry + } + } + ret = PHP_API_OK; + out["status"] = "OK"; + } catch (bad_parameter) { + logfmt(logINFO, "ERROR CALL long ScheduleHolidayJobs(CVars in, CVars &out)"); + } + logfmt(logINFO, "/ScheduleHolidayJobs()"); + return ret; +} + long ProcessExpiredOffers(CVars in, CVars &out){ char vname[30]; CVars inR; diff --git a/www-api/app/Config/Routes.php b/www-api/app/Config/Routes.php index 2cdc01cb..35032ef7 100644 --- a/www-api/app/Config/Routes.php +++ b/www-api/app/Config/Routes.php @@ -54,7 +54,7 @@ $routes->get('/en/flow/api/v1/scheduletransfer', 'AirFlow::flowScheduleTrans $routes->get('/en/flow/api/v1/testnotifications', 'AirFlow::flowTestNotifications'); $routes->get('/en/flow/api/v1/automarket01', 'AirFlow::flowAutoMarket01'); $routes->get('/en/flow/api/v1/offersmissed', 'AirFlow::flowOfferMissed'); - +$routes->get('/en/flow/api/v1/holidaybroadcast', 'AirFlow::flowHolidayBroadCast'); include "RoutesV1.php"; diff --git a/www-api/app/Controllers/AirFlow.php b/www-api/app/Controllers/AirFlow.php index eee0f50e..9cb28571 100644 --- a/www-api/app/Controllers/AirFlow.php +++ b/www-api/app/Controllers/AirFlow.php @@ -15,6 +15,7 @@ define('WRB_CRONJOB_SCHEULETRANSFER', 780); define('WRB_CRONJOB_PROCESSTRANSFER', 781); define('WRB_CRONJOB_AUTO_OFFEREXPIRE', 785); +define('WRB_CRONJOB_HOLIDAY_BROADCAST', 786); define('WRB_CRONJOB_PENDINGSM', 790) ; @@ -30,6 +31,16 @@ class AirFlow extends BaseController return []; //json_encode( $final_out ); } + public function flowHolidayBroadCast(){ + $raw_json = file_get_contents('php://input'); + $in = json_decode($raw_json, true); + $in["action"] = WRB_JOB_CRONJOB; //WRB_CRONJOB_AUTO_OFFEREXPIRE + $in["call_action"] = WRB_CRONJOB_HOLIDAY_BROADCAST; + $out =[]; + log_message('critical', "AirFlow::flowOfferMissed ********* ALL ".serialize($in) ); + $ret['WRB_CRONJOB_HOLIDAY_BROADCAST'] = (new \App\Models\BackendModel())->wrenchboard_api($in, $out); + return []; //json_encode( $final_out ); + } public function flowOfferPending(){ $raw_json = file_get_contents('php://input');