diff --git a/app/controllers/grant.controller.js b/app/controllers/grant.controller.js index e7fa6b9..d84b3a5 100644 --- a/app/controllers/grant.controller.js +++ b/app/controllers/grant.controller.js @@ -150,21 +150,48 @@ exports.getGrantsByDonorId = async (req, res, next) => { } }; -exports.deleteGrant = (req, res, next) => { - const { grant_id } = req.body; - const user = req.user; +exports.cancelMonthlyGrant = async (req, res, next) => { + const { grant_id } = req.params; - Grant.destroy({ where: { id: grant_id, donor_id: user.id } }) - .then(result => { - var message = 'Already Deleted'; - if (result) { - message = 'Grant Deleted'; + try { + await db.sequelize.query( + ` + UPDATE grants + SET monthly = 0 + WHERE Id = :grant_id`, + { + type: db.sequelize.QueryTypes.UPDATE, + replacements: { grant_id } } + ); - res.status(201).json({ - result, - message - }); - }) - .catch(error => next(error)); + return res.status(200).json({ + message: 'Successfully cancelled grant monthly payments' + }); + } catch (error) { + next(error); + } +}; + +exports.enableMonthlyGrant = async (req, res, next) => { + const { grant_id } = req.params; + + try { + await db.sequelize.query( + ` + UPDATE grants + SET monthly = 1 + WHERE Id = :grant_id`, + { + type: db.sequelize.QueryTypes.UPDATE, + replacements: { grant_id } + } + ); + + return res.status(200).json({ + message: 'Successfully enabled grant monthly payments' + }); + } catch (error) { + next(error); + } }; diff --git a/app/controllers/stripe.controller.js b/app/controllers/stripe.controller.js index e00b656..b5427f3 100644 --- a/app/controllers/stripe.controller.js +++ b/app/controllers/stripe.controller.js @@ -65,31 +65,31 @@ exports.grantCharge = async ({ }; // Delete grant's stripe plan under subscription -exports.deleteGrant = async (req, res, next) => { - const { grant_id } = req.body; +// exports.deleteGrant = async (req, res, next) => { +// const { grant_id } = req.body; - try { - const paymentPlans = await PaymentPlan.findAll({ where: { grant_id } }); +// try { +// const paymentPlans = await PaymentPlan.findAll({ where: { grant_id } }); - // check if there are plans for that grant - if (!paymentPlans.length) { - return res.status(400).json({ - message: 'Not a valid grant' - }); - } else { - const plan = paymentPlans[0]; +// // check if there are plans for that grant +// if (!paymentPlans.length) { +// return res.status(400).json({ +// message: 'Not a valid grant' +// }); +// } else { +// const plan = paymentPlans[0]; - //delete the plan/grant under the subscription for the user - await stripe.subscriptionItems.del(plan.sub_item_id); - //delete the plan from the main product 'Grants' - await stripe.plans.del(plan.plan_id); - } +// //delete the plan/grant under the subscription for the user +// await stripe.subscriptionItems.del(plan.sub_item_id); +// //delete the plan from the main product 'Grants' +// await stripe.plans.del(plan.plan_id); +// } - next(); - } catch (error) { - next(error); - } -}; +// next(); +// } catch (error) { +// next(error); +// } +// }; // allows the org to see their stripe account with their balance and payout to their bank exports.getExpressUILink = async (req, res, next) => { diff --git a/app/routes/donor.route.js b/app/routes/donor.route.js index bf14131..d8d505f 100644 --- a/app/routes/donor.route.js +++ b/app/routes/donor.route.js @@ -28,12 +28,18 @@ router.get('/grants/', checkAuth(roles.DONOR), grant.getGrantsByDonorId); * */ router.post('/grants/', checkAuth(roles.DONOR), grant.createGrant); -// DELETE a grant of a donor +// Cancel Monthly Payment for a grant of a donor router.delete( - '/grants/', + '/grants/monthly/:grant_id', checkAuth(roles.DONOR), - stripe.deleteGrant, - grant.deleteGrant + grant.cancelMonthlyGrant +); + +// Enable Monthly Payment for a grant of a donor +router.post( + '/grants/monthly/:grant_id', + checkAuth(roles.DONOR), + grant.enableMonthlyGrant ); // POST to get suggested organizations to distribute to