working on new tables for payments

This commit is contained in:
Arjun Patel
2019-01-29 19:55:32 -08:00
parent ad26f7b6fd
commit d6643c32f9
8 changed files with 154 additions and 13 deletions
+11 -6
View File
@@ -1,5 +1,13 @@
module.exports = models => {
const { Donor, Grant, Cause, Region, Organization, Charge } = models;
const {
Donor,
Grant,
Cause,
Region,
Organization,
Charge,
PaymentPlan
} = models;
Donor.hasMany(Grant, { foreignKey: 'donor_id' });
@@ -20,12 +28,9 @@ module.exports = models => {
foreignKey: 'grant_id',
otherKey: 'organization_id'
});
Grant.hasMany(Charge, { foreignKey: 'grant_id' });
Donor.hasMany(Charge, {
foreignKey: 'user_id'
});
Organization.hasMany(Charge, {
Donor.hasOne(PaymentPlan, {
foreignKey: 'user_id'
});
};
+3
View File
@@ -5,6 +5,7 @@ const Sequelize = require('sequelize'),
RegionModel = require('../models/region.model.js'),
OrganizationModel = require('../models/organization.model.js'),
UserModel = require('../models/user.model.js'),
PaymentPlanModel = require('../models/paymentplan.model'),
ChargeModel = require('../models/charge.model');
associate = require('./associate');
@@ -42,6 +43,7 @@ const Region = RegionModel(sequelize, Sequelize);
const Organization = OrganizationModel(sequelize, Sequelize);
const User = UserModel(sequelize, Sequelize);
const Charge = ChargeModel(sequelize, Sequelize);
const PaymentPlan = PaymentPlanModel(sequelize, Sequelize);
db.Donor = Donor;
db.Grant = Grant;
db.Cause = Cause;
@@ -49,6 +51,7 @@ db.Region = Region;
db.Organization = Organization;
db.User = User;
db.Charge = Charge;
db.PaymentPlan = PaymentPlan;
// make associations with created models
associate(db);
+32 -3
View File
@@ -6,16 +6,45 @@ const stripe = require('stripe')('sk_test_n8NCvCFjD1xFhGiEq6SI8CXj');
const { Donor, Organization } = db;
// Subscribe user to plan or one time charge
exports.grantCharge = async (req, res, next) => {
exports.grantCharge = (req, res, next) => {
const { stripeToken, amount, monthly } = req.body;
console.log(req.body);
const user = req.user;
findStripeId(user.id)
.then(stripeId => {
if (!stripeId) {
stripe.customers.create({});
return stripe.customers
.create({
source: stripeToken,
email: user.email
})
.then(customer => {
Donor.update(
{ stripe_id: customer.id },
{ where: { id: user.id } }
);
return customer.id;
});
}
return stripeId;
})
.then(stripeId => {
// return stripe.charges.create({
// amount,
// currency: 'usd',
// customer: stripeId
// });s
stripe.plans
.create({
product: 'prod_CbvTFuXWh7BPJH',
currency: 'usd',
interval: 'month',
amount: 10000
})
.then();
})
.then(chargeResponse => {
res.status(200).json(chargeResponse);
})
.catch(error => next(error));
// if (!monthly) {
+4
View File
@@ -5,6 +5,10 @@ module.exports = (sequelize, DataTypes) => {
primaryKey: true,
autoIncrement: true
},
stripe_id: {
type: DataTypes.UUID,
defaultValue: null
},
first_name: {
type: DataTypes.STRING,
allowNull: false
+24
View File
@@ -0,0 +1,24 @@
'use strict';
module.exports = (sequelize, DataTypes) => {
const PaymentPlan = sequelize.define('payment_plans', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
plan_id: {
type: DataTypes.UUID,
allowNull: false
},
subscription_id: {
type: DataTypes.UUID,
allowNull: false
},
amount: {
type: DataTypes.INTEGER,
allowNull: false
}
});
return PaymentPlan;
};