working on new tables for payments
This commit is contained in:
+11
-6
@@ -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'
|
||||
});
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user