import Input from "@/components/Low/Input"; import Modal from "@/components/Modal"; import {PERMISSIONS} from "@/constants/userPermissions"; import useExams from "@/hooks/useExams"; import usePackages from "@/hooks/usePackages"; import useUsers from "@/hooks/useUsers"; import {Module} from "@/interfaces"; import {Exam} from "@/interfaces/exam"; import {Package} from "@/interfaces/paypal"; import {Type, User} from "@/interfaces/user"; import useExamStore from "@/stores/examStore"; import {getExamById} from "@/utils/exams"; import {countExercises} from "@/utils/moduleUtils"; import {createColumnHelper, flexRender, getCoreRowModel, useReactTable} from "@tanstack/react-table"; import axios from "axios"; import clsx from "clsx"; import {capitalize} from "lodash"; import {useRouter} from "next/router"; import {useState} from "react"; import {BsCheck, BsPencil, BsTrash, BsUpload} from "react-icons/bs"; import {toast} from "react-toastify"; import Select from "react-select"; import {CURRENCIES} from "@/resources/paypal"; import Button from "@/components/Low/Button"; const CLASSES: {[key in Module]: string} = { reading: "text-ielts-reading", listening: "text-ielts-listening", speaking: "text-ielts-speaking", writing: "text-ielts-writing", level: "text-ielts-level", }; const columnHelper = createColumnHelper(); type DurationUnit = "days" | "weeks" | "months" | "years"; function PackageCreator({pack, onClose}: {pack?: Package; onClose: () => void}) { const [duration, setDuration] = useState(pack?.duration || 1); const [unit, setUnit] = useState(pack?.duration_unit || "months"); const [price, setPrice] = useState(pack?.price || 0); const [currency, setCurrency] = useState(pack?.currency || "OMR"); const submit = () => { (pack ? axios.patch : axios.post)(pack ? `/api/packages/${pack.id}` : "/api/packages", { duration, duration_unit: unit, price, currency, }) .then(() => { toast.success("New payment has been created successfully!"); onClose(); }) .catch(() => { toast.error("Something went wrong, please try again later!"); }); }; return (
setPrice(parseInt(e))} /> setDuration(parseInt(e))} />