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

@ -0,0 +1,23 @@
/*
Warnings:
- You are about to drop the column `billId` on the `Device` table. All the data in the column will be lost.
- You are about to drop the column `name` on the `Payment` table. All the data in the column will be lost.
- Added the required column `numberOfMonths` to the `Payment` table without a default value. This is not possible if the table is not empty.
*/
-- DropForeignKey
ALTER TABLE "Device" DROP CONSTRAINT "Device_billId_fkey";
-- AlterTable
ALTER TABLE "Device" DROP COLUMN "billId",
ADD COLUMN "expiryDate" TIMESTAMP(3),
ADD COLUMN "paymentId" TEXT;
-- AlterTable
ALTER TABLE "Payment" DROP COLUMN "name",
ADD COLUMN "numberOfMonths" INTEGER NOT NULL,
ALTER COLUMN "amount" SET DATA TYPE DOUBLE PRECISION;
-- AddForeignKey
ALTER TABLE "Device" ADD CONSTRAINT "Device_paymentId_fkey" FOREIGN KEY ("paymentId") REFERENCES "Payment"("id") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Payment" ADD COLUMN "paidAt" TIMESTAMP(3);

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Payment" ADD COLUMN "expiresAt" TIMESTAMP(3);

View File

@ -109,29 +109,31 @@ model Island {
}
model Device {
id String @id @default(cuid())
name String
mac String
isActive Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
User User? @relation(fields: [userId], references: [id])
userId String?
Bill Payment? @relation(fields: [billId], references: [id])
billId String?
id String @id @default(cuid())
name String
mac String
isActive Boolean @default(false)
expiryDate DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
User User? @relation(fields: [userId], references: [id])
userId String?
payment Payment? @relation(fields: [paymentId], references: [id])
paymentId String?
}
model Payment {
id String @id @default(cuid())
name String
amount Int
paid Boolean @default(false)
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
devices Device[]
userId String
id String @id @default(cuid())
numberOfMonths Int
amount Float
paid Boolean @default(false)
user User @relation(fields: [userId], references: [id])
paidAt DateTime?
expiresAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
devices Device[]
userId String
}
model BillFormula {