Refactored /api/paypal, /api/permissions, /api/reset /api/sessions, /api/stats
This commit is contained in:
@@ -1,13 +1,6 @@
|
||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { app } from "@/firebase";
|
||||
import {
|
||||
getFirestore,
|
||||
collection,
|
||||
getDocs,
|
||||
setDoc,
|
||||
doc,
|
||||
} from "firebase/firestore";
|
||||
import client from "@/lib/mongodb";
|
||||
import { withIronSessionApiRoute } from "iron-session/next";
|
||||
import { sessionOptions } from "@/lib/session";
|
||||
import axios from "axios";
|
||||
@@ -19,7 +12,7 @@ import { getAccessToken } from "@/utils/paypal";
|
||||
import moment from "moment";
|
||||
import { Group } from "@/interfaces/user";
|
||||
|
||||
const db = getFirestore(app);
|
||||
const db = client.db(process.env.MONGODB_DB);
|
||||
|
||||
export default withIronSessionApiRoute(handler, sessionOptions);
|
||||
|
||||
@@ -60,33 +53,33 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
const dateToBeAddedTo = !subscriptionExpirationDate
|
||||
? today
|
||||
: moment(subscriptionExpirationDate).isAfter(today)
|
||||
? moment(subscriptionExpirationDate)
|
||||
: today;
|
||||
? moment(subscriptionExpirationDate)
|
||||
: today;
|
||||
|
||||
const updatedExpirationDate = dateToBeAddedTo.add(
|
||||
duration,
|
||||
duration_unit
|
||||
);
|
||||
await setDoc(
|
||||
doc(db, "users", req.session.user!.id),
|
||||
|
||||
await db.collection("users").updateOne(
|
||||
{ id: req.session.user!.id },
|
||||
{
|
||||
subscriptionExpirationDate: updatedExpirationDate.toISOString(),
|
||||
status: "active",
|
||||
},
|
||||
{ merge: true }
|
||||
$set: {
|
||||
subscriptionExpirationDate: updatedExpirationDate.toISOString(),
|
||||
status: "active",
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
try {
|
||||
await setDoc(doc(db, "paypalpayments", v4()), {
|
||||
await db.collection("paypalpayments").insertOne({
|
||||
id: v4(),
|
||||
orderId: id,
|
||||
userId: req.session.user!.id,
|
||||
status: request.data.status,
|
||||
createdAt: new Date().toISOString(),
|
||||
value:
|
||||
request.data.purchase_units[0].payments.captures[0].amount.value,
|
||||
currency:
|
||||
request.data.purchase_units[0].payments.captures[0].amount
|
||||
.currency_code,
|
||||
value: request.data.purchase_units[0].payments.captures[0].amount.value,
|
||||
currency: request.data.purchase_units[0].payments.captures[0].amount.currency_code,
|
||||
subscriptionDuration: duration,
|
||||
subscriptionDurationUnit: duration_unit,
|
||||
subscriptionExpirationDate: updatedExpirationDate.toISOString(),
|
||||
@@ -96,12 +89,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
}
|
||||
|
||||
if (user!.type === "corporate") {
|
||||
const snapshot = await getDocs(collection(db, "groups"));
|
||||
const groups: Group[] = (
|
||||
snapshot.docs.map((doc) => ({
|
||||
id: doc.id,
|
||||
...doc.data(),
|
||||
})) as Group[]
|
||||
const groups = (
|
||||
await db.collection("groups").find<Group>({}).toArray()
|
||||
).filter((x) => x.admin === user!.id);
|
||||
|
||||
await Promise.all(
|
||||
@@ -109,14 +98,14 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
.flatMap((x) => x.participants)
|
||||
.map(
|
||||
async (x) =>
|
||||
await setDoc(
|
||||
doc(db, "users", x),
|
||||
await db.collection("users").updateOne(
|
||||
{ id: x },
|
||||
{
|
||||
subscriptionExpirationDate:
|
||||
updatedExpirationDate.toISOString(),
|
||||
status: "active",
|
||||
},
|
||||
{ merge: true }
|
||||
$set: {
|
||||
subscriptionExpirationDate: updatedExpirationDate.toISOString(),
|
||||
status: "active",
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user