2026-02-19 22:05:20 +00:00

188 lines
9.5 KiB
PHP

@extends('layouts.app')
@section('title', 'Rental Details')
@section('content')
<div class="mb-6">
<a href="{{ route('rentals.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
<i class="fas fa-arrow-left"></i> Back to Rentals
</a>
</div>
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
<!-- Rental Details -->
<div class="lg:col-span-2">
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
<div class="flex items-center justify-between mb-6">
<div>
<h2 class="text-xl font-bold text-gray-800">Rental #{{ $rental->id }}</h2>
<span class="px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-700 capitalize">{{ $rental->rental_type }}</span>
</div>
<div class="flex items-center gap-3">
<button type="button" onclick="showContractModal({{ $rental->id }})" class="text-blue-600 hover:text-blue-800 p-2" title="View Contract"><i class="fas fa-file-alt text-lg"></i></button>
<a href="{{ route('rentals.contract.download', $rental) }}" class="text-red-600 hover:text-red-800 p-2" title="Download PDF"><i class="fas fa-file-pdf text-lg"></i></a>
<span class="px-3 py-1 rounded-full text-sm font-medium
{{ $rental->status == 'active' ? 'bg-green-100 text-green-700' :
($rental->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-gray-100 text-gray-600') }}">
{{ ucfirst($rental->status) }}
</span>
</div>
</div>
<div class="grid grid-cols-2 gap-4 mb-6">
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">Car</p>
<p class="font-semibold text-gray-800">{{ $rental->car->brand }} {{ $rental->car->model }}</p>
<p class="text-gray-500 text-sm">{{ $rental->car->license_plate }}</p>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">Customer</p>
<p class="font-semibold text-gray-800">{{ $rental->customer->name }}</p>
<p class="text-gray-500 text-sm">{{ $rental->customer->phone }}</p>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">Start Date</p>
<p class="font-semibold text-gray-800">
{{ $rental->start_date->format('M d, Y') }}
@if($rental->pickup_time)
<span class="text-blue-600">@ {{ $rental->pickup_time->format('H:i') }}</span>
@endif
</p>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">End Date</p>
<p class="font-semibold text-gray-800">
{{ $rental->end_date->format('M d, Y') }}
@if($rental->return_time)
<span class="text-blue-600">@ {{ $rental->return_time->format('H:i') }}</span>
@endif
</p>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">Total Amount</p>
<p class="font-semibold text-gray-800"> BHD {{ number_format($rental->total_amount, 0) }}</p>
</div>
<div class="bg-gray-50 rounded-lg p-4">
<p class="text-gray-500 text-sm">Advance Payment</p>
<p class="font-semibold text-gray-800"> BHD {{ number_format($rental->advance_payment, 0) }}</p>
</div>
</div>
@if($rental->notes)
<div class="border-t pt-4">
<p class="text-gray-500 text-sm mb-1">Notes</p>
<p class="text-gray-700">{{ $rental->notes }}</p>
</div>
@endif
<div class="flex gap-3 mt-6">
@if($rental->status != 'completed')
<a href="{{ route('rentals.updateStatus', [$rental, 'completed']) }}"
class="bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 text-sm inline-block"
onclick="return confirm('Mark this rental as completed?')">
Mark Completed
</a>
@endif
<form action="{{ route('rentals.destroy', $rental) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-red-700 text-sm" onclick="return confirm('Cancel this rental?')">Cancel Rental</button>
</form>
</div>
</div>
</div>
<!-- Sidebar -->
<div>
<!-- Car Card -->
<a href="{{ route('cars.show', $rental->car) }}" class="block bg-white rounded-xl shadow-sm border border-gray-200 p-4 mb-4 hover:border-blue-400 transition">
<h3 class="font-semibold text-gray-800 mb-2">Car Details</h3>
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-lg bg-blue-100 flex items-center justify-center">
<i class="fas fa-car text-blue-600"></i>
</div>
<div>
<p class="font-medium text-gray-800">{{ $rental->car->brand }} {{ $rental->car->model }}</p>
<p class="text-sm text-gray-500">{{ $rental->car->year }} {{ $rental->car->color }}</p>
</div>
</div>
</a>
<!-- Customer Card -->
<a href="{{ route('customers.show', $rental->customer) }}" class="block bg-white rounded-xl shadow-sm border border-gray-200 p-4 mb-4 hover:border-purple-400 transition">
<h3 class="font-semibold text-gray-800 mb-2">Customer Details</h3>
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-full bg-gray-200 flex items-center justify-center">
<span class="text-gray-600 font-semibold">{{ substr($rental->customer->name, 0, 1) }}</span>
</div>
<div>
<p class="font-medium text-gray-800">{{ $rental->customer->name }}</p>
<p class="text-sm text-gray-500">{{ $rental->customer->phone }}</p>
</div>
</div>
</a>
<!-- Payments -->
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-4">
<h3 class="font-semibold text-gray-800 mb-3">Payments</h3>
@forelse($rental->payments as $payment)
<div class="flex justify-between items-center py-2 border-b last:border-0">
<div>
<p class="text-gray-800 text-sm"> BHD {{ number_format($payment->amount, 0) }}</p>
<p class="text-gray-500 text-xs">{{ $payment->method }}</p>
</div>
<span class="px-2 py-1 rounded text-xs font-medium
{{ $payment->status == 'completed' ? 'bg-green-100 text-green-700' : 'bg-amber-100 text-amber-700' }}">
{{ $payment->status }}
</span>
</div>
@empty
<p class="text-gray-500 text-sm">No payments yet</p>
@endforelse
<a href="{{ route('payments.create') }}?rental_id={{ $rental->id }}" class="block w-full bg-blue-600 text-white text-center py-2 rounded-lg mt-3 hover:bg-blue-700 text-sm">Add Payment</a>
</div>
</div>
</div>
<!-- Contract Modal -->
<div id="contractModal" class="fixed inset-0 bg-black bg-opacity-50 hidden z-50 flex items-center justify-center">
<div class="bg-white rounded-lg shadow-xl w-full max-w-4xl max-h-[90vh] overflow-hidden">
<div class="flex justify-between items-center px-6 py-4 border-b">
<h3 class="text-lg font-semibold">Rental Contract</h3>
<div>
<a id="modalDownloadBtn" href="#" class="text-red-600 hover:text-red-800 mr-4 text-sm"><i class="fas fa-download mr-1"></i> Download PDF</a>
<button type="button" onclick="closeContractModal()" class="text-gray-500 hover:text-gray-700"><i class="fas fa-times text-xl"></i></button>
</div>
</div>
<div class="p-0 overflow-auto max-h-[calc(90vh-80px)]">
<iframe id="contractFrame" src="" class="w-full h-[70vh] border-0"></iframe>
</div>
</div>
</div>
<script>
function showContractModal(rentalId) {
const modal = document.getElementById('contractModal');
const frame = document.getElementById('contractFrame');
const downloadBtn = document.getElementById('modalDownloadBtn');
frame.src = '/rentals/' + rentalId + '/contract';
downloadBtn.href = '/rentals/' + rentalId + '/contract/download';
modal.classList.remove('hidden');
}
function closeContractModal() {
document.getElementById('contractModal').classList.add('hidden');
document.getElementById('contractFrame').src = '';
}
document.getElementById('contractModal').addEventListener('click', function(e) {
if (e.target === this) closeContractModal();
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closeContractModal();
});
</script>
@endsection