diff --git a/src/components/MobileMenu.tsx b/src/components/MobileMenu.tsx
index 2f113eaf..0e042287 100644
--- a/src/components/MobileMenu.tsx
+++ b/src/components/MobileMenu.tsx
@@ -103,6 +103,17 @@ export default function MobileMenu({isOpen, onClose, path, user}: Props) {
)}>
Record
+ {["admin", "developer", "agent"].includes(user.type) && (
+
+ Payment Record
+
+ )}
{["admin", "developer", "corporate", "teacher"].includes(user.type) && (
+ {["admin", "developer", "agent"].includes(userType || "") && (
+
+ )}
{["admin", "developer", "corporate", "teacher"].includes(userType || "") && (
)}
- {userType === "developer" && (
-
- )}
diff --git a/src/interfaces/paypal.ts b/src/interfaces/paypal.ts
index f5441756..4305b960 100644
--- a/src/interfaces/paypal.ts
+++ b/src/interfaces/paypal.ts
@@ -31,4 +31,5 @@ export interface Payment {
currency: string;
value: number;
isPaid: boolean;
+ date: Date;
}
diff --git a/src/pages/api/payments/index.ts b/src/pages/api/payments/index.ts
index 4cb6ce13..fb3b9a97 100644
--- a/src/pages/api/payments/index.ts
+++ b/src/pages/api/payments/index.ts
@@ -6,6 +6,8 @@ import {withIronSessionApiRoute} from "iron-session/next";
import {sessionOptions} from "@/lib/session";
import {Group} from "@/interfaces/user";
import {Payment} from "@/interfaces/paypal";
+import {v4} from "uuid";
+import ShortUniqueId from "short-unique-id";
const db = getFirestore(app);
@@ -35,6 +37,7 @@ async function get(req: NextApiRequest, res: NextApiResponse) {
async function post(req: NextApiRequest, res: NextApiResponse) {
const body = req.body as Payment;
- await setDoc(doc(db, "payments", body.id), body);
+ const shortUID = new ShortUniqueId();
+ await setDoc(doc(db, "payments", shortUID.randomUUID(8)), body);
res.status(200).json({ok: true});
}
diff --git a/src/pages/payment-record.tsx b/src/pages/payment-record.tsx
index a023f3ba..301f6abb 100644
--- a/src/pages/payment-record.tsx
+++ b/src/pages/payment-record.tsx
@@ -22,6 +22,8 @@ import Checkbox from "@/components/Low/Checkbox";
import Button from "@/components/Low/Button";
import Select from "react-select";
import Input from "@/components/Low/Input";
+import ReactDatePicker from "react-datepicker";
+import moment from "moment";
export const getServerSideProps = withIronSessionSsr(({req, res}) => {
const user = req.session.user;
@@ -55,12 +57,13 @@ export const getServerSideProps = withIronSessionSsr(({req, res}) => {
const columnHelper = createColumnHelper
();
-const PaymentCreator = () => {
+const PaymentCreator = ({onClose, reload}: {onClose: () => void; reload: () => void}) => {
const [corporate, setCorporate] = useState();
const [price, setPrice] = useState(0);
const [currency, setCurrency] = useState("EUR");
const [commission, setCommission] = useState(0);
const [referralAgent, setReferralAgent] = useState();
+ const [date, setDate] = useState(new Date());
const {users} = useUsers();
@@ -72,21 +75,43 @@ const PaymentCreator = () => {
setReferralAgent(referralAgent as AgentUser | undefined);
}, [corporate, users]);
+ const submit = () => {
+ axios
+ .post(`/api/payments`, {
+ corporate: corporate?.id,
+ agent: referralAgent?.id,
+ agentCommission: commission,
+ agentValue: (commission / 100) * price,
+ currency,
+ value: price,
+ isPaid: false,
+ date: date.toISOString(),
+ })
+ .then(() => {
+ toast.success("New payment has been created successfully!");
+ reload();
+ onClose();
+ })
+ .catch(() => {
+ toast.error("Something went wrong, please try again later!");
+ });
+ };
+
return (