const express = require('express');
const { PermissionMiddlewareCreator, RecordSerializer } = require('forest-express-mongoose');
const superagent = require('superagent');
const { orders } = require('../models');
const router = express.Router();
const permissionMiddlewareCreator = new PermissionMiddlewareCreator('users');
router.get('/users/:recordId/relationships/razorpayPayments', permissionMiddlewareCreator.details(), async (request, response, next) => {
const razorpayPaymentSerializer = new RecordSerializer({modelName: 'razorpayPayments'});
const { recordId } = request.params;
const userOrders = await orders.find({ user: recordId });
const fetchPaymentsFromApi = [];
userOrders.forEach((record) => {
let fetchPayment = superagent.get(`https://${process.env.RAZORPAY_KEY_ID}:${process.env.RAZORPAY_KEY_SECRET}@api.razorpay.com/v1/payments/${record.payment_ref}`)
.then((res) => JSON.parse(res.text))
fetchPaymentsFromApi.push(fetchPayment);
return Promise.all(fetchPaymentsFromApi)
.then((res) => razorpayPaymentSerializer.serialize(res))
.then((recordsSerialized) => response.send({
meta: { count: recordsSerialized.data.length },
console.log(chalk.red('error with razorpay api call =>', e.response.res.text));
return response.send({});
router.get('/users/:recordId/relationships/razorpayOrders', permissionMiddlewareCreator.details(), async (request, response, next) => {
const razorpayOrderSerializer = new RecordSerializer({modelName: 'razorpayOrders'});
const { recordId } = request.params;
const userOrders = await orders.find({ user: recordId });
const fetchPaymentsFromApi = [];
userOrders.forEach((record) => {
let fetchPayment = superagent.get(`https://${process.env.RAZORPAY_KEY_ID}:${process.env.RAZORPAY_KEY_SECRET}@api.razorpay.com/v1/orders/${record.order_ref}`)
.then((res) => JSON.parse(res.text))
fetchPaymentsFromApi.push(fetchPayment);
return Promise.all(fetchPaymentsFromApi)
.then((res) => razorpayOrderSerializer.serialize(res))
.then((recordsSerialized) => response.send({
meta: { count: recordsSerialized.data.length },
console.log(chalk.red('error with razorpay api call =>', e.response.res.text));
return response.send({});