const GraphQLClient = require("graphql-request").GraphQLClient;
const path = require("path");
const queries = require("../graphql-client/queries");
const Dinero = require("dinero.js");

require("dotenv").config({
  path: path.resolve(
    process.cwd(),
    `.env.${process.env.NODE_ENV || "development"}`
  ),
});
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);

exports.payment = async (req, res) => {
  const { amount, stripe_acct_id } = req.body;

  try {
    await stripe.paymentIntents
      .create(
        {
          payment_method_types: ["card"],
          amount: amount,
          currency: "cad",
          application_fee_amount: 50,
        },
        {
          stripeAccount: stripe_acct_id,
        }
      )
      .then(function (paymentIntent) {
        try {
          return res.send({
            clientSecret: paymentIntent.client_secret,
          });
        } catch (err) {
          return res.status(500).send({
            error: err.message,
          });
        }
      });
  } catch (error) {
    console.log("error", error);
    res.status(400).send(error);
  }
};

exports.mobile_payment = async (req, res) => {
  const { amount, stripe_acct_id } = req.body;

  try {
    await stripe.paymentIntents
      .create(
        {
          //Pull the amounts from the payment request.
          payment_method_types: ["card"],
          amount: amount,
          currency: "cad",
          application_fee_amount: 50,
        },
        {
          stripeAccount: stripe_acct_id,
        }
      )
      .then(function (paymentIntent) {
        try {
          return res.send({
            clientSecret: paymentIntent.client_secret,
          });
        } catch (err) {
          return res.status(500).send({
            error: err.message,
          });
        }
      });
  } catch (error) {
    console.log("error", error);
    res.status(400).send(error);
  }
};
