mirror of
https://github.com/i701/sarlink-portal.git
synced 2025-02-23 00:22:00 +00:00
- Simplified fetchOmadaGroupProfiles function by removing unnecessary parameters and using environment variables for base URL and API key. - Improved error handling in fetchOmadaGroupProfiles to check for error codes in the response. - Updated addDevicesToGroup function to remove redundant parameters and streamline device addition logic. - Integrated formatMacAddress utility to ensure consistent MAC address formatting during payment verification. - Enhanced verifyPayment function to include device addition upon successful payment verification, with improved logging. - Refactored DevicesToPay component to clean up payment verification logic and improve UI responsiveness. These changes enhance the clarity and efficiency of device management and payment processing functionalities.
97 lines
1.9 KiB
TypeScript
97 lines
1.9 KiB
TypeScript
"use server";
|
|
|
|
import prisma from "@/lib/db";
|
|
import type { PaymentType } from "@/lib/types";
|
|
import { formatMacAddress } from "@/lib/utils";
|
|
import { revalidatePath } from "next/cache";
|
|
import { addDevicesToGroup } from "./omada-actions";
|
|
|
|
export async function createPayment(data: PaymentType) {
|
|
console.log("data", data);
|
|
const payment = await prisma.payment.create({
|
|
data: {
|
|
amount: data.amount,
|
|
numberOfMonths: data.numberOfMonths,
|
|
paid: data.paid,
|
|
userId: data.userId,
|
|
devices: {
|
|
connect: data.deviceIds.map((id) => {
|
|
return {
|
|
id,
|
|
};
|
|
}),
|
|
},
|
|
},
|
|
});
|
|
revalidatePath("/devices");
|
|
return payment;
|
|
}
|
|
|
|
type VerifyPaymentType = {
|
|
paymentId?: string;
|
|
benefName: string;
|
|
accountNo?: string;
|
|
absAmount: string;
|
|
time: string;
|
|
};
|
|
|
|
export async function verifyPayment(data: VerifyPaymentType) {
|
|
console.log({ data });
|
|
try {
|
|
const payment = await prisma.payment.findUnique({
|
|
where: {
|
|
id: data.paymentId,
|
|
},
|
|
include: {
|
|
devices: true,
|
|
},
|
|
});
|
|
const response = await fetch(
|
|
"https://verifypaymentsapi.baraveli.dev/verify-payment",
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(data),
|
|
},
|
|
);
|
|
const json = await response.json();
|
|
console.log(json);
|
|
const newDevices = payment?.devices.map((d) => {
|
|
return {
|
|
name: d.name,
|
|
macAddress: formatMacAddress(d.mac),
|
|
};
|
|
});
|
|
if (json.success === true) {
|
|
await Promise.all([
|
|
prisma.payment.update({
|
|
where: {
|
|
id: payment?.id,
|
|
},
|
|
data: {
|
|
paid: true,
|
|
},
|
|
}),
|
|
]);
|
|
}
|
|
|
|
const res = await addDevicesToGroup({
|
|
groupId: process.env.OMADA_GROUP_ID,
|
|
siteId: process.env.OMADA_SITE_ID,
|
|
newDevices: newDevices || [],
|
|
});
|
|
|
|
revalidatePath("/payment[paymentId]");
|
|
console.log(res);
|
|
return res;
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
|
|
export async function addDevicesToOmada() {
|
|
console.log("hi");
|
|
}
|