From 93e1d289caa8364d9122b653d6dfff8676c26369 Mon Sep 17 00:00:00 2001 From: sazzadulalambd Date: Sun, 10 May 2026 01:31:22 +0600 Subject: [PATCH] feat: add pendingRent and pendingRentDays fields to rental interface and update status badge logic --- src/app/admin/rentals/[id]/page.tsx | 10 ++++++++++ src/app/admin/rentals/page.tsx | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/app/admin/rentals/[id]/page.tsx b/src/app/admin/rentals/[id]/page.tsx index c9a6e2b..550d9e6 100644 --- a/src/app/admin/rentals/[id]/page.tsx +++ b/src/app/admin/rentals/[id]/page.tsx @@ -55,6 +55,8 @@ interface Rental { monthlyRate: number; totalPaid: number; dueRental: number; + pendingRent?: number; + pendingRentDays?: number; paymentStatus: PaymentStatus; penaltyLevel: PenaltyLevel; penaltyAmount: number; @@ -103,6 +105,8 @@ const mockRentals: Rental[] = [ monthlyRate: 3500, totalPaid: 38500, dueRental: 0, + pendingRent: 0, + pendingRentDays: 0, paymentStatus: 'paid', penaltyLevel: 'none', penaltyAmount: 0, @@ -148,6 +152,8 @@ const mockRentals: Rental[] = [ monthlyRate: 3500, totalPaid: 3000, dueRental: 3500, + pendingRent: 3500, + pendingRentDays: 5, paymentStatus: 'partial', penaltyLevel: 'none', penaltyAmount: 0, @@ -186,6 +192,8 @@ const mockRentals: Rental[] = [ monthlyRate: 12000, totalPaid: 82000, dueRental: 0, + pendingRent: 0, + pendingRentDays: 0, paymentStatus: 'paid', penaltyLevel: 'none', penaltyAmount: 0, @@ -218,6 +226,8 @@ const mockRentals: Rental[] = [ monthlyRate: 2200, totalPaid: 2600, dueRental: 600, + pendingRent: 600, + pendingRentDays: 3, paymentStatus: 'overdue', penaltyLevel: 'day3', penaltyAmount: 1000, diff --git a/src/app/admin/rentals/page.tsx b/src/app/admin/rentals/page.tsx index 854e31f..efcc6db 100644 --- a/src/app/admin/rentals/page.tsx +++ b/src/app/admin/rentals/page.tsx @@ -47,6 +47,8 @@ interface Rental { monthlyRate: number; totalPaid: number; dueRental: number; + pendingRent?: number; + pendingRentDays?: number; paymentStatus: PaymentStatus; penaltyLevel: PenaltyLevel; penaltyAmount: number; @@ -130,6 +132,8 @@ const mockRentals: Rental[] = [ monthlyRate: 3500, totalPaid: 38500, dueRental: 0, + pendingRent: 0, + pendingRentDays: 0, paymentStatus: 'paid', penaltyLevel: 'none', penaltyAmount: 0, @@ -162,6 +166,8 @@ const mockRentals: Rental[] = [ monthlyRate: 3500, totalPaid: 3000, dueRental: 3500, + pendingRent: 3500, + pendingRentDays: 5, paymentStatus: 'partial', penaltyLevel: 'none', penaltyAmount: 0, @@ -193,6 +199,8 @@ const mockRentals: Rental[] = [ monthlyRate: 12000, totalPaid: 82000, dueRental: 0, + pendingRent: 0, + pendingRentDays: 0, paymentStatus: 'paid', penaltyLevel: 'none', penaltyAmount: 0, @@ -225,6 +233,8 @@ const mockRentals: Rental[] = [ monthlyRate: 2200, totalPaid: 2600, dueRental: 600, + pendingRent: 600, + pendingRentDays: 3, paymentStatus: 'overdue', penaltyLevel: 'day3', penaltyAmount: 1000, @@ -304,7 +314,7 @@ export default function RentalsPage() { return { style: styles[status], label: labels[status] || status }; }; - const getPaymentStatusBadge = (status: PaymentStatus) => { + const getPaymentStatusBadge = (status: PaymentStatus, pendingRent?: number, pendingRentDays?: number) => { const styles: Record = { paid: 'bg-green-100 text-green-700', partial: 'bg-amber-100 text-amber-700', @@ -317,7 +327,7 @@ export default function RentalsPage() { overdue: 'Overdue', unpaid: 'Unpaid', }; - return { style: styles[status], label: labels[status] || status }; + return { style: styles[status], label: labels[status] || status, pendingRent: pendingRent || 0, pendingRentDays: pendingRentDays || 0 }; }; const getPenaltyBadge = (level: PenaltyLevel) => { @@ -540,7 +550,7 @@ export default function RentalsPage() { {filteredRentals.map(rental => { const statusBadge = getStatusBadge(rental.status); - const paymentBadge = getPaymentStatusBadge(rental.paymentStatus); + const paymentBadge = getPaymentStatusBadge(rental.paymentStatus, rental.pendingRent, rental.pendingRentDays); const penaltyBadge = getPenaltyBadge(rental.penaltyLevel); const typeBadge = getTypeBadge(rental.type); return (