Refactored /api/paypal, /api/permissions, /api/reset /api/sessions, /api/stats

This commit is contained in:
Carlos Mesquita
2024-09-07 20:43:55 +01:00
parent 6251f8f4db
commit d6782bd86e
11 changed files with 152 additions and 210 deletions

View File

@@ -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",
}
}
)
)
);