getslidecarddata

This commit is contained in:
Le Viet
2022-05-30 20:59:47 +07:00
parent e9f2c97da2
commit de08c434b3
4 changed files with 140 additions and 35 deletions
+6 -2
View File
@@ -124,7 +124,11 @@ module.exports = {
getSlideCardData(req, res) {
memberServices.getSlideCard(req)
.then(data => res.status(200).send(data))
.catch(error => res.status(400).send(error.errors));
.then(data => {
return res.status(201).send(data)
})
.catch(error => {
res.status(400).send(error.errors)
});
},
};
+1
View File
@@ -46,6 +46,7 @@ module.exports = (memberCardService, memberService) => {
};
cardBehavior.behaviorBH0005 = async (member) => {
return memberCardService.CARD_ADD_ALLOWED;
const weeklySpending = await memberService.weeklyMemberSpending(member);
if (weeklySpending.weekly_total == 0) {
return memberCardService.CARD_ADD_ALLOWED;
+124 -23
View File
@@ -4,8 +4,7 @@ const { forEach, invoke } = require('lodash');
const MembersCardAssign = require("../../models").MembersCardAssign;
module.exports = (memberService) => {
const cardBehaviorService = require("./cardBehavior")(this,memberService);
return {
const cardService = {
CARD_BEHAVIORS: {
BH0001: 'BH0001',
BH0002: 'BH0002',
@@ -113,7 +112,6 @@ module.exports = (memberService) => {
}
}
});
},
async getMemberCardClickTrack(memberId, cardId) {
@@ -157,8 +155,6 @@ module.exports = (memberService) => {
async getMemberCardsByType(member, cardType, limit) {
var memberId = member.id;
var result = {};
var total = 0;
var queryMain = '';
var sqlSelect = '';
var sqlCount = '';
@@ -208,7 +204,9 @@ module.exports = (memberService) => {
sqlCount = `SELECT count(a.id) `;
sqlSelect = `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 `;
queryMain = `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()`;
WHERE a.status = 1 AND a.deleted IS NULL`;
sqlCount += queryMain;
sqlSelect += queryMain + ` ORDER BY RANDOM()`;
break;
default:
sql = `select 1 from 1`;
@@ -218,36 +216,139 @@ module.exports = (memberService) => {
const results = await sequelize.query(sqlSelect, {
replacements: { member_id: memberId }
});
var testCardAllowed = this.CARD_ADD_DENIED
let resultOut = {};
let total_record = 0;
if (results[0]) {
var self = this;
forEach(results[0], async function (card) {
//console.log("card behavior: ", card.card_behavior)
var dealCardCount = 0;
var surveyCardCount = 0;
var blogCardCount = 0;
for(const card of results[0]){
let testCardAllowed = this.CARD_ADD_ALLOWED
if (cardType == 22000) {
testCardAllowed = self.verifyMemberCardDescision(card, member);
testCardAllowed = await this.verifyMemberCardDescision(card, member);
}
});
result = results[0];
console.log('testCardAllowed', testCardAllowed);
let cardCountryAllow = true;
if (card.card_country != "") {
//cardCountryAllow = false;
if (card.card_country == member.country) {
cardCountryAllow = true;
}
}
countBlock = false;
// let see i card expired
if (card.card_canexpire == 1 && card.expr_val < 0) {
countBlock = true;
} else {
if (cardType == 22000) {
if (card.button1_action == "GOOFFERS") {
if (dealCardCount > 0) {
countBlock = true;
}
if (card.card_country == "" || card.card_country == member.country) {
dealCardCount++;
}
}
if (card.button1_action == "SURVEYA") {
if (surveyCardCount > 0) {
countBlock = true;
}
surveyCardCount++;
}
if (card.button1_action == "BLOGCARD") {
if (blogCardCount > 0) {
countBlock = true;
}
blogCardCount++;
}
}
} //card is not expired
//console.log(testCardAllowed, cardCountryAllow, countBlock, (self.CARD_ADD_ALLOWED == testCardAllowed && true == cardCountryAllow && false == countBlock))
if (this.CARD_ADD_ALLOWED == testCardAllowed && true == cardCountryAllow && false == countBlock) {
//console.log(testCardAllowed, cardCountryAllow, countBlock)
suffix = total_record.toString().padStart(5, '0');
resultOut['name_' + suffix] = card.name;
resultOut['assign_id_' + suffix] = card.assign_id;
resultOut['card_id_' + suffix] = card.card_id;
resultOut['can_save_' + suffix] = card.can_save;
resultOut['short_title_' + suffix] = card.short_title;
resultOut['title_' + suffix] = card.short_title;
resultOut['background_picture_' + suffix] = card.background_picture;
resultOut['button1_' + suffix] = card.button1;
resultOut['button1_text_' + suffix] = card.button1_text;
resultOut['button1_action_' + suffix] = card.button1_action;
resultOut['expires_' + suffix] = card.card_expiration;
resultOut['template_' + suffix] = card.template;
resultOut['card_canexpire_' + suffix] = card.card_canexpire;
resultOut['card_action_type_' + suffix] = card.card_action_type;
resultOut['card_action_data_' + suffix] = card.card_action_data;
resultOut['titleshow_' + suffix] = card.titleshow;
resultOut['multiple_answer_' + suffix] = card.multiple_answer;
resultOut['use_short_title_' + suffix] = card.use_short_title;
resultOut['target_key_' + suffix] = card.target_key;
resultOut['target_text_' + suffix] = card.target_text;
resultOut['description_' + suffix] = card.description;
resultOut['long_description_' + suffix] = card.long_description;
resultOut['card_behavior_' + suffix] = card.card_behavior;
resultOut['card_type_' + suffix] = card.card_type;
resultOut['card_type_' + suffix] = card.card_type;
resultOut['card_country_' + suffix] = card.card_country;
resultOut['card_location_' + suffix] = card.card_location;
resultOut['latitude_' + suffix] = card.latitude;
resultOut['longitude_' + suffix] = card.longitude;
resultOut['card_order_' + suffix] = card.card_order;
resultOut['background_color_' + suffix] = card.background_color;
resultOut['blog_id_' + suffix] = card.blog_id;
resultOut['expiration_' + suffix] = card.expiration;
if (card.button1_action == "CARPOOL") {
sqlCarpool = `SELECT * FROM members_carpool_friends WHERE carpool_id IN (select id from members_carpool WHERE member_id =:member_id) AND status = 1`;
const carPool = await sequelize.query(sqlCarpool,
{
replacements: {
member_id: member.id
}
});
if (carPool && carPool[0].added) {
resultOut['subscribe_' + suffix] = carPool[0].added;
} else {
resultOut['subscribe_' + suffix] = "";
}
} else {
resultOut['subscribe_' + suffix] = card.subscribe;
}
total_record++;
}
};
}
const totalCards = await sequelize.query(sqlCount, {
replacements: { member_id: memberId }
});
if (totalCards[0][0]) {
total = parseInt(totalCards[0][0].count);
}
return { total: total, result: result };
console.log('total', total_record)
return { total_record: total_record, result: resultOut };
},
async verifyMemberCardDescision(cardData, member) {
var behavior = cardData.card_behavior;
var func = 'behavior' + behavior;
console.log(func)
if (func in cardBehaviorService) {
//console.log('call function ', func)
return invoke(cardBehaviorService, func, member);
console.log('call function ', func)
//console.log(await invoke(cardBehaviorService, func, member))
return await invoke(cardBehaviorService, func, member);
}
return this.CARD_ADD_ALLOWED;
}
}
const cardBehaviorService = require("./cardBehavior")(cardService, memberService);
return cardService;
}
+9 -10
View File
@@ -10,6 +10,7 @@ const MembersBankAccount = require("../../models").MembersBankAccounts;
const resetPasswordService = require("./resetPassword");
const memberCardService = require("../card").memberCard.bind(this);
const mailServiceMember = require("../mail").member;
const { memberCard } = require('../card');
console.log('card in member', memberCardService)
module.exports = {
@@ -517,11 +518,12 @@ module.exports = {
var queryMemberAverage = `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'`;
const memberAverge = await sequelize.query(queryMemberAverage, {
const memberAvg = await sequelize.query(queryMemberAverage, {
replacements: { member_id: member.id }
});
if (memberAverge[0][0]) {
memberAverage = parseFloat(memberAverge[0][0].member_average);
if (memberAvg[0][0]) {
memberAverage = parseFloat(memberAvg[0][0].member_average);
}
if (memberAverage > 0 && memberAverage > populationAverage) {
@@ -571,7 +573,7 @@ module.exports = {
}
weeklyTotal = totalWeeklySpend;
return {
over_spending: overSpending,
under_spending: underSpending,
@@ -605,13 +607,10 @@ module.exports = {
//const surveyCards = await memberCardService.getMemberSurveyCards(member_id);
//console.log(surveyCards);
console.log("card_type:", card_type);
console.log("get cards")
const member = await this.getProfile(req);
const memberCards = await memberCardService(this).getMemberCardsByType(member, parseInt(card_type), card_count);
//console.log("memberCards", memberCards)
if (surveyCards) {
}
const cards = await memberCardService(this).getMemberCardsByType(member, parseInt(card_type), card_count);
//console.log("member cards",cards);
return cards;
}
}