More changes for db migration
This commit is contained in:
parent
de0284e48a
commit
889dc02945
33 changed files with 740 additions and 100 deletions
|
@ -1,80 +0,0 @@
|
|||
import path from 'path';
|
||||
import views from 'co-views';
|
||||
const render = views(path.join(__dirname, '/../views'), { default: 'ejs' });
|
||||
import Stripe from 'stripe';
|
||||
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
|
||||
import sendgridInit from 'sendgrid';
|
||||
const sendgrid = sendgridInit(process.env.SENDGRID_KEY);
|
||||
|
||||
const from = process.env.EMAIL_FROM;
|
||||
const fromname = process.env.EMAIL_NAME;
|
||||
|
||||
export function* create() {
|
||||
const Users = this.db.Users;
|
||||
const Transactions = this.db.Transactions;
|
||||
const stripeToken = this.request.body.stripeToken;
|
||||
|
||||
const createCustomer = {
|
||||
card: stripeToken.id,
|
||||
plan: 'usd_monthly',
|
||||
email: this.session.email,
|
||||
};
|
||||
|
||||
const customer = yield stripe.customers.create(createCustomer);
|
||||
|
||||
this.assert(customer.subscription.status === 'active', 400, '{"status": "error"}');
|
||||
|
||||
delete customer.subscriptions;
|
||||
|
||||
yield Users.updateOne({ _id: this.session.user.id },
|
||||
{ $set: { stripe_customer: customer, type: 'Pro' } });
|
||||
|
||||
const transaction = {
|
||||
user_id: this.session.user.id,
|
||||
amount: customer.subscription.plan.amount,
|
||||
desc: customer.subscription.plan.name,
|
||||
date: new Date(customer.subscription.plan.created * 1000),
|
||||
};
|
||||
|
||||
yield Transactions.insertOne(transaction);
|
||||
|
||||
this.session.user.plan = 'Pro';
|
||||
this.body = { status: 'active' };
|
||||
|
||||
const html = yield render('email/inlined/pro');
|
||||
const text = `Hey, thanks for upgrading to Hostr Pro!
|
||||
|
||||
You've signed up for Hostr Pro Monthly at $6/Month.
|
||||
|
||||
— Jonathan Cremin, Hostr Founder
|
||||
`;
|
||||
|
||||
const mail = new sendgrid.Email({
|
||||
to: this.session.user.email,
|
||||
subject: 'Hostr Pro',
|
||||
from,
|
||||
fromname,
|
||||
html,
|
||||
text,
|
||||
});
|
||||
mail.addCategory('pro-upgrade');
|
||||
sendgrid.send(mail);
|
||||
}
|
||||
|
||||
export function* cancel() {
|
||||
this.assertCSRF();
|
||||
const Users = this.db.Users;
|
||||
const user = yield Users.findOne({ _id: this.session.user.id });
|
||||
|
||||
const confirmation = yield stripe.customers.cancelSubscription(
|
||||
user.stripe_customer.id,
|
||||
user.stripe_customer.subscription.id,
|
||||
{ at_period_end: true }
|
||||
);
|
||||
|
||||
yield Users.updateOne({ _id: this.session.user.id },
|
||||
{ $set: { 'stripe_customer.subscription': confirmation, type: 'Free' } });
|
||||
|
||||
this.session.user.plan = 'Pro';
|
||||
this.body = { status: 'inactive' };
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue