diff --git a/src/server/controllers/member.js b/src/server/controllers/member.js index 5265296..a295202 100755 --- a/src/server/controllers/member.js +++ b/src/server/controllers/member.js @@ -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) + }); }, }; \ No newline at end of file diff --git a/src/server/services/card/cardBehavior.js b/src/server/services/card/cardBehavior.js index cdf5c1a..58a702d 100644 --- a/src/server/services/card/cardBehavior.js +++ b/src/server/services/card/cardBehavior.js @@ -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; diff --git a/src/server/services/card/memberCard.js b/src/server/services/card/memberCard.js index 8d24989..97aac3e 100644 --- a/src/server/services/card/memberCard.js +++ b/src/server/services/card/memberCard.js @@ -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; } \ No newline at end of file diff --git a/src/server/services/member/member.js b/src/server/services/member/member.js index 730e851..43b3dd3 100755 --- a/src/server/services/member/member.js +++ b/src/server/services/member/member.js @@ -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; } } \ No newline at end of file