Add payment processing and device management features

- Introduced createPayment action for handling payment creation.
- Added PaymentsTable component for displaying payment records with pagination.
- Implemented new PaymentPage for viewing individual payment details and associated devices.
- Refactored DeviceCartDrawer to integrate payment creation and device selection.
- Enhanced DevicesToPay component to display devices based on payment status.
- Updated PriceCalculator component for better user input handling.
- Introduced NumberInput component for consistent number input across forms.
- Modified Prisma schema to include new fields for payments and devices.
- Improved overall user experience with responsive design adjustments and new UI elements.
This commit is contained in:
2024-12-07 14:09:53 +05:00
parent c6f45710ca
commit e815da495a
22 changed files with 651 additions and 242 deletions

View File

@ -9,6 +9,7 @@ export const initialPriceAtom = atom(100);
export const discountPercentageAtom = atom(75);
export const numberOfDevicesAtom = atom(1);
export const numberOfDaysAtom = atom(30);
export const numberOfMonths = atom(1);
export const formulaResultAtom = atom("");
export const deviceCartAtom = atom<Device[]>([]);
export const cartDrawerOpenAtom = atom(false);
@ -18,6 +19,7 @@ export const atoms = {
discountPercentageAtom,
numberOfDevicesAtom,
numberOfDaysAtom,
numberOfMonths,
formulaResultAtom,
deviceCartAtom,
cartDrawerOpenAtom,

View File

@ -12,3 +12,13 @@ export async function AdminAuthGuard() {
}
return true;
}
export async function hasSession() {
const session = await auth.api.getSession({
headers: await headers(),
});
if (!session) {
return redirect("/login");
}
return true;
}

View File

@ -6,6 +6,7 @@ import { phoneNumber } from "better-auth/plugins";
const prisma = new PrismaClient();
export const auth = betterAuth({
trustedOrigins: ["http://localhost:3000", "http://192.168.18.194:3000"],
user: {
additionalFields: {
role: {

7
lib/types.ts Normal file
View File

@ -0,0 +1,7 @@
export type PaymentType = {
numberOfMonths: number;
userId: string;
deviceIds: string[];
amount: number;
paid: boolean;
};