diff --git a/src/app/admin/rentals/page.tsx b/src/app/admin/rentals/page.tsx index cdd643e..97a25be 100644 --- a/src/app/admin/rentals/page.tsx +++ b/src/app/admin/rentals/page.tsx @@ -272,6 +272,7 @@ export default function RentalsPage() { const [editPermission, setEditPermission] = useState(false); const [lockPermission, setLockPermission] = useState(false); const [unlockPermission, setUnlockPermission] = useState(false); + const [lockUnlockRental, setLockUnlockRental] = useState<{ id: string; action: 'lock' | 'unlock' } | null>(null); const [planConditions, setPlanConditions] = useState<{ single: { name: string; deposit: number; dailyRate: number; weeklyRate: number; monthlyRate: number; contractMonths: number[]; evModels: string[] }[]; shared: { name: string; deposit: number; dailyRate: number; weeklyRate: number; monthlyRate: number; contractMonths: number[]; evModels: string[] }[]; @@ -503,38 +504,38 @@ export default function RentalsPage() {

Rentals

Manage rental transactions

-
+
{createPermission && ( )} -
-
+
-
+

Active Rentals

+ +
-
+

Payment Due (Day1)

+ +
-
+

Payment Due (Day2)

+ +
+

EV Locked

+
@@ -575,7 +576,7 @@ export default function RentalsPage() {
-
+
@@ -587,7 +588,6 @@ export default function RentalsPage() { - {/* */} @@ -596,7 +596,6 @@ export default function RentalsPage() { {filteredRentals.map(rental => { const statusBadge = getStatusBadge(rental.status); const paymentBadge = getPaymentStatusBadge(rental.paymentStatus, rental.pendingRent, rental.pendingRentDays); - const penaltyBadge = getPenaltyBadge(rental.penaltyLevel); const typeBadge = getTypeBadge(rental.type); return ( @@ -671,14 +670,13 @@ export default function RentalsPage() { - {lockPermission && rental.status === 'active' && ( - )} {unlockPermission && rental.status === 'locked' && ( - )} @@ -696,6 +694,92 @@ export default function RentalsPage() {
Hub Deposit Rent PaymentPenaltyStatus Actions
+ +
+ {filteredRentals.map(rental => { + const statusBadge = getStatusBadge(rental.status); + const paymentBadge = getPaymentStatusBadge(rental.paymentStatus, rental.pendingRent, rental.pendingRentDays); + const typeBadge = getTypeBadge(rental.type); + return ( +
+
+ + {rental.id} + + + {statusBadge.label} + +
+ +
+ +
+

{rental.bikeModel}

+

{rental.bikePlate}

+
+
+ +
+ +
+

{rental.userName}

+

{rental.userPhone}

+
+
+ +
+ + {typeBadge.label} + + {rental.subscriptionType} + + {rental.hubName} +
+ +
+
+ Deposit: + ৳{rental.deposit.toLocaleString()} + + {rental.depositPaid ? 'Paid' : 'Unpaid'} + +
+ {(paymentBadge.pendingRent && paymentBadge.pendingRent > 0) ? ( + + ৳{paymentBadge.pendingRent} + + ) : ( + + Clear + + )} +
+ +
+ + View + + {lockPermission && rental.status === 'active' && ( + + )} + {unlockPermission && rental.status === 'locked' && ( + + )} + + Call + + + SMS + +
+
+ ); + })} +
{showCreateModal && ( @@ -916,20 +1000,20 @@ export default function RentalsPage() { {newRental.depositPaymentMethod === 'bank' && '1100 - Bank'} {newRental.depositPaymentMethod === 'wallet' && '1200 - Biker Wallet'} -{newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} - - - - - 2100 - Deposit Received - - - {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} - - - - - Total - {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} - {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} + {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} + - + + + 2100 - Deposit Received + - + {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} + + + + + Total + {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} + {newRental.depositAmount > 0 ? newRental.depositAmount.toLocaleString() : selectedPlan?.deposit.toLocaleString()} @@ -982,6 +1066,43 @@ export default function RentalsPage() {
)} + + {lockUnlockRental && ( +
+
+
+
+ {lockUnlockRental.action === 'lock' ? : } +
+

+ {lockUnlockRental.action === 'lock' ? 'Lock EV?' : 'Unlock EV?'} +

+

+ {lockUnlockRental.action === 'lock' + ? 'This will lock the EV and prevent the rider from starting it. Are you sure?' + : 'This will unlock the EV and allow the rider to start it. Are you sure?'} +

+
+ + +
+
+
+
+ )} ); }