#include "email.h" #include "clog.h" #include "cgi.h" #include "input.h" #include "wrenchboard_api.h" #include "safestring.h" #include "cfg.h" #include #include "pgsql_wrapper.h" #include "pgsql.h" void vars2form(CVars &v, C_CGI_Form &form); extern int mailsend(CVars in, CVars &out); long getContractMemberClientEmail(long contract_id, CVars &out); long alert_email(long mailtype, CVars in, CVars &out) { logfmt(logINFO, "job_email()"); CVars x, y, z; C_CGI_Form form("", ""); out["alertemail"] = CfgReadChar("transnotif.contact"); out["signupreport"] = CfgReadChar("transnotif.signupreport"); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); switch (mailtype) { case WRB_CRONJOB_SIGNUP_ALERT: vars2form(in, form); form.LetStr("email", out["signupreport"]); form.Email("ALERT/alert_daily_stats.mailfile"); break; } return 0; } long SendmarketMessage(CVars in, CVars &out) { logfmt(logINFO, "SendmarketMessage()"); CVars x, y, z; C_CGI_Form form("", ""); CGIList * inv_list = new CGIList(&form, "inv_items"); char listing_items[1024]; const PGresult *res; //out["alertemail"] = CfgReadChar("transnotif.contact"); //out["signupreport"] = CfgReadChar("transnotif.signupreport"); char * server_name = getenv("SERVER_NAME"); // form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); vars2form(in, form); in["server_name"] = "https://dashboard.wrenchboard.com"; int c = 0; res = pgsql_query("SELECT o.offer_code,o.*,j.title,j.description,j.timeline_days,j.price,j FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.public_view =1 AND o.expire> now() AND o.status=1 ORDER BY o.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++) { in["color"] = "FFFFFF"; if (c > 0) { in["color"] = "ebfaeb"; } c++; mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); sprintf(listing_items, "

%s

%s
Duration:%s Day(s)", in["color"].c_str(), in["server_name"].c_str(), rec["offer_code"].c_str(), rec["title"].c_str(), rec["description"].c_str(), rec["timeline_days"].c_str()); inv_list->LetStr("pin", listing_items); inv_list->CloseElement(); //
if (c > 1) { c = 0; } } } res = pgsql_query("SELECT * , id AS promo_id FROM promotion WHERE promo='%s' AND status=1 AND sent IS NULL LIMIT %lu", in["promo"].c_str(), 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++) { mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); vars2form(rec, form); form.LetStr("server_name", in["server_name"].c_str() ); form.LetStr("subject", "WrenchBoard - Some tasks that someone you know may like"); form.LetStr("email", rec["email"]); form.Email("PROMO/promotion1.mailfile"); pgsql_query("UPDATE promotion SET status = 5,sent=now() WHERE id =%lu", rec["promo_id"].Long()); } } return 0; } long cron_email(long mailtype, CVars in, CVars &out) { /* * member_id needed * case WRB_CRONJOB_PASTDUE_ALERT SELECT 'Project ID:'||mc.contract||'
Title:'||mc.title AS Project,m.firstname||' '||m.lastname AS Client, 'Timeline: '||mc.timeline_days||' day(s)
Price:'||mc.price*0.01 ,mc.description, (CASE WHEN mc.status = 1 AND mc.delivery_date > now() THEN 'Active' WHEN mc.status = 1 AND mc.delivery_date Project ID:'||mc.contract||'
Title:'||mc.title AS project,mc.delivery_date::date delivery_date," "m.firstname||' '||m.lastname AS Client, 'Timeline: '||mc.timeline_days||' day(s)
Price: #'||mc.price*0.01 AS detail ,mc.description, " "(CASE WHEN mc.status = 1 AND mc.delivery_date > now() THEN 'Active' WHEN mc.status = 1 AND mc.delivery_date 0) { in["job_list_head"] = "Recently added job(s)"; out["total_record"] = pgsql_num_rows(res); sprintf(late_subject, "You have %lu Past Due Task(s)", out["total_record"].Long()); form.LetStr("subject", late_subject); for (int i = 0, n = pgsql_num_rows(res); i < n; i++) { x["color"] = "FFFFFF"; if (c > 0) { in["color"] = "ebfaeb"; } c++; mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); sprintf(listing_items, "%s%s%s
%s", in["color"].c_str(), rec["project"].c_str(), rec["detail"].c_str(), rec["status"].c_str(), rec["delivery_date"].c_str()); inv_list->LetStr("pin", listing_items); inv_list->CloseElement(); //
if (c > 2) { c = 0; } } } vars2form(x, form); form.LetStr("email", x["email2"].c_str()); // form.LetStr("email", "ses66181+pastdue@gmail.com"); form.Email("JOB/job_pastdue_m.mailfile"); } break; } } catch (bad_parameter) { } return 0; } long account_email(long mailtype, CVars in, CVars &out) { //REQ_LONG( in, "member_id", 1, -1 ); CVars x; C_CGI_Form form("", ""); CGIList * inv_list = new CGIList(&form, "inv_items"); char listing_items[1024]; const PGresult *res; char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); try { switch (mailtype) { case ACCOUNT_RESEND_PENDING: return AccountPendingMail(in); break; case ACCOUNT_SEND_REFEREMAIL: REQ_LONG(in, "refer_id", 1, -1); if (load_db_record(x, "SELECT r.*,m.firstname AS send_firstname,m.lastname AS send_lastname FROM members_refer_friend r LEFT JOIN members m ON m.id = r.member_id WHERE r.id = %lu ", in["refer_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("ACCOUNT/member_refer_individual.mailfile"); } break; case ACCOUNT_CREATED_MAIL: break; case ACCOUNT_SENDMONEY_ALERT: break; case ACCOUNT_START_SENDMONEY: break; case ACCOUNT_COMPLETE_SENDMONEY: break; case ACCOUNT_LOGIN_ALERT: REQ_LONG(in, "member_id", 1, -1); if (load_db_record(x, "SELECT *,email as email2,to_char(last_login, 'Day Mon dd, yyyy HH:MI AM') AS last_login2 FROM members WHERE id = %lu ", in["member_id"].Long())) { in["server_name"] = "https://dashboard.wrenchboard.com"; int c = 0; x["job_list_head"] = ""; res = pgsql_query("SELECT o.offer_code,o.*,j.title,j.description,j.timeline_days,j.price,j FROM members_jobs_offer o " " LEFT JOIN members_jobs j ON j.id =o.job_id " " WHERE o.public_view =1 AND o.expire> now() " " AND o.status=1 ORDER BY o.id DESC LIMIT 2"); if (res != NULL && pgsql_num_rows(res) > 0) { in["job_list_head"] = "Recently added job(s)"; ; out["total_record"] = pgsql_num_rows(res); for (int i = 0, n = pgsql_num_rows(res); i < n; i++) { x["color"] = "FFFFFF"; if (c > 0) { in["color"] = "ebfaeb"; } c++; mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; CVars rec; map_to_cvars(f, rec); sprintf(listing_items, "%s - %s
Duration:%s Day(s)", in["color"].c_str(), in["server_name"].c_str(), rec["offer_code"].c_str(), rec["title"].c_str(), rec["description"].c_str(), rec["timeline_days"].c_str()); inv_list->LetStr("pin", listing_items); inv_list->CloseElement(); //
if (c > 1) { c = 0; } } } vars2form(x, form); form.LetStr("email", x["email2"].c_str()); form.Email("ACCOUNT/member_login.mailfile"); } break; case ACCOUNT_PASSWORD_RESET: REQ_LONG(in, "password_reset_id", 1, -1); if (load_db_record(x, "select p.*,m.firstname,m.lastname,m.email, " " TO_CHAR(expired :: TIMESTAMP, 'Day Mon dd, yyyy HH:MI AM') AS long_expired , " " TO_CHAR(created :: TIMESTAMP, 'Day Mon dd, yyyy HH:MI AM') AS long_created " " FROM password_reset p " " LEFT JOIN members m ON m.id =p.member_id WHERE p.id = %lu ", in["password_reset_id"].Long())) { vars2form(x, form); form.LetStr("server_name", server_name); form.Email("ACCOUNT/member_resetpass.mailfile"); } break; case ACCOUNT_PASSWORD_COMPLT: REQ_LONG(in, "reset_id", 1, -1); if (load_db_record(x, "SELECT p.created,m.*, " " TO_CHAR(expired :: TIMESTAMP, 'Day Mon dd, yyyy HH:MI AM') AS long_expired , " " TO_CHAR(created :: TIMESTAMP, 'Day Mon dd, yyyy HH:MI AM') AS long_created " " FROM password_reset p LEFT JOIN members m ON m.id=p.member_id WHERE p.status = 5 AND p.id = %lu ", in["reset_id"].Long())) { vars2form(x, form); form.Email("ACCOUNT/member_completepass.mailfile"); } break; case ACCOUNT_CONTACT_ALERT: REQ_LONG(in, "contact_id", 1, -1); out["alertemail"] = CfgReadChar("transnotif.contact"); //char * server_name = getenv( "SERVER_NAME" ); //form.LetStr( "server_name", server_name ); //form.LetStr( "site_name", "WrenchBoard" ); form.LetStr("subject", "WrenchBoard Contact Us Alert"); if (load_db_record(x, "SELECT member_id,firstname,lastname,substring(your_message,1,100) AS your_message,loc,created,email as email2,created FROM contacts WHERE id = %lu ", in["contact_id"].Long())) { vars2form(x, form); form.LetStr("email", out["alertemail"].c_str()); form.Email("ALERT/alert_contact.mailfile"); } break; } } catch (bad_parameter) { } return 0; } long job_email(long mailtype, CVars in, CVars &out) { logfmt(logINFO, "job_email()"); CVars x, y, z; C_CGI_Form form("", ""); int c=0; CGIList * inv_list = new CGIList(&form, "inv_items"); char listing_items[1024]; const PGresult *res; char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); switch (mailtype) { case WRENCHBOARD_JOB_REPLY_QUESTION: if (load_db_record(y, "SELECT ms.*,m.email,m.firstname FROM members_messages ms LEFT JOIN members m ON m.id=ms.member_id WHERE ms.id=%lu", in["reply_id"].Long())) { vars2form(y, form); form.LetStr("email", y["email"].c_str()); //we need previous message load_db_record(x, "SELECT msg AS prev_message FROM members_messages ms LEFT JOIN members m ON m.id=ms.member_id WHERE ms.memo = '%s' AND ms.id<>%lu ORDER BY ms.id DESC LIMIT 1", in["memo"].c_str(), in["reply_id"].Long()); vars2form(x, form); form.LetStr("subject", "Relpy Message"); form.Email("JOB/job_reply_message.mailfile"); } break; case WRENCHBOARD_JOB_MRKTINT_QUEST: if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title AS job_title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu", in["offer_id"].Long())) { vars2form(x, form); form.LetStr("job_title", x["job_title"].c_str()); //form.LetStr( "job_title", "Job title" ); form.LetStr("subject", "Job Interest Message"); if (load_db_record(y, "SELECT ms.*,m.email,m.firstname FROM members_messages ms LEFT JOIN members m ON m.id=ms.member_id WHERE ms.id=%lu", in["msg_id"].Long())) { vars2form(y, form); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_interest_message.mailfile"); } } break; case JOBS_PAYMENT_DUE_MAIL: if (load_db_record(y, "SELECT email,firstname FROM members WHERE id = %lu", in["member_id"].Long())) { vars2form(y, form); // FOR CRON JOBS SET SERVER NAME form.LetStr("preview_count", in["preview_count"].c_str()); form.LetStr("server_name", "dashboard.wrenchboard.com"); vars2form(x, form); form.LetStr("subject", "Completed Task Processing Past Due"); form.LetStr("email", y["email"].c_str()); //form.LetStr( "email", "ameye@chiefsoft.com" ); form.Email("JOB/job_due_reviewreminder.mailfile"); } break; case JOBS_DUE_APPROACH_MAIL: if (load_db_record(x, "SELECT m.firstname,m.email,mj.title,c.* FROM members_jobs_contract c LEFT JOIN members m ON m.id=c.client_id LEFT JOIN members_jobs mj ON mj.id = c.job_id WHERE c.id=%lu AND c.due_remind IS NULL", in["contract_id"].Long())) { // FOR CRON JOBS SET SERVER NAME form.LetStr("server_name", "dashboard.wrenchboard.com"); vars2form(x, form); form.LetStr("subject", "Task Due Date Approaching"); form.LetStr("email", x["email"].c_str()); //form.LetStr( "email", "ameye@chiefsoft.com" ); form.Email("JOB/job_duereminder.mailfile"); } break; case JOBS_OFFER_ACCEPT_MAIL: if (load_db_record(x, "SELECT *,to_char(delivery_date, 'Day Mon dd, yyyy HH:MI AM') AS delivery_date2 FROM members_jobs_contract WHERE id = %lu", in["contract_id"].Long())) { if (load_db_record(y, "SELECT email FROM members WHERE id = %lu", x["client_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Job Offer Accepted"); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_offer_accepted.mailfile"); } if (load_db_record(z, "SELECT email FROM members WHERE id = %lu", x["member_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Job Offer Accepted"); form.LetStr("email", z["email"].c_str()); form.Email("JOB/myjob_offer_accepted.mailfile"); } } break; case JOBS_OFFER_REJECT_MAIL: if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu AND o.status = 3", in["offer_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Job Offer Rejected"); // load_db_record(y, "SELECT email FROM members WHERE id = %lu",x["member_id"].Long()); form.LetStr("email", x["email"].c_str()); form.Email("JOB/job_offer_rejected.mailfile"); } // form.LetStr( "email", "ses66181+rej@gmail.com" ); // form.Email( "JOB/job_offer_rejected.mailfile" ); break; case JOBS_OFFER_SENDTOME_MAIL: if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title," " j.description,j.timeline_days,j.price,o.member_id,j.title,o.offer_code " " FROM members_jobs_offer o " " LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.offer_code = '%s'", in["offer_code"].c_str())) { vars2form(x, form); load_db_record(y, "SELECT email,'Job by '||firstname||' @ WrenchBoard' AS ltitle,firstname,lastname FROM members WHERE id = %lu",x["member_id"].Long()); vars2form(y, form); form.LetStr("subject", y["ltitle"].c_str()); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_offer_sendtome.mailfile"); } break; case JOBS_OFFER_INTEREST_MAIL: if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu AND o.status = 1", in["offer_id"].Long())) { vars2form(x, form); if (load_db_record(y, "SELECT email,balance,firstname FROM members WHERE id = %lu", x["member_id"].Long())) { vars2form(y, form); form.LetStr("subject", "Job Interest Recieved"); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_interest_member.mailfile"); } if (load_db_record(z, "SELECT mi.*,m.firstname,m.lastname,m.email from members_offer_interest mi LEFT JOIN members m ON m.id = mi.member_id WHERE mi.id = %lu", in["interest_id"].Long())) { vars2form(z, form); form.LetStr("subject", "Job Interest Sent"); form.LetStr("email", z["email"].c_str()); form.Email("JOB/job_interest_client.mailfile"); } } break; case JOBS_OFFER_CANCEL_MAIL: if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu AND o.status = 3", in["offer_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Job Offer Canceled"); form.LetStr("email", x["email"].c_str()); form.Email("JOB/job_offer_cancel.mailfile"); } break; case JOBS_INDIVIDUAL_OFFER_MAIL: logfmt(logINFO, "JOBS_INDIVIDUAL_OFFER_MAIL"); if (load_db_record(x, "SELECT o.*,to_char(o.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire2,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu", in["offer_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Job Offer Recieved"); form.LetStr("email", x["email"].c_str()); form.Email("JOB/job_offer_invidual.mailfile"); } break; case JOBS_GROUP_OFFER_MAIL: logfmt(logINFO, "JOBS_GROUP_OFFER_MAIL"); if (load_db_record(x, "SELECT o.*,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu", in["offer_id"].Long())) { const PGresult *res = pgsql_query("SELECT email FROM members_job_groupmember WHERE group_id=%lu AND status=1", x["group_id"].Long()); if (res != NULL && pgsql_num_rows(res) > 0) { 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); vars2form(x, form); form.LetStr("subject", "Job Offer Recieved"); form.LetStr("email", rec["email"].c_str()); form.Email("JOB/job_offer_group.mailfile"); } } } break; case JOBS_GROUP_OFFER_PUBLIC: logfmt(logINFO, "JOBS_GROUP_OFFER_PUBLIC"); if (load_db_record(x, "SELECT o.*,j.title,j.description,j.timeline_days,j.price FROM members_jobs_offer o LEFT JOIN members_jobs j ON j.id =o.job_id WHERE o.id = %lu", in["offer_id"].Long())) { vars2form(x, form); if (load_db_record(y, "SELECT email,balance,firstname FROM members WHERE id = %lu", x["member_id"].Long())) { vars2form(y, form); // vars2form( x, form ); form.LetStr("subject", "Job Offer Posted to the Public"); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_offer_public.mailfile"); } } break; case JOBS_MESSAGE_ADDED: logfmt(logINFO, "JOBS_MESSAGE_ADDED"); res = pgsql_query("SELECT m.firstname,mj.title,c.member_id,c.client_id,j.contract,j.msg_type,substring(j.message,0,550) AS message," " to_char(j.created, 'Day Mon dd, yyyy HH:MI AM') AS added " " FROM jobs_contract_message j " " LEFT JOIN members_jobs_contract c ON c.contract = j.contract " " LEFT JOIN members m ON m.id=j.member_id LEFT JOIN members_jobs mj ON mj.id = c.job_id " " WHERE j.contract='%s' ORDER BY j.id desc LIMIT 4", in["contract"].c_str()); CVars rec; 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++) { x["color"] = "FFFFFF"; if (c > 0) { in["color"] = "ebfaeb"; } c++; mapf = pgsql_fetch_assoc(res, i); if (f.empty()) continue; map_to_cvars(f, rec); sprintf(listing_items, "%s
", in["color"].c_str(), rec["message"].c_str()); inv_list->LetStr("pin", listing_items); inv_list->CloseElement(); //
if (c > 1) { c = 0; } } vars2form(rec, form); if (load_db_record(y, "SELECT email FROM members WHERE id = %lu", rec["member_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Activity Message Sent"); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_message_m.mailfile"); } vars2form(x, form); // not sure if I have to rebind again if (load_db_record(z, "SELECT email FROM members WHERE id = %lu", rec["client_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Activity Message Received"); form.LetStr("email", z["email"].c_str()); form.Email("JOB/job_message.mailfile"); } } /* if (load_db_record(x, "SELECT m.firstname,mj.title,c.member_id,c.client_id,j.contract,j.msg_type,substring(j.message,0,550) AS message," " to_char(j.created, 'Day Mon dd, yyyy HH:MI AM') AS added " " FROM jobs_contract_message j " " LEFT JOIN members_jobs_contract c ON c.contract = j.contract " " LEFT JOIN members m ON m.id=j.member_id LEFT JOIN members_jobs mj ON mj.id = c.job_id " " WHERE j.contract='%s' ORDER BY j.id desc LIMIT 1", in["contract"].c_str())> 0) { vars2form(x, form); if (load_db_record(y, "SELECT email FROM members WHERE id = %lu", x["member_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Activity Message Sent"); form.LetStr("email", y["email"].c_str()); form.Email("JOB/job_message_m.mailfile"); } vars2form(x, form); // not sure if I have to rebind again if (load_db_record(z, "SELECT email FROM members WHERE id = %lu", x["client_id"].Long())) { vars2form(x, form); form.LetStr("subject", "Activity Message Received"); form.LetStr("email", z["email"].c_str()); form.Email("JOB/job_message.mailfile"); } } */ break; } logfmt(logINFO, "/job_email()"); return 0; } long sendmoney_email(long mailtype, CVars in, CVars &out) { logfmt(logINFO, "sendmoney_email()"); CVars x, y, z; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); long sendmoney_id = REQ_LONG(in, "sendmoney_id", 1, -1); logfmt(logINFO, "sendmoney_email() sendmoney_id = %lu", sendmoney_id); load_db_record(out, "SELECT mm.username,mm.email AS email,mm.firstname AS sender_firstname, m.*,m.terminatingamount AS amount,mp.confirmation,r.firstname||' '||r.lastname AS recipient,r.account_no,b.name AS bank_name FROM money_transfer m LEFT JOIN members_payments mp ON mp.what_sendmoney = m.id LEFT JOIN sendmoney_recipient r ON r.id = m.recipientid LEFT JOIN members mm ON mm.id=m.member_id LEFT JOIN bank_entity_codes b ON b.code = r.bank_code WHERE m.id=%lu", in["sendmoney_id"].Long()); out["alertemail"] = CfgReadChar("transnotif.contact"); switch (mailtype) { case SM_PENDING: vars2form(out, form); form.LetStr("subject", "Account Withdraw Pending"); form.LetStr("sendmoney_message", "Estimated delivery time is 2 to 4 Hours."); form.LetStr("email", out["email"].c_str()); form.Email("SENDMONEY/sm_pending.mailfile"); vars2form(out, form); form.LetStr("subject", "Account Withdraw Pending Alert"); form.LetStr("sendmoney_message", "Estimated delivery time is 2 to 4 Hours."); form.LetStr("email", out["alertemail"].c_str()); form.Email("SENDMONEY/sm_pending_alert.mailfile"); break; case SM_CANCEL: vars2form(out, form); form.LetStr("email", out["email"].c_str()); form.Email("SENDMONEY/sm_cancel.mailfile"); break; case SM_FAILED: vars2form(out, form); form.LetStr("email", out["email"].c_str()); form.Email("SENDMONEY/sm_failed.mailfile"); break; case SM_COMPLETED: vars2form(out, form); form.LetStr("subject", "Account Withdraw Completed"); form.LetStr("email", out["email"].c_str()); form.Email("SENDMONEY/sm_completed.mailfile"); vars2form(out, form); form.LetStr("subject", "Account Withdraw Completed"); form.LetStr("email", out["alertemail"].c_str()); form.Email("SENDMONEY/sm_completed_alert.mailfile"); break; } return 0; } long project_email(long mailtype, CVars in, CVars &out) { long contract_id = REQ_LONG(in, "contract_id", 1, -1); logfmt(logINFO, "project_email() contract_id = %lu", contract_id); CVars x, y, z; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); load_db_record(out, "SELECT ms.firstname AS member_firstaname,ms.email AS member_email, j.*,js.title,js.description,js.price AS amount FROM members_jobs_contract j LEFT JOIN members_jobs js ON js.id=j.job_id LEFT JOIN members ms ON ms.id=j.member_id WHERE j.id=%lu", contract_id); load_db_record(out, "SELECT email AS client_email,firstname AS client_firstname FROM members WHERE id = %lu", out["client_id"].Long()); out["alertemail"] = CfgReadChar("transnotif.contact"); switch (mailtype) { case CONTRACT_NOTIFY_COMPLETE: vars2form(out, form); form.LetStr("subject", "Notification of Task Completion"); form.LetStr("email", out["member_email"].c_str()); form.Email("PROJ/contract_notifycomplete_m.mailfile"); vars2form(out, form); form.LetStr("subject", "Notification of Task Completion"); form.LetStr("email", out["client_email"].c_str()); form.Email("PROJ/contract_notifycomplete_c.mailfile"); /* -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_notifycomplete_c.mailfile -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_notifycomplete_m.mailfile */ break; case CONTRACT_REQUEST_CANCEL: vars2form(out, form); form.LetStr("subject", "Notification of Task Cancellation Request"); form.LetStr("email", out["member_email"].c_str()); form.Email("PROJ/contract_requestcancel_m.mailfile"); vars2form(out, form); form.LetStr("subject", "Notification of Task Cancellation Request"); form.LetStr("email", out["client_email"].c_str()); form.Email("PROJ/contract_requestcancel_c.mailfile"); /* -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_requestcancel_c.mailfile -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_requestcancel_m.mailfile */ break; case CONTRACT_ACCEPT_COMPLETE: vars2form(out, form); form.LetStr("subject", "Notification of Task Completion Acceptance"); form.LetStr("email", out["member_email"].c_str()); form.Email("PROJ/contract_acceptcomplete_m.mailfile"); vars2form(out, form); form.LetStr("subject", "Notification of Task Completion Acceptance"); form.LetStr("email", out["client_email"].c_str()); form.Email("PROJ/contract_acceptcomplete_c.mailfile"); /* -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_acceptcomplete_c.mailfile -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_acceptcomplete_m.mailfile */ break; case CONTRACT_REJECT_COMPLETE: vars2form(out, form); form.LetStr("subject", "Notification of Task Completion Rejection"); form.LetStr("email", out["member_email"].c_str()); form.Email("PROJ/contract_rejectcomplete_m.mailfile"); vars2form(out, form); form.LetStr("subject", "Notification of Task Completion Rejection"); form.LetStr("email", out["client_email"].c_str()); form.Email("PROJ/contract_rejectcomplete_c.mailfile"); /* -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_rejectcomplete_c.mailfile -rw-r--r--. 1 oameye dev 9374 May 19 20:07 contract_rejectcomplete_m.mailfile */ break; } return 0; } long getContractMemberClientEmail(long contract_id, CVars &out) { CVars x; logfmt(logINFO, "getContractMemberClientEmail()"); if (load_db_record(x, "SELECT c.member_id,c.client_id FROM members_jobs_contract c WHERE c.id=%lu", contract_id)) { if (load_db_record(out, "SELECT email AS member_email FROM members WHERE id = %lu", x["member_id"].Long())) { } if (load_db_record(out, "SELECT email AS client_email FROM members WHERE id = %lu", x["client_id"].Long())) { } } return 0; } long test_email(CVars in, CVars &out) { CVars x; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); if (load_db_record(x, "select p.*,m.firstname,m.lastname,m.email from password_reset p LEFT JOIN members m ON m.id =p.member_id WHERE p.id = 8 ")) { vars2form(x, form); } form.LetStr("subject", "This is Test Email"); form.LetStr("email", in["email"].c_str()); form.Email("ALERT/template.mailfile"); return 0; } long LocationAccountLoginMail(CVars in) { REQ_LONG(in, "member_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "SELECT * FROM members WHERE id = %lu ", in["member_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("ACCOUNT/member_welcome.mailfile"); } return 0; } long ContactMessage(CVars in) { REQ_LONG(in, "contact_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); out["alertemail"] = CfgReadChar("transnotif.contact"); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("subject", "WrenchBoard Contact Us Alert"); if (load_db_record(x, "SELECT member_id,firstname,lastname,your_message,loc,created,email as email2 FROM contacts WHERE id = %lu ", in["contact_id"].Long())) { vars2form(x, form); form.LetStr("email", out["alertemail"].c_str()); form.Email("ALERT/alert_contact.mailfile"); } return 0; } long SignupPendingAlertMailfile(CVars in) { REQ_LONG(in, "pending_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); out["alertemail"] = CfgReadChar("transnotif.contact"); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("subject", "WrenchBoard Contact Us Alert"); if (load_db_record(x, "SELECT *,email as email2,to_char(expire, 'Day Mon dd, yyyy HH:MI AM') AS expire,to_char(added, 'Day Mon dd, yyyy HH:MI AM') AS added FROM members_pending WHERE id = %lu ", in["pending_id"].Long())) { vars2form(x, form); form.LetStr("email", out["alertemail"].c_str()); form.Email("ALERT/alert_signup.mailfile"); } return 0; } long SignupCompletedAlertMailfile(CVars in) { REQ_LONG(in, "member_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); out["alertemail"] = CfgReadChar("transnotif.contact"); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("subject", "WrenchBoard Contact Us Alert"); if (load_db_record(x, "SELECT *,email as email2 FROM members WHERE id = %lu ", in["member_id"].Long())) { vars2form(x, form); form.LetStr("email", out["alertemail"].c_str()); form.Email("ALERT/alert_signupcompleted.mailfile"); } return 0; } long AlertActions(CVars in) { //REQ_LONG( in, "contact_id", 1, -1 ); CVars x; CVars out; C_CGI_Form form("", ""); out["alertemail"] = CfgReadChar("transnotif.contact"); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); vars2form(in, form); form.LetStr("email", out["alertemail"].c_str()); form.Email("ALERT/alert_general.mailfile"); return 0; } long ManagerAccountLoginMail(CVars in) { REQ_LONG(in, "member_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "SELECT * FROM members WHERE id = %lu ", in["member_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("ACCOUNT/member_welcome.mailfile"); } return 0; } long AccountPendingMail(CVars in) //TESTED { REQ_LONG(in, "pending_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", server_name); form.LetStr("site_name", "WrenchBoard"); form.LetStr("site_trade_name", "Connecting Experts with Clients"); if (load_db_record(x, "SELECT *,to_char(expire, 'Day Mon dd, yyyy HH:MI AM') AS expire FROM members_pending WHERE id = %lu ", in["pending_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); if (x["signup_random"] != "" && x["signup_random"].Long() > 0 && in["mobile_email"].Long() == 100) { form.Email("ACCOUNT/member_pending_mobile.mailfile"); } else { form.Email("ACCOUNT/member_pending.mailfile"); } } in["title"] = "Account Pending Created"; in["message"] = "Account Pending"; in["title"].set_valid(true); in["message"].set_valid(true); //AlertActions(in); return 0; } long WelcomeAccountMail(CVars in) // TESTED { REQ_LONG(in, "member_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "SELECT * FROM members WHERE id = %lu ", in["member_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("ACCOUNT/member_welcome.mailfile"); } in["title"] = "Account Creation Completed"; in["message"] = "Account Creation Completed"; in["title"].set_valid(true); in["message"].set_valid(true); //AlertActions(in); return 0; } long JobAddedMail(CVars in) //TESTED { REQ_LONG(in, "member_id", 1, -1); REQ_LONG(in, "job_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "SELECT j.*,j.title as title2,m.email,m.firstname FROM members_jobs j LEFT JOIN members m ON m.id = j.member_id WHERE j.id = %lu AND j.member_id = %lu", in["job_id"].Long(), in["member_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("ACCOUNT/member_jobs.mailfile"); // NOW LET US DO ALERTS C_CGI_Form form2("", ""); vars2form(x, form2); out["alertemail"] = CfgReadChar("transnotif.contact"); char * server_name = getenv("SERVER_NAME"); form2.LetStr("server_name", "https://dashboard.wrenchboard.com"); form2.LetStr("site_name", "WrenchBoard"); in["title"] = "Job Added Alert"; in["message"] = "Job Added Alert"; form2.LetStr("subject", "Job Added Alert"); vars2form(in, form2); form2.LetStr("email", out["alertemail"].c_str()); form2.Email("ALERT/alert_jobs_created.mailfile"); } //AlertActions(in); return 0; } long CreateWrenchBoardGroupMail(CVars in) { REQ_LONG(in, "group_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "select g.*,m.email,m.firstname,m.lastname from members_groups g LEFT JOIN members m ON m.id = g.member_id WHERE g.id = %lu ", in["group_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("GROUP/group_added.mailfile"); } return 0; } long GroupCreateMemberMail(CVars in) { REQ_LONG(in, "group_id", 1, -1); REQ_LONG(in, "group_member_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site_name", "WrenchBoard"); if (load_db_record(x, "SELECT gm.*,m.*,e.email FROM group_members gm LEFT JOIN members_groups m ON m.id=gm.group_id LEFT JOIN members e ON e.id=gm.member_id WHERE gm.id = %lu", in["group_member_id"].Long())) { vars2form(x, form); form.LetStr("email", x["email"].c_str()); form.Email("GROUP/group_member_added.mailfile"); } return 0; return 0; } //============================================================================================================== long send_email(CVars in, CVars &out) { logfmt(logINFO, "send_email()"); long ret = PHP_API_BAD_PARAM; try { REQ_LONG(in, "whattodo", 1, -1); switch (in["whattodo"].Long()) { default: logfmt(logINFO, "Not implemented"); } } catch (bad_parameter) { out["status"] = "Unknow action supplied"; } logfmt(logINFO, "/send_email()"); return ret; } long EmailCustBalUpdt(CVars in) { REQ_LONG(in, "balance_update_id", 1, -1); C_CGI_Form form("", ""); char * server_name = getenv("SERVER_NAME"); CVars x; vars2form(x, form); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.Email("test.mailfile"); return 0; } long SendPromoEmail(CVars in) { long pmode = REQ_LONG(in, "pmode", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); vars2form(in, form); form.LetStr("email", in["email"].c_str()); switch (pmode) { case 1: form.Email("promo/promotion1.mailfile"); break; case 2: form.Email("promo/promotion2.mailfile"); break; } return 0; } long SendBalanceRequestAlert(CVars in) { REQ_LONG(in, "request_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); out["topupemail"] = CfgReadChar("transnotif.topupemail"); if (load_db_record(x, "SELECT a.*,a.amount*0.01 AS req_amount,c.*,a.ip AS ip_loc,u.name FROM customer_addbalance a LEFT JOIN customer c ON c.id=a.customer_id LEFT JOIN bko_users u ON u.id=a.csr_id WHERE a.id = '%lu' ", in["request_id"].Long())) { vars2form(x, form); form.LetStr("email", out["topupemail"].c_str()); form.Email("alerts/balancereq.mailfile"); } return 0; } long SendBalanceCompleteAlert(CVars in) { REQ_LONG(in, "request_id", 1, -1); CVars x; CVars out; C_CGI_Form form("", ""); out["topupemail"] = CfgReadChar("transnotif.topupemail"); if (load_db_record(x, "SELECT a.*,a.amount*0.01 AS req_amount,c.*,a.ip2 AS ip_loc,u.name,a.cur_balance*0.01 AS cur2, a.fin_balance*0.01 AS fin2 FROM customer_addbalance a LEFT JOIN customer c ON c.id=a.customer_id LEFT JOIN bko_users u ON u.id=a.csr_id WHERE a.id = '%lu' ", in["request_id"].Long())) { vars2form(x, form); form.LetStr("email", out["topupemail"].c_str()); form.Email("alerts/balancecomplete.mailfile"); } return 0; } long SystemStatus() { logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x; vars2form(x, form); form.LetStr("site", server_name); form.LetStr("message", server_name); form.LetStr("email", "ses66181@gmail.com"); // form.LetStr( "email", "acidumirae@gmail.com" ); form.Email("test.mailfile"); return 0l; } long StartPassResetEmail(CVars in) { //customer_id // reset_id C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars out; CVars x; load_db_record(x, "SELECT * FROM customer WHERE id = %lu", in["customer_id"].Long()); vars2form(x, form); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); /* CREATE TABLE lostpass ( id serial NOT NULL, customer_id INT REFERENCES customer(id), added TIMESTAMP DEFAULT NOW(), updated TIMESTAMP DEFAULT NOW(), loc INET, reset_link VARCHAR(200) NOT NULL, expire TIMESTAMP , status integer DEFAULT 1 ); */ load_db_record(out, "SELECT added AS lost_added,* FROM lostpass WHERE id = %lu", in["reset_id"].Long()); vars2form(out, form); form.LetStr("email", x["email"].c_str()); form.Email("start_losspass.mailfile"); //customer notification return 0; //start_losspass.mailfile } long CompletePassResetEmail(CVars in) { //customer_id // reset_id C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars out; CVars x; load_db_record(x, "SELECT * FROM customer WHERE id = %lu", in["customer_id"].Long()); vars2form(x, form); form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("email", x["email"].c_str()); form.Email("complete_losspass.mailfile"); //customer notification return 0; //start_losspass.mailfile } long CustomerAirSalePayment(CVars in) { /* payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass | status | added | balance ----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- ---------------+--------+----------------------------+--------- 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 (1 row) */ CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x, y; load_db_record(x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'", in["orderid"].c_str()); vars2form(x, form); load_db_record(y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1", x["loc_c"].c_str(), x["loc_c"].c_str()); /* country_code | country_name | continent_code | continent_name --------------+---------------+----------------+---------------- US | UNITED STATES | NA | NORTH AMERICA */ vars2form(y, form); if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance { form.LetStr("paymode", "Payment with balance"); } else { form.LetStr("paymode", "Payment with card"); } form.LetStr("server_name", "https://dashboard.wrenchboard.com"); form.LetStr("site", server_name); form.LetStr("email", x["email2"].c_str()); form.Email("topup_payment.mailfile"); //customer notification form.LetStr("email", out["topupemail"].c_str()); form.Email("topup_payment_alert.mailfile"); //customer notification return 0l; } long CustomerAirBonus(CVars in) { CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x; load_db_record(x, "select t.*,c.*,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'", in["orderid"].c_str()); vars2form(x, form); if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance { form.LetStr("paymode", "Payment with balance"); } else { form.LetStr("paymode", "Payment with card"); } form.LetStr("site", server_name); form.LetStr("email", x["email2"].c_str()); form.Email("topup_bonus_completed.mailfile"); //customer notification return 0l; } long CustomerAirSale(CVars in) { /* payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass | status | added | balance ----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- ---------------+--------+----------------------------+--------- 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 (1 row) */ CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x, y; load_db_record(x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'", in["orderid"].c_str()); vars2form(x, form); load_db_record(y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1", x["loc_c"].c_str(), x["loc_c"].c_str()); /* country_code | country_name | continent_code | continent_name --------------+---------------+----------------+---------------- US | UNITED STATES | NA | NORTH AMERICA */ vars2form(y, form); if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance { form.LetStr("paymode", "Payment with balance"); } else { form.LetStr("paymode", "Payment with card"); } form.LetStr("site", server_name); form.LetStr("email", x["email2"].c_str()); form.Email("topup_completed.mailfile"); //customer notification return 0l; } long VirtualAirSaleCustomer(CVars in) { CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x, y; load_db_record(x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'", in["orderid"].c_str()); vars2form(x, form); load_db_record(y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1", x["loc_c"].c_str(), x["loc_c"].c_str()); /* country_code | country_name | continent_code | continent_name --------------+---------------+----------------+---------------- US | UNITED STATES | NA | NORTH AMERICA */ vars2form(y, form); CVars z; load_db_record(z, "SELECT t.paymentcode,i.responsecode,i.transactionref FROM interswitch_bill_payment_advice t LEFT JOIN interswitch_transaction i ON i.detail_id=t.id WHERE t.order_id ='%s'", x["orderid"].c_str()); vars2form(z, form); if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance { form.LetStr("paymode", "Payment with balance"); } else { form.LetStr("paymode", "Payment with card"); } form.LetStr("site", server_name); form.LetStr("message", server_name); form.LetStr("email", out["topupemail"].c_str()); form.Email("virtualtopup.mailfile"); // this is alert return 0l; } void CustomerBalanceEmail(CVars in) { REQ_STRING(in, "orderid", 1, 50, "(.*)"); CVars x; C_CGI_Form form("", ""); if (load_db_record(x, "select c.*,t.*,t.added AS balance_date,appramt*0.01 AS appramt2,t.added AS trans_date,c.balance*0.01 AS balance2 from trans_balance_topup t LEFT JOIN customer c ON c.id = t.customer_id where t.orderid = '%s' AND completed IS NOT NULL", in["orderid"].c_str())) { vars2form(x, form); form.Email("balance_updated.mailfile"); } } long CustomerBalanceBonusEmail(CVars in) { //REQ_STRING( in, "orderid", 1, 50, "(.*)"); REQ_LONG(in, "customer_id", 1, -1); CVars x; C_CGI_Form form("", ""); if (load_db_record(x, "select * FROM customer WHERE id = %lu ", in["customer_id"].Long())) { vars2form(x, form); form.Email("bonus_balance.mailfile"); } return 0; } void PaymentAlert(CVars in) { } void BalanceUpdateAlert(CVars in) { REQ_STRING(in, "orderid", 1, 50, "(.*)"); CVars x; CVars out; C_CGI_Form form("", ""); out["topupemail"] = CfgReadChar("transnotif.topupemail"); if (load_db_record(x, "select c.*,t.*,t.added AS balance_date,appramt*0.01 AS appramt2 ,c.balance*0.01 AS balance2 from trans_balance_topup t LEFT JOIN customer c ON c.id = t.customer_id where t.orderid = '%s' AND completed IS NOT NULL", in["orderid"].c_str())) { vars2form(x, form); form.LetStr("email", out["topupemail"].c_str()); form.Email("alert_balance_updated.mailfile"); } } void CustomerEmailWelcome(CVars in) { long customer_id = in["user_id"].Long(); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x; load_db_record(x, "select *,email as email2 from customer WHERE id =%lu ", customer_id); vars2form(x, form); form.Email("welcome.mailfile"); } /*****************************************************************************/ long VirtualAirSaleAlert(CVars in) { /* payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass | status | added | balance ----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- ---------------+--------+----------------------------+--------- 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 (1 row) */ CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x, y; load_db_record(x, "select t.*,c.*,c.loc as loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2 from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'", in["orderid"].c_str()); vars2form(x, form); load_db_record(y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1", x["loc_c"].c_str(), x["loc_c"].c_str()); /* country_code | country_name | continent_code | continent_name --------------+---------------+----------------+---------------- US | UNITED STATES | NA | NORTH AMERICA */ vars2form(y, form); CVars z; load_db_record(z, "SELECT t.paymentcode,i.responsecode,i.transactionref FROM interswitch_bill_payment_advice t LEFT JOIN interswitch_transaction i ON i.detail_id=t.id WHERE t.order_id ='%s'", x["orderid"].c_str()); vars2form(z, form); if (in["pmode"].Long() == PAY_MODE_BALANCE) // paying with balance { form.LetStr("paymode", "Payment with balance"); } else if (in["pmode"].Long() == PAY_MODE_BONUS) // paying bonus { form.LetStr("paymode", "Bonus Payment"); } else { form.LetStr("paymode", "Payment with card"); } form.LetStr("site", server_name); form.LetStr("message", server_name); //form.LetStr( "email", "ses66181@gmail.com,oladeji@gmail.com" ); form.LetStr("email", out["topupemail"].c_str()); // form.LetStr( "email", "acidumirae@gmail.com" ); form.Email("virtualtopup.mailfile"); return 0l; } /*****************************************************************************/ void SendAccountCreateAlert(long customer_id) { CVars out; out["topupemail"] = CfgReadChar("transnotif.topupemail"); logfmt(logINFO, "SystemStatus()*************~************"); C_CGI_Form form("", ""); const char * server_name = getenv("SERVER_NAME"); CVars x, y; load_db_record(x, "SELECT *,email as email2,balance*0.01 AS balance2,dollar_balance*0.01 AS dollar_balance2 from customer WHERE id =%lu ", customer_id); vars2form(x, form); load_db_record(y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1", x["loc"].c_str(), x["loc"].c_str()); /* country_code | country_name | continent_code | continent_name --------------+---------------+----------------+---------------- US | UNITED STATES | NA | NORTH AMERICA */ vars2form(y, form); form.LetStr("site", server_name); form.LetStr("message", server_name); form.LetStr("email", out["topupemail"].c_str()); // form.LetStr( "email", "acidumirae@gmail.com" ); form.Email("alert_accountcreated.mailfile"); //alert_accountcreated.mailfile } /*****************************************************************************/ void vars2form(CVars &v, C_CGI_Form &form) { CVars::const_iterator i; for (i = v.begin(); i != v.end(); i++) { char name[30]; strsafecpy(name, i->first.c_str(), sizeof (name)); // &fee, tax, total if (strcasecmp(name, "tax") == 0 || strcasecmp(name, "total") == 0 || strcasecmp(name, "price") == 0 || strcasecmp(name, "amount") == 0 || strcasecmp(name, "shipping") == 0 || strcasecmp(name, "subtotal") == 0 || (strlen(name) >= 3 && strcasecmp(&name[strlen(name) - 3], "fee") == 0)) { form.LetStrf(name, "%.2f", i->second.Long() / 100.0); } else { form.LetStr(i->first.c_str(), i->second.c_str()); } } } /*****************************************************************************/ /* vi:ts=2 */