card model
This commit is contained in:
@@ -0,0 +1,317 @@
|
||||
<? php
|
||||
namespace App\Models;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class class userCardBehaviours extends Model{
|
||||
|
||||
/*Default no bahaviour attached*/
|
||||
public function behaviour_BH0001($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Users selects 'maybe later' to cc permision or user hits 'disconnect' */
|
||||
public function behaviour_BH0002($in, $out)
|
||||
{
|
||||
global $pgconn;
|
||||
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
//$out = $in; // loadMemberDescisionData(member_id, $out);
|
||||
$query = "SELECT count(*) AS members_bank_count FROM members_bank_accounts WHERE member_id = " . $member_id . "";
|
||||
$r = pg_query($pgconn, $query);
|
||||
if ($r && pg_num_rows($r) && $f = pg_fetch_assoc($r)) {
|
||||
if ($in["last_acct"] == "" & $f["members_bank_count"] == 0) {
|
||||
// no account data
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Users selects 'maybe later' to gmail permision*/
|
||||
public function behavior_BH0003($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
|
||||
$query = "SELECT count(id) as email_pull_atempt FROM oauth2_pull_jobs WHERE member_id = " . $member_id . "";
|
||||
$r = pg_query($pgconn, $query);
|
||||
if ($r && pg_num_rows($r) && $f = pg_fetch_assoc($r)) {
|
||||
if ($in["last_email"] == "" & $f["email_pull_atempt"] == 0) {
|
||||
// no account data
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*No Credit Card & Email','Users selects ''maybe later'' to gmail & cc permision*/
|
||||
public function behavior_BH0004($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
|
||||
$query = "SELECT count(id) as email_pull_atempt FROM oauth2_pull_jobs WHERE member_id = " . $member_id . "";
|
||||
$r = pg_query($pgconn, $query);
|
||||
if ($r && pg_num_rows($r) && $f = pg_fetch_assoc($r)) {
|
||||
if ($in["last_email"] == "" & $f["email_pull_atempt"] == 0) {
|
||||
// no account data
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
//
|
||||
|
||||
/*CC & email synced BUT no Transactions or Transactions cease for 7 days*/
|
||||
public function behavior_BH0005($member, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$this->weeklyMemberSpending($member, $out);
|
||||
if ($out["weekly_total"] == 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*User didn't set budget on sign-up*/
|
||||
public function behavior_BH0006($member, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$out = $member;
|
||||
if ($out["max_budget"] == 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Timezone hits a certain time, card displays for 1 hour.*/
|
||||
public function behavior_BH0007($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Users spending exceeds budget, card displayed on Tuesdays & Fridays*/
|
||||
public function behavior_BH0008($member, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$this->weeklyMemberSpending($member, $out);
|
||||
if ($out["over_spending"] > 0 && $out["under_spending"] == 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Users spending falls below budget, card displayed on Tuesdays & Fridays*/
|
||||
public function behavior_BH0009($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$this->weeklyMemberSpending($member, $out);
|
||||
if ($out["under_spending"] > 0 && $out["over_spending"] == 0 && $out["user_budget_percentbelow"] > 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Use selects 'allow' to GPS permission*/
|
||||
public function behavior_BH0010($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
if (enableGPS($member_id)) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*CC Synced, Email Synced, Transations coming through, GPS Sycned*/
|
||||
public function behavior_BH0011($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
|
||||
$out = $in; // loadMemberDescisionData(member_id, $out);
|
||||
$member_id = $in['id'];
|
||||
if (enableGPS($member_id) == false && $out["last_acct"] != "" && $out["last_email"] != "") {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Users selects 'no' to GPS permission*/
|
||||
public function behavior_BH0013($in, $out)
|
||||
{
|
||||
// for version 01, the only way is if I see no GPS entery
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
if (enableGPS($member_id) == false) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Back office identifies a 'Uber' receipt*/
|
||||
public function behavior_BH0012($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$member_id = $in['id'];
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*User Spending Above Average*/
|
||||
public function behavior_BH0014($member, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$this->weeklyMemberSpending($member, $out);
|
||||
if ($out["user_budget_percentabove"] > 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*User Spending Below Average*/
|
||||
public function behavior_BH0015($member, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
$this->weeklyMemberSpending($member, $out);
|
||||
if ($out["user_budget_percentbelow"] > 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Show if The User Country is Known*/
|
||||
public function behavior_BH0016($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
/* $member_id = $in['id'];
|
||||
detectMemberLocation($member_id, $out); */
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*Show if The User Country Not Known*/
|
||||
public function behavior_BH0017($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
/* $member_id = $in['id'];
|
||||
detectMemberLocation($member_id, $out); */
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/*No Budgt Set*/
|
||||
public function behavior_BH0018($in, $out)
|
||||
{
|
||||
$ret = CARD_ADD_DENIED;
|
||||
/* $member_id = $in['id'];
|
||||
detectMemberLocation($member_id, $out); */
|
||||
if ($in["min_budget"] + $in["max_budget"] == 0) {
|
||||
$ret = CARD_ADD_ALLOWED;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function enableGPS($member_id)
|
||||
{
|
||||
global $pgconn_gps;
|
||||
$r = pg_query($pgconn_gps, "SELECT count(*) as num FROM members_tracking WHERE member_id=" . $member_id . "");
|
||||
if ($r && pg_num_rows($r) && $f = pg_fetch_assoc($r)) {
|
||||
if ($f['num'] > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function weeklyMemberSpending($member, &$out)
|
||||
{
|
||||
{
|
||||
global $pgconn;
|
||||
$member_id = $member['id'];
|
||||
$out["over_spending"] = "0";
|
||||
$out["under_spending"] = "0";
|
||||
$out["weekly_total"] = "0";
|
||||
|
||||
$total_bank = 0;
|
||||
$total_email = 0;
|
||||
$total_weekly_spend = 0;
|
||||
|
||||
// loadMemberDescisionData( member_id, out);
|
||||
$out["user_budget_percentbelow"] = "0";
|
||||
$out["user_budget_percentabove"] = "0";
|
||||
|
||||
// LOCAL AVERAGE -----------------------------------------------
|
||||
$out["user_less_localavergperm"] = "0";
|
||||
$out["user_more_localavergperm"] = "0"; // we start with zero
|
||||
$out["population_average"] = 0; // we start with zero
|
||||
$out["member_average"] = 0; // we start with zero
|
||||
|
||||
$population = fetchRow("SELECT avg(amount) *0.01 AS population_average FROM members_bankimport WHERE category IN (SELECT category FROM activity_listcategory) AND currency='USD'");
|
||||
if ($population) {
|
||||
$out['population_average'] = $population['population_average'];
|
||||
}
|
||||
$member_average = fetchRow("SELECT avg(amount) *0.01 AS member_average FROM members_bankimport WHERE category IN (SELECT category FROM activity_listcategory) AND member_id = " . $member_id . " AND currency='USD'");
|
||||
if ($member_average) {
|
||||
$out['member_average'] = $member_average['member_average'];
|
||||
}
|
||||
if ($out['member_average'] > 0 && $out['member_average'] > $out['population_average']) {
|
||||
$out["user_more_localavergperm"] = $out['member_average'] - $out['population_average'];
|
||||
}
|
||||
if ($out['member_average'] > 0 && $out['member_average'] < $out['population_average']) {
|
||||
$out["user_less_localavergperm"] = $out['population_average'] - $out['member_average'];
|
||||
}
|
||||
// END LOCAL AVERAGE -------------------------------------
|
||||
|
||||
$total_weekly_budget = ($member["min_budget"] + $member["max_budget"]) / 200;
|
||||
|
||||
// bank import total
|
||||
$bankImport = fetchRow("SELECT * FROM (SELECT round(0.01*sum(amount),2) AS total FROM members_bankimport
|
||||
WHERE member_id= " . $member_id . " AND LOWER(category) IN (SELECT LOWER(category) FROM activity_listcategory)
|
||||
AND date_trunc('day', time) > (current_date - 8)
|
||||
AND date_trunc('day', time) < current_date) AS c WHERE c.total IS NOT NULL");
|
||||
|
||||
if ($bankimport) {
|
||||
$total_bank = $bankImport["total"];
|
||||
}
|
||||
|
||||
$totalEmail = fetchRow("SELECT * FROM (SELECT round(sum(a.cost),2) AS total
|
||||
FROM parsedemail_item a, trackedemail_item b WHERE b.id=a.trackedemail_item_id
|
||||
AND b.member_id= " . $member_id . " AND a.dup_id IS NULL AND date_trunc('day', a.travel_date_end) > (current_date - 8)
|
||||
AND date_trunc('day', a.travel_date_end) < current_date) AS c WHERE c.total IS NOT NULL");
|
||||
|
||||
if ($totalEmail) {
|
||||
$total_email = $totalEmail["total"];
|
||||
}
|
||||
|
||||
$total_weekly_spend = $total_bank + $total_email;
|
||||
|
||||
if ($total_weekly_spend > $total_weekly_budget && $total_weekly_budget > 0) {
|
||||
$over_spending = $total_weekly_spend - $total_weekly_budget;
|
||||
$out["over_spending"] = $over_spending;
|
||||
$out["user_budget_percentabove"] = ($over_spending / $total_weekly_budget);
|
||||
}
|
||||
|
||||
if ($total_weekly_budget > $total_weekly_spend && $total_weekly_budget > 0) {
|
||||
$under_spending = $total_weekly_budget - $total_weekly_spend;
|
||||
$out["under_spending"] = $under_spending;
|
||||
$out["user_budget_percentbelow"] = ($under_spending / $total_weekly_budget);
|
||||
}
|
||||
|
||||
$out["weekly_total"] = $total_weekly_spend;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function detectMemberLocation($member_id, &$out)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,373 @@
|
||||
<?php
|
||||
namespace App\Models;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class userCards extends Model{
|
||||
|
||||
/**
|
||||
* Called during initialization.
|
||||
* Connects database now.
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function loadSliderCard($in, &$out)
|
||||
{
|
||||
global $pgconn;
|
||||
$retvel = 0;
|
||||
$total_record = 0;
|
||||
$status = 'OK';
|
||||
$card_type = $in['card_type'];
|
||||
$card_count = $in['card_count'];
|
||||
$member_id = $in['member_id'];
|
||||
$out['status'] = $status;
|
||||
$out['session_valid'] = '';
|
||||
$member = getMember($member_id);
|
||||
if ($member) {
|
||||
$survey = $this->getCardBySurvey($member);
|
||||
$this->getCardsByType($out, $member, $card_type, $card_count);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private function getCardBySurvey($member)
|
||||
{
|
||||
global $pgconn;
|
||||
$member_id = $member['id'];
|
||||
$q = "SELECT card_id FROM members_onboarding_survey mos
|
||||
LEFT JOIN onboarding_survey_cards ca ON ca.answers_key = mos.answers_key
|
||||
LEFT JOIN main_cards a ON a.id=ca.card_id
|
||||
WHERE mos.member_id = " . $member_id . " AND a.status = 1
|
||||
AND card_id NOT IN (SELECT card_id FROM members_card_assign WHERE member_id =" . $member_id . " AND status=1)
|
||||
GROUP BY card_id";
|
||||
$r = pg_query($pgconn, $q);
|
||||
if ($r && pg_num_rows($r) && $f = pg_fetch_assoc($r)) {
|
||||
return $f;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function getCardsByType(&$out, $member, $card_type, $limit = 10)
|
||||
{
|
||||
global $pgconn;
|
||||
$member_id = $member['id'];
|
||||
switch ($card_type) {
|
||||
case 33000:
|
||||
$query = "SELECT ca.id AS assign_id, ca.subscribe, a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data,adr.latitude,adr.longitude,
|
||||
EXTRACT(DAY FROM (CASE WHEN a.card_expiration IS NULL THEN now() -now() ELSE a.card_expiration -now() END)) AS expr_val, a.card_canexpire
|
||||
FROM main_cards a
|
||||
LEFT JOIN card_actions b ON (b.id=a.card_action_id)
|
||||
LEFT JOIN address adr ON adr.id = a.card_location
|
||||
LEFT JOIN members_card_assign ca ON ca.card_id=a.id AND ca.member_id=" . $member_id . " AND ca.status=1
|
||||
WHERE a.status = 1 AND a.deleted IS NULL AND a.button1_action IN ('GOOFFERS','CARPOOL') ORDER BY a.card_order ASC";
|
||||
break;
|
||||
case 22000:
|
||||
$query = "SELECT ca.id AS assign_id, ca.subscribe, a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data,adr.latitude,adr.longitude,ca.trigger_key,ca.message,ca.cat,
|
||||
EXTRACT(DAY FROM (CASE WHEN a.card_expiration IS NULL THEN now() -now() ELSE a.card_expiration -now() END)) AS expr_val, a.card_canexpire
|
||||
FROM members_card_assign ca
|
||||
LEFT JOIN main_cards a ON a.id=ca.card_id
|
||||
LEFT JOIN address adr ON adr.id = a.card_location
|
||||
LEFT JOIN card_actions b ON (b.id=a.card_action_id)
|
||||
WHERE ca.member_id = " . $member_id . " AND ca.status =1 AND a.status=1 AND show_area IN (" . CARD_LOCATION_DEFAULT . "," . CARD_LOCATION_MAINFEED . ") AND a.deleted IS NULL AND ca.subscribe IS NULL AND ca.completed IS NULL ORDER BY a.card_order ASC";
|
||||
break;
|
||||
|
||||
case 55000:
|
||||
$query = "SELECT ca.id AS assign_id, ca.subscribe, a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data,adr.latitude,adr.longitude,ca.trigger_key,ca.message,ca.cat,
|
||||
EXTRACT(DAY FROM (CASE WHEN a.card_expiration IS NULL THEN now() -now() ELSE a.card_expiration -now() END)) AS expr_val, a.card_canexpire
|
||||
FROM members_card_assign ca
|
||||
LEFT JOIN main_cards a ON a.id=ca.card_id
|
||||
LEFT JOIN address adr ON adr.id = a.card_location
|
||||
LEFT JOIN card_actions b ON (b.id=a.card_action_id)
|
||||
WHERE ca.member_id = " . $member_id . " AND a.button1_action IN ('GOOFFERS') AND ca.subscribe IS NOT NULL ORDER BY ca.subscribe ASC";
|
||||
break;
|
||||
|
||||
case 11000:
|
||||
$query = "SELECT a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data
|
||||
FROM main_cards a LEFT JOIN card_actions b ON (b.id=a.card_action_id)
|
||||
WHERE a.status = 1 AND a.deleted IS NULL ORDER BY RANDOM()";
|
||||
break;
|
||||
}
|
||||
$deal_card_count = 0;
|
||||
$survey_card_count = 0;
|
||||
$blog_card_count = 0;
|
||||
$r = pg_query($pgconn, $query);
|
||||
$out['total_record_raw'] = pg_num_rows($r);
|
||||
$out['total_record'] = pg_num_rows($r);
|
||||
$out['retval'] = PHP_API_OK;
|
||||
$out['internal_return'] = PHP_API_OK;
|
||||
$query = $query . " LIMIT " . $limit . "";
|
||||
$r = pg_query($pgconn, $query);
|
||||
$result = [];
|
||||
if ($r && $total_record_raw = pg_num_rows($r)) {
|
||||
$ic = 0;
|
||||
while ($f = pg_fetch_assoc($r)) {
|
||||
$test_card_allowed = CARD_ADD_ALLOWED;
|
||||
if ($card_type == 22000) {
|
||||
$test_card_allowed = verifyMemberCardDescision($f, $member, $out);
|
||||
}
|
||||
$card_country_allow = true;
|
||||
|
||||
if ($f["card_country"] != "") {
|
||||
$card_country_allow = false;
|
||||
|
||||
if ($f["card_country"] == $member["country"]) {
|
||||
$card_country_allow = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$count_block = false;
|
||||
|
||||
// let see i card expired
|
||||
$expr_value = $f["expr_val"];
|
||||
if ($f["card_canexpire"] == 1 && $expr_value < 0) {
|
||||
$count_block = true;
|
||||
} else {
|
||||
if ($card_type == 22000) {
|
||||
|
||||
if ($f["button1_action"] == "GOOFFERS") {
|
||||
if ($deal_card_count > 0) {
|
||||
$count_block = true;
|
||||
}
|
||||
if ($f["card_country"] == "" || $f["card_country"] == $member["country"]) {
|
||||
$deal_card_count++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($f["button1_action"] == "SURVEYA") {
|
||||
if ($fsurvey_card_count > 0) {
|
||||
$count_block = true;
|
||||
}
|
||||
$survey_card_count++;
|
||||
}
|
||||
|
||||
if ($f["button1_action"] == "BLOGCARD") {
|
||||
if ($blog_card_count > 0) {
|
||||
$count_block = true;
|
||||
}
|
||||
$blog_card_count++;
|
||||
}
|
||||
|
||||
}
|
||||
} //card is not expired
|
||||
|
||||
if (CARD_ADD_ALLOWED == $test_card_allowed && true == $card_country_allow && false == $count_block) {
|
||||
$suffix = str_pad($ic, 5, '0', STR_PAD_LEFT);
|
||||
//fillSuffixCard($out, $f, $suffix);
|
||||
$out['name_' . $suffix] = $f['name'];
|
||||
$out['assign_id_' . $suffix] = $f['assign_id'];
|
||||
$out['card_id_' . $suffix] = $f['card_id'];
|
||||
$out['can_save_' . $suffix] = $f['can_save'];
|
||||
$out['short_title_' . $suffix] = $f['short_title'];
|
||||
$out['title_' . $suffix] = $f['short_title'];
|
||||
$out['background_picture_' . $suffix] = $f['background_picture'];
|
||||
$out['button1_' . $suffix] = $f['button1'];
|
||||
$out['button1_text_' . $suffix] = $f['button1_text'];
|
||||
$out['button1_action_' . $suffix] = $f['button1_action'];
|
||||
$out['expires_' . $suffix] = $f['card_expiration'];
|
||||
$out['template_' . $suffix] = $f['template'];
|
||||
$out['card_canexpire_' . $suffix] = $f['card_canexpire'];
|
||||
$out['card_action_type_' . $suffix] = $f['card_action_type'];
|
||||
$out['card_action_data_' . $suffix] = $f['card_action_data'];
|
||||
$out['titleshow_' . $suffix] = $f['titleshow'];
|
||||
$out['multiple_answer_' . $suffix] = $f['multiple_answer'];
|
||||
$out['use_short_title_' . $suffix] = $f['use_short_title'];
|
||||
$out['target_key_' . $suffix] = $f['target_key'];
|
||||
$out['target_text_' . $suffix] = $f['target_text'];
|
||||
$out['description_' . $suffix] = $f['description'];
|
||||
$out['long_description_' . $suffix] = $f['long_description'];
|
||||
$out['card_behavior_' . $suffix] = $f['card_behavior'];
|
||||
$out['card_type_' . $suffix] = $f['card_type'];
|
||||
$out['card_time_' . $suffix] = $f['card_time'];
|
||||
$out['card_country_' . $suffix] = $f['card_country'];
|
||||
$out['card_location_' . $suffix] = $f['card_location'];
|
||||
$out['latitude_' . $suffix] = $f['latitude'];
|
||||
$out['longitude_' . $suffix] = $f['longitude'];
|
||||
$out['card_order_' . $suffix] = $f['card_order'];
|
||||
$out['background_color_' . $suffix] = $f['background_color'];
|
||||
$out['blog_id_' . $suffix] = $f['blog_id'];
|
||||
$out['expiration_' . $suffix] = $f['expiration'];
|
||||
if ($f["button1_action"] == "CARPOOL") {
|
||||
|
||||
$carPool = fetchRow("SELECT * FROM members_carpool_friends WHERE carpool_id IN (select id from members_carpool WHERE member_id = " . $member_id . ") AND status = 1");
|
||||
|
||||
if ($carPool && $carPool['added']) {
|
||||
$out['subscribe_' . $suffix] = $carPool["added"];
|
||||
} else {
|
||||
$out['subscribe_' . $suffix] = "";
|
||||
}
|
||||
|
||||
} else {
|
||||
$out['subscribe_' . $suffix] = $f["subscribe"];
|
||||
}
|
||||
$ic++;
|
||||
}
|
||||
}
|
||||
$out['total_record'] = $ic;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function verifyMemberCardDescision($cardData, $memberData, &$out)
|
||||
{
|
||||
$permCard = CARD_ADD_ALLOWED;
|
||||
$behaviour = $cardData["card_behavior"];
|
||||
|
||||
if (function_exists("behaviour_" . $behaviour)) {
|
||||
$permCard = call_user_func("behaviour_" . $behaviour, $memberData, $out);
|
||||
} else {
|
||||
$permCard = CARD_ADD_ALLOWED;
|
||||
}
|
||||
|
||||
return $permCard;
|
||||
}
|
||||
|
||||
function saveDashCard($in, &$out)
|
||||
{
|
||||
$ret = PHP_API_BAD_PARAM;
|
||||
$member_id = $in['member_id'];
|
||||
$card_id = $in['card_id'];
|
||||
$out["saved_card_id"] = "0";
|
||||
$saveCard = fetchRow("SELECT id FROM member_saved_cards WHERE member_id=" . $member_id . " AND card_id=" . $card_id . "");
|
||||
|
||||
if (empty($saveCard)) {
|
||||
$insertCard = "INSERT INTO member_saved_cards (member_id,card_id) VALUES (" . $member_id . "," . $card_id . ") RETURNING id";
|
||||
$out["saved_card_id"] = insertQuery($insertCard);
|
||||
if ($out['saved_card_id'] > 0) {
|
||||
$ret = PHP_API_OK;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function loadSavedCard($in, &$out)
|
||||
{
|
||||
$ret = PHP_API_BAD_PARAM;
|
||||
|
||||
$member_id = $in['member_id'];
|
||||
|
||||
$out["total_record"] = 0;
|
||||
$out['session_valid'] = '';
|
||||
$out['internal_return'] = PHP_API_OK;
|
||||
$saveCards = selectData("SELECT m.id AS saved_card_id, mc.*,mc.id AS card_id FROM member_saved_cards m LEFT JOIN main_cards mc ON m.card_id = mc.id WHERE m.member_id = " . $member_id . " AND m.status = 1");
|
||||
if ($saveCards != null) {
|
||||
$out["total_record"] = pg_num_rows($saveCards);
|
||||
$ic = 0;
|
||||
|
||||
while ($f = pg_fetch_assoc($saveCards)) {
|
||||
$suffix = str_pad($ic, 5, '0', STR_PAD_LEFT);
|
||||
$out['name_' . $suffix] = $f['name'];
|
||||
$out['short_title_' . $suffix] = $f['short_title'];
|
||||
$out['title_' . $suffix] = $f['title'];
|
||||
$out['description_' . $suffix] = $f['description'];
|
||||
$out['short_title_' . $suffix] = $f['short_title'];
|
||||
$out['title_' . $suffix] = $f['short_title'];
|
||||
$out['background_picture_' . $suffix] = $f['background_picture'];
|
||||
$out['button1_' . $suffix] = $f['button1'];
|
||||
$out['button1_text_' . $suffix] = $f['button1_text'];
|
||||
$out['button1_action_' . $suffix] = $f['button1_action'];
|
||||
$out['can_save_' . $suffix] = $f['can_save'];
|
||||
$out['card_id_' . $suffix] = $f['card_id'];
|
||||
$out['template_' . $suffix] = $f['template'];
|
||||
$out['card_canexpire_' . $suffix] = $f['card_canexpire'];
|
||||
$out['card_canexpire_' . $suffix] = $f['card_canexpire'];
|
||||
$out['expires_' . $suffix] = $f['card_expiration'];
|
||||
//$out['card_action_type_' . $suffix] = $f['card_action_type'];
|
||||
//$out['card_action_data_' . $suffix] = $f['card_action_data'];
|
||||
$out['titleshow_' . $suffix] = $f['titleshow'];
|
||||
$ic++;
|
||||
}
|
||||
}
|
||||
$ret = PHP_API_OK;
|
||||
$out["status"] = "OK";
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function userTrackCardClick($in, &$out)
|
||||
{
|
||||
$ret = PHP_API_BAD_PARAM;
|
||||
$member_id = $in['member_id'];
|
||||
$card_id = $in['card_id'];
|
||||
|
||||
processCard($in, $out); // see if cleanout is needed
|
||||
|
||||
$insertCard = "INSERT INTO members_cardclicktrack (member_id,card_id) VALUES (" . $member_id . "," . $card_id . ") RETURNING id";
|
||||
$out["card_track_id"] = insertQuery($insertCard);
|
||||
if ($out['card_track_id'] > 0) {
|
||||
$ret = PHP_API_OK;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function processCard($in, &$out)
|
||||
{
|
||||
|
||||
$ret = PHP_API_BAD_PARAM;
|
||||
$member_id = $in['member_id'];
|
||||
$card_id = $in['card_id'];
|
||||
|
||||
$card = fetchRow("SELECT id,button1_action,title,expiration FROM main_cards WHERE id=" . $card_id . "");
|
||||
if ($card) {
|
||||
if ($card["button1_action"] == "CARPOOL") {
|
||||
updateQuery("UPDATE members_card_assign SET status = 0,completed=now(),updated=now() WHERE card_id=" . $card_id . " AND member_id=" . $member_id . "");
|
||||
}
|
||||
|
||||
if ($card["expiration"] == 100) {
|
||||
updateQuery("UPDATE members_card_assign SET status = 0,updated=now() WHERE card_id=" . $card_id . " AND member_id=" . $member_id . "");
|
||||
}
|
||||
|
||||
// let us see if this is a dynamic card
|
||||
$assignCard = fetchRow("SELECT mca.id AS assign_id,mc.dynamic_key,et.expiration,EXTRACT(EPOCH FROM now() - mca.updated)/3600 AS card_age
|
||||
FROM members_card_assign mca LEFT JOIN main_cards mc ON mc.id=mca.card_id LEFT JOIN email_trigger et ON et.dynamic_key = mc.dynamic_key
|
||||
WHERE mca.member_id =" . $member_id . " AND mca.trigger_key IS NOT NULL AND mca.card_id = " . $card_id . " ");
|
||||
if ($assignCard) {
|
||||
if ($assignCard["expiration"] == "EXP00002") {
|
||||
// rule 1 expire on first contact
|
||||
updateQuery("UPDATE members_card_assign SET status = 0 WHERE id= " . $assignCard['assign_id'] . " AND member_id=" . $member_id . "");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function userCardAdd($member_id, $card_id, &$out)
|
||||
{
|
||||
global $pgconn;
|
||||
$ret = PHP_API_BAD_PARAM;
|
||||
$assignCard = fetchRow("SELECT id AS assign_id,status AS card_status FROM members_card_assign WHERE card_id=" . $card_id . " AND member_id=" . $member_id . " AND status IN (0,1)");
|
||||
|
||||
if ($assignCard) {
|
||||
if ($assignCard['card_status'] == 0) {
|
||||
$click = fetchRow("SELECT expiration FROM members_cardclicktrack mc LEFT JOIN main_cards a ON a.id=mc.card_id WHERE a.id=" . $card_id . " AND mc.member_id=" . $member_id . " LIMIT 1");
|
||||
if ($click && $click['expiration'] == 0) {
|
||||
$out["status"] = "This card is expired";
|
||||
} else {
|
||||
$ret = PHP_API_OK;
|
||||
}
|
||||
$ret = updateQuery("UPDATE members_card_assign SET status = 1, updated=NOW() WHERE id = " . $assignCard['assign_id'] . " AND member_id = " . $member_id . "");
|
||||
|
||||
} else {
|
||||
$out["status"] = "This card was already added";
|
||||
}
|
||||
} else {
|
||||
//insert assign card
|
||||
$insertCard = "INSERT INTO members_card_assign (card_id,member_id) VALUES (" . $card_id . "," . $member_id . ") RETURNING id";
|
||||
$out['id'] = insertQuery($insertCard);
|
||||
if ($out['id'] > 0) {
|
||||
$ret = PHP_API_OK;
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user