diff --git a/src/app/admin/rentals/[id]/page.tsx b/src/app/admin/rentals/[id]/page.tsx index 1ca36cf..4fe5a4a 100644 --- a/src/app/admin/rentals/[id]/page.tsx +++ b/src/app/admin/rentals/[id]/page.tsx @@ -128,6 +128,7 @@ const mockRentals: Rental[] = [ dailyRate: 150, weeklyRate: 900, monthlyRate: 3500, + batteryRent: 1500, totalPaid: 38500, dueRental: 0, pendingRent: 0, @@ -287,6 +288,23 @@ const mockHubs = [ { id: 'HUB-004', name: 'Mirpur Hub' }, ]; +interface BatteryOption { + id: string; + brand: string; + model: string; + soc: number; + monthlyRent: number; + status: 'available' | 'in-use'; +} + +const mockBatteries: BatteryOption[] = [ + { id: 'BAT-DH-001', brand: 'Galaxy', model: '72V 45Ah', soc: 85, monthlyRent: 1500, status: 'available' }, + { id: 'BAT-DH-002', brand: 'Titan', model: '72V 50Ah', soc: 92, monthlyRent: 1800, status: 'available' }, + { id: 'BAT-DH-003', brand: 'PowerMax', model: '60V 40Ah', soc: 78, monthlyRent: 1200, status: 'available' }, + { id: 'BAT-DH-004', brand: 'UltraCell', model: '72V 55Ah', soc: 88, monthlyRent: 2000, status: 'available' }, + { id: 'BAT-DH-005', brand: 'EcoVolt', model: '48V 30Ah', soc: 65, monthlyRent: 800, status: 'available' }, +]; + const mockDamageHistory = [ { id: 'DMG-001', date: '2024-02-10', description: 'Minor scratch on left mirror', severity: 'minor', status: 'resolved' }, { id: 'DMG-002', date: '2024-03-05', description: 'Front fender dented', severity: 'moderate', status: 'reported' }, @@ -334,6 +352,8 @@ export default function RentalDetailPage() { const [documents, setDocuments] = useState(mockDocuments); const [showUploadModal, setShowUploadModal] = useState(false); const [uploadDocName, setUploadDocName] = useState(''); + const [showAddBatteryModal, setShowAddBatteryModal] = useState(false); + const [selectedBatteryId, setSelectedBatteryId] = useState(''); const [acceptPermission, setAcceptPermission] = useState(false); const [rejectPermission, setRejectPermission] = useState(false); @@ -486,6 +506,31 @@ export default function RentalDetailPage() { setRental(prev => prev ? { ...prev, status: 'active', activatedAt: new Date().toISOString().split('T')[0] } : null); }; + const handleAddBattery = () => { + if (!selectedBatteryId || !rental) return; + const battery = mockBatteries.find(b => b.id === selectedBatteryId); + if (!battery) return; + + const newBatteryHistory: BatteryRentalHistory = { + id: `BAT-RENT-${Date.now()}`, + batteryId: battery.id, + batteryName: `${battery.brand} ${battery.model}`, + assignedAt: new Date().toISOString().split('T')[0], + monthlyRent: battery.monthlyRent, + status: 'active', + }; + + setRental(prev => prev ? { + ...prev, + batteryId: battery.id, + batteryName: `${battery.brand} ${battery.model}`, + batteryRent: (prev.batteryRent || 0) + battery.monthlyRent, + batteryHistory: [...(prev.batteryHistory || []), newBatteryHistory], + } : null); + setShowAddBatteryModal(false); + setSelectedBatteryId(''); + }; + const handleAddNote = () => { if (!newNote.trim()) return; setNotes(prev => [...prev, { id: `n${Date.now()}`, text: newNote, createdAt: new Date().toISOString().split('T')[0] }]); @@ -702,12 +747,36 @@ export default function RentalDetailPage() {
- Active Battery Rent: - ৳{rental.batteryHistory.filter(b => b.status === 'active').reduce((sum, b) => sum + b.monthlyRent, 0)}/month -
+ ) : ( +No battery assigned yet.
+ )} + {rental.batteryHistory?.some(b => b.status === 'active') && ( ++ Active Battery Rent: + ৳{rental.batteryHistory.filter(b => b.status === 'active').reduce((sum, b) => sum + b.monthlyRent, 0)}/month +
++ Battery Monthly Rent: ৳{batteryMonthlyRent}/month +
+Calculated Rate by Subscription:
+• Daily: ৳{Math.round(batteryMonthlyRent / 30)}/day (৳{batteryMonthlyRent}/30)
+• Weekly: ৳{Math.round(batteryMonthlyRent / 4)}/week (৳{batteryMonthlyRent}/4)
+• Monthly (30 days): ৳{batteryMonthlyRent}/month
+• Monthly (31 days): ৳{batteryMonthlyRent}/month
+Your Current Subscription: {rental.subscriptionType}
++ You will pay: ৳{rental.subscriptionType === 'daily' + ? Math.round(batteryMonthlyRent / 30) + : rental.subscriptionType === 'weekly' + ? Math.round(batteryMonthlyRent / 4) + : batteryMonthlyRent}/{rental.subscriptionType} +
+