342 lines
14 KiB
JavaScript
342 lines
14 KiB
JavaScript
'use strict';
|
|
|
|
const request = require('request');
|
|
const db = require('../app/db')
|
|
const logger = require('../app/logger');
|
|
|
|
const CARD_REQUESTED = 1;
|
|
const CARD_HOLDER_CREATED = 10;
|
|
const CARD_OWNER_ACTIVE = 30;
|
|
const CARD_ASSIGNED = 40;
|
|
|
|
//const User = require("../app/model/cardModel.js");
|
|
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
|
|
var cards = {
|
|
createApplications: async function(req, res, next){
|
|
try {
|
|
logger.info(req.body);
|
|
var data = {
|
|
"status": req.body.status,
|
|
"limit": req.body.limit,
|
|
};
|
|
let Qstring = " SELECT id AS request_id, uid AS request_uid, * FROM members_card_request WHERE status = "+data.status+" LIMIT "+data.limit;
|
|
logger.info(Qstring);
|
|
db.query(Qstring, async function (err, result) {
|
|
|
|
if (err) throw err;
|
|
logger.info(result.rows);
|
|
let resultItem ={
|
|
"result": result.rows,
|
|
"total_record": result.rows.length
|
|
}
|
|
next(null, resultItem); // pass control to the next handler
|
|
});
|
|
} catch (error) {
|
|
await res.status(500).json({error: `Internal Server error 002 ${error} `});
|
|
}
|
|
},
|
|
createCardHolder: async function (req, res, next) {
|
|
try {
|
|
logger.info(req.body);
|
|
var data = {
|
|
"request_uid": req.body.request_uid,
|
|
"request_id": req.body.request_id,
|
|
};
|
|
|
|
let Qstring = " SELECT r.*,m.firstname,m.lastname,m.email,m.stripe_cardholder_id FROM members_card_request r " +
|
|
" LEFT JOIN members m ON m.id=r.member_id " +
|
|
" WHERE r.uid::text = '" + data.request_uid +"'";
|
|
logger.info(Qstring);
|
|
db.query(Qstring, async function (err, result) {
|
|
try {
|
|
if (err) throw err;
|
|
if ( result.rows[0].stripe_cardholder_id !=='')
|
|
{
|
|
Qstring = " UPDATE members_card_request " +
|
|
" SET card_issue_id='"+result.rows[0].stripe_cardholder_id+"' , status = "+CARD_HOLDER_CREATED+", updated = now() " +
|
|
" WHERE uid::text = '" + data.request_uid +"'";
|
|
db.query(Qstring, async function (err, result) {
|
|
|
|
let resultItem = {
|
|
"result": result.rows[0],
|
|
"stripe_cardholder_id": result.rows[0].stripe_cardholder_id,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem); // pass control to the next handler
|
|
});
|
|
}
|
|
|
|
const req_data = {
|
|
"name": result.rows[0].firstname.toString() + ' ' + result.rows[0].firstname.toString(),
|
|
"firstname": result.rows[0].firstname,
|
|
"lastname": result.rows[0].lastname,
|
|
"phone_number": result.rows[0].phone_number,
|
|
"email": result.rows[0].email,
|
|
"address": result.rows[0].address,
|
|
"city": result.rows[0].city,
|
|
"state": result.rows[0].state,
|
|
"postal_code": result.rows[0].postal_code,
|
|
"country": result.rows[0].country,
|
|
"dob_day": result.rows[0].dob_day,
|
|
"dob_month": result.rows[0].dob_month,
|
|
"dob_year": result.rows[0].dob_year,
|
|
"member_uid" : result.rows[0].member_uid,
|
|
"member_id" : result.rows[0].member_id,
|
|
};
|
|
|
|
logger.info("READY FOR STRIPE CALL ",req_data);
|
|
logger.info("READY FOR STRIPE CALL ************************************************************************ AFTER ");
|
|
|
|
const ReqParam =
|
|
{
|
|
name: req_data.name,
|
|
email: req_data.email,
|
|
phone_number: req_data.phone_number,
|
|
status: 'active',
|
|
type: 'individual',
|
|
individual: {
|
|
first_name: req_data.firstname,
|
|
last_name: req_data.lastname,
|
|
dob: {
|
|
day: req_data.dob_day,
|
|
month: req_data.dob_month,
|
|
year: req_data.dob_year
|
|
},
|
|
},
|
|
billing: {
|
|
address: {
|
|
line1: req_data.address,
|
|
city: req_data.city,
|
|
state: req_data.state,
|
|
postal_code: req_data.postal_code,
|
|
country: req_data.country,
|
|
},
|
|
},
|
|
};
|
|
|
|
logger.info("REQ=>", ReqParam);
|
|
stripe.issuing.cardholders.create(ReqParam).then((cardholder) => {
|
|
console.log(cardholder);
|
|
Qstring = " UPDATE members_card_request " +
|
|
" SET card_issue_id='"+cardholder.id+"' , status = 10, updated = now() " +
|
|
" WHERE uid::text = '" + data.request_uid +"'";
|
|
db.query(Qstring, async function (err, result) {
|
|
console.log(cardholder);
|
|
Qstring = "UPDATE members SET " +
|
|
" stripe_cardholder_id = '"+cardholder.id+"' " +
|
|
" WHERE id ="+data.member_id+" AND stripe_cardholder_id IS NULL AND uid::text = '"+data.member_uid+"'";
|
|
db.query(Qstring, async function (err, result) {
|
|
|
|
let resultItem = {
|
|
"result": cardholder,
|
|
"stripe_cardholder_id": cardholder.id,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem); // pass control to the next handler
|
|
});
|
|
});
|
|
|
|
}).catch((error) => {
|
|
console.error(error);
|
|
let resultItem = {
|
|
"result": error,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem);
|
|
});
|
|
} catch (e) {
|
|
next(e.message, null); // pass control to the next handler
|
|
}
|
|
});
|
|
} catch (error) {
|
|
await res.status(500).json({error: `Internal Server error 002 ${error} `});
|
|
}
|
|
},
|
|
createCard: async function (req, res, next) {
|
|
try {
|
|
logger.info(req.body);
|
|
var data = {
|
|
"request_uid": req.body.request_uid,
|
|
"request_id": req.body.request_id,
|
|
};
|
|
|
|
let Qstring = " SELECT r.*,m.firstname,m.lastname,m.email FROM members_card_request r " +
|
|
" LEFT JOIN members m ON m.id=r.member_id " +
|
|
" WHERE r.uid::text = '" + data.request_uid +"'";
|
|
logger.info(Qstring);
|
|
db.query(Qstring, async function (err, result) {
|
|
try {
|
|
if (err) throw err;
|
|
// , ,
|
|
const req_data = {
|
|
"name": result.rows[0].firstname.toString() + ' ' + result.rows[0].firstname.toString(),
|
|
"firstname": result.rows[0].firstname,
|
|
"lastname": result.rows[0].lastname,
|
|
"phone_number": result.rows[0].phone_number,
|
|
"email": result.rows[0].email,
|
|
"address": result.rows[0].address,
|
|
"city": result.rows[0].city,
|
|
"state": result.rows[0].state,
|
|
"postal_code": result.rows[0].postal_code,
|
|
"country": result.rows[0].country,
|
|
"dob_day": result.rows[0].dob_day,
|
|
"dob_month": result.rows[0].dob_month,
|
|
"dob_year": result.rows[0].dob_year,
|
|
};
|
|
|
|
const aggrement_ip = '91.121.146.224';
|
|
const aggrement_date = Date.now();
|
|
|
|
logger.info("READY FOR STRIPE CALL ",req_data);
|
|
logger.info("READY FOR STRIPE CALL ************************************************************************ AFTER ");
|
|
|
|
const ReqParam =
|
|
{
|
|
name: req_data.name,
|
|
email: req_data.email,
|
|
phone_number: req_data.phone_number,
|
|
status: 'active',
|
|
type: 'individual',
|
|
individual: {
|
|
first_name: req_data.firstname,
|
|
last_name: req_data.lastname,
|
|
dob: {
|
|
day: req_data.dob_day,
|
|
month: req_data.dob_month,
|
|
year: req_data.dob_year
|
|
},
|
|
},
|
|
billing: {
|
|
address: {
|
|
line1: req_data.address,
|
|
city: req_data.city,
|
|
state: req_data.state,
|
|
postal_code: req_data.postal_code,
|
|
country: req_data.country,
|
|
},
|
|
},
|
|
};
|
|
|
|
logger.info("REQ=>", ReqParam);
|
|
stripe.issuing.cardholders.create(ReqParam).then((cardholder) => {
|
|
console.log(cardholder);
|
|
|
|
Qstring = " UPDATE members_card_request SET card_issue_id='"+cardholder.id+"' , status = 10, updated = now() " +
|
|
" WHERE uid::text = '" + data.request_uid +"'";
|
|
db.query(Qstring, async function (err, result) {
|
|
console.log(cardholder);
|
|
|
|
//const cardholder = await
|
|
stripe.issuing.cardholders.update(
|
|
cardholder.id,
|
|
{
|
|
individual: {
|
|
card_issuing: {
|
|
user_terms_acceptance: {
|
|
date: aggrement_date,
|
|
ip: aggrement_ip,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
).then((cardConfirm)=>{
|
|
|
|
const card = stripe.issuing.cards.create({
|
|
cardholder: cardholder.id,
|
|
currency: 'usd',
|
|
type: 'virtual',
|
|
});
|
|
|
|
let resultItem = {
|
|
"result": cardholder,
|
|
"result_confirm": cardConfirm,
|
|
"card": card,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem); // pass control to the next handler
|
|
console.log(cardConfirm);
|
|
});
|
|
|
|
|
|
});
|
|
|
|
}).catch((error) => {
|
|
console.error(error);
|
|
let resultItem = {
|
|
"result": error,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem);
|
|
});
|
|
|
|
} catch (e) {
|
|
next(e.message, null); // pass control to the next handler
|
|
}
|
|
});
|
|
|
|
|
|
} catch (error) {
|
|
await res.status(500).json({error: `Internal Server error 002 ${error} `});
|
|
}
|
|
|
|
},
|
|
acceptCardTerms: function (req, res, next) {
|
|
|
|
const aggrement_ip = '91.121.146.224';
|
|
const aggrement_date = Date.now();
|
|
|
|
//const cardholder = await
|
|
stripe.issuing.cardholders.update(
|
|
cardholder.id,
|
|
{
|
|
individual: {
|
|
card_issuing: {
|
|
user_terms_acceptance: {
|
|
date: aggrement_date,
|
|
ip: aggrement_ip,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
).then((cardConfirm)=>{
|
|
|
|
const card = stripe.issuing.cards.create({
|
|
cardholder: cardholder.id,
|
|
currency: 'usd',
|
|
type: 'virtual',
|
|
});
|
|
|
|
let resultItem = {
|
|
"result_confirm": cardConfirm,
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem); // pass control to the next handler
|
|
console.log(cardConfirm);
|
|
});
|
|
|
|
|
|
let resultItem ={
|
|
"result": [],
|
|
"total_record": 0
|
|
}
|
|
next(null, resultItem ); // pass control to the next handler
|
|
},
|
|
activateCard: function (req, res, next) {
|
|
|
|
const card = stripe.issuing.cards.create({
|
|
cardholder: cardholder.id,
|
|
currency: 'usd',
|
|
type: 'virtual',
|
|
status: 'active',
|
|
});
|
|
|
|
let resultItem ={
|
|
"result": [],
|
|
"total_record": 5
|
|
}
|
|
next(null, resultItem ); // pass control to the next handler
|
|
|
|
},
|
|
};
|
|
module.exports = cards;
|