@extends('layouts.app') @section('title', 'Demande de location #' . $request->id) @section('content')

Détails de la demande de location

Demande #{{ $request->id }} - {{ Str::limit($request->equipment->name ?? 'Équipement supprimé', 60) }}
@php $requestStatus = (string) $request->status; $cancelHours = max(0, (int) ($request->equipment?->cancellation_hours ?? 24)); $startDate = null; if ($request->start_date) { try { $startDate = \Illuminate\Support\Carbon::parse($request->start_date)->startOfDay(); } catch (\Throwable $e) { $startDate = null; } } $cancelDeadline = $startDate ? $startDate->copy()->subHours($cancelHours) : null; $canCancelNow = in_array($requestStatus, ['accepted', 'confirmed', 'in_preparation'], true) && (!$cancelDeadline || now()->lessThanOrEqualTo($cancelDeadline)); $cancelDeadlinePassed = in_array($requestStatus, ['accepted', 'confirmed', 'in_preparation'], true) && !$canCancelNow; $hasPrestataireCancelRoute = \Illuminate\Support\Facades\Route::has('prestataire.equipment-rental-requests.cancel'); @endphp @if($request->status === 'pending') En attente de confirmation @elseif(in_array($request->status, ['accepted', 'confirmed'], true)) Acceptée @elseif($request->status === 'in_preparation') En préparation @elseif($request->status === 'rejected') Refusée @elseif($request->status === 'cancelled') Annulée @endif
@if($request->status === 'pending' && $request->equipment) @elseif($canCancelNow && $hasPrestataireCancelRoute)
@csrf
@elseif($cancelDeadlinePassed) Délai d'annulation dépassé @endif
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if($request->status === 'pending' && !$request->equipment)

Impossible d'accepter ou refuser cette demande car l'équipement a été supprimé.

@endif

Informations du client

@if($request->client && $request->client->user && $request->client->user->profile_photo_url) {{ $request->client->first_name }} {{ $request->client->last_name }} @else
{{ substr($request->client->first_name ?? '', 0, 1) }}{{ substr($request->client->last_name ?? '', 0, 1) }}
@endif

{{ $request->client->first_name }} {{ $request->client->last_name }}

Email
{{ $request->client->user->email ?? $request->client->email }}
@if($request->client->phone)
Téléphone
{{ $request->client->phone }}
@endif
@if($request->client->address)
Adresse
{{ $request->client->address }}
@endif
Membre depuis
{{ $request->client->created_at->format('F Y') }}

Équipement demandé

@if($request->equipment)
@if($request->equipment->main_photo)
@endif

{{ $request->equipment->name }}

{{ $request->equipment->brand }} {{ $request->equipment->model }}

État
{{ $request->equipment->formatted_condition }}
Prix/jour
{{ number_format($request->equipment->daily_rate, 2) }}€
Disponibilité
Disponible
@else

Équipement supprimé

L'équipement associé à cette demande n'existe plus.

@endif

Détails de la demande

Période de location

Date de début {{ $request->start_date->format('d/m/Y') }}
Date de fin {{ $request->end_date->format('d/m/Y') }}
Durée totale {{ $request->start_date->diffInDays($request->end_date) + 1 }} jour(s)

Options de livraison

@if($request->delivery_required)
Livraison demandée @else
Récupération sur place @endif
@if($request->delivery_required && $request->delivery_address)
Adresse de livraison
{{ $request->delivery_address }}
@endif
@if($request->message)

Message du client

{{ $request->message }}

@endif
@if($request->status !== 'pending')

Historique

Demande créée

{{ $request->created_at->format('d/m/Y à H:i') }}

@if($request->status === 'accepted')

Demande acceptée

{{ $request->updated_at->format('d/m/Y à H:i') }}

@elseif($request->status === 'rejected')

Demande refusée

{{ $request->updated_at->format('d/m/Y à H:i') }}

@if($request->rejection_reason)

Raison: {{ $request->rejection_reason }}

@endif
@endif
@endif

Récapitulatif

Location ({{ $request->start_date->diffInDays($request->end_date) + 1 }} jours) {{ number_format(abs($request->rental_amount ?? $request->total_amount ?? 0), 2, ',', ' ') }}€
@if($request->delivery_required && isset($request->delivery_cost) && $request->delivery_cost > 0)
Livraison {{ number_format(abs($request->delivery_cost), 2, ',', ' ') }}€
@endif
Total {{ number_format(abs($request->total_amount ?? 0), 2, ',', ' ') }}€
@if(isset($request->deposit_amount) && $request->deposit_amount > 0)
Caution demandée {{ number_format(abs($request->deposit_amount), 2, ',', ' ') }}€
@endif
@php $paymentContext = $paymentContext ?? []; $logicalPaymentStatus = $paymentContext['logical_status'] ?? 'pending'; $paymentTypeLabel = strtolower((string) ($paymentContext['payment_type'] ?? '')); $paymentTx = $paymentContext['transaction'] ?? null; $paymentEscrow = $paymentContext['escrow'] ?? null; $escrowRow = []; @endphp

Paiement

Statut
@if($logicalPaymentStatus === 'paid') Payé @elseif($logicalPaymentStatus === 'partial') Acompte payé (solde restant) @elseif($logicalPaymentStatus === 'refunded') Remboursé @else En attente de paiement @endif
@if($paymentTypeLabel !== '')
Type de paiement
@if($paymentTypeLabel === 'deposit') Acompte + caution @elseif($paymentTypeLabel === 'balance') Solde @elseif(in_array($paymentTypeLabel, ['full', 'payment'], true)) Paiement total @else {{ ucfirst($paymentTypeLabel) }} @endif
@endif @if($paymentTx)
Transaction
#{{ $paymentTx->id }}
@if(!empty($paymentTx->stripe_payment_intent_id))
{{ $paymentTx->stripe_payment_intent_id }}
@endif @if(!empty($paymentTx->paid_at))
Payé le {{ optional($paymentTx->paid_at)->format('d/m/Y à H:i') }}
@endif
@endif @if($paymentEscrow) @php $escrowRow = (array) $paymentEscrow; $escrowStatus = strtolower((string) ($escrowRow['status'] ?? 'unknown')); @endphp
Escrow
#{{ $escrowRow['id'] ?? 'N/A' }}
Statut escrow: {{ $escrowStatus }}
@if(!empty($escrowRow['stripe_payment_intent_id']))
{{ $escrowRow['stripe_payment_intent_id'] }}
@endif
@endif @php $securityDeposit = (float) ($request->equipment->security_deposit ?? $request->security_deposit ?? 0); @endphp @if($securityDeposit > 0) @php $escrowMeta = []; if (!empty($escrowRow['metadata'] ?? null)) { try { $escrowMeta = is_array($escrowRow['metadata']) ? $escrowRow['metadata'] : (json_decode((string) $escrowRow['metadata'], true) ?: []); } catch (\Throwable $e) { $escrowMeta = []; } } $depositStatus = strtolower((string) ($request->deposit_status ?? ($escrowMeta['deposit_status'] ?? 'pending'))); $depositRetained = (float) ($request->deposit_retained ?? ($escrowMeta['deposit_retained'] ?? 0)); $depositReason = trim((string) ($request->deposit_retention_reason ?? ($escrowMeta['deposit_retention_reason'] ?? ''))); $depositReturned = max(0, $securityDeposit - $depositRetained); if (isset($escrowMeta['deposit_returned'])) { $depositReturned = max(0, (float) $escrowMeta['deposit_returned']); } $depositProcessedAt = null; $processedCandidate = $request->equipment_returned_at ?? ($escrowMeta['deposit_processed_at'] ?? null); if (!empty($processedCandidate)) { try { $depositProcessedAt = \Illuminate\Support\Carbon::parse($processedCandidate)->format('d/m/Y à H:i'); } catch (\Throwable $e) { $depositProcessedAt = null; } } $isReturned = $depositStatus === 'returned' || ($depositRetained <= 0 && !empty($depositProcessedAt)); $isRetained = $depositStatus === 'retained' || ($depositRetained >= $securityDeposit && $securityDeposit > 0); $isPartial = $depositStatus === 'partial' || (!$isReturned && !$isRetained && $depositRetained > 0); @endphp
Suivi caution client
@if($isReturned)
Restituée au client: {{ number_format($depositReturned, 2) }}€
@elseif($isPartial)
Retenue: {{ number_format($depositRetained, 2) }}€ • Restituée: {{ number_format($depositReturned, 2) }}€
@elseif($isRetained)
Retenue intégrale: {{ number_format($depositRetained, 2) }}€
@else
En attente de traitement après retour
@endif @if($depositReason !== '')
{{ $depositReason }}
@endif @if($depositProcessedAt)
Traitée le {{ $depositProcessedAt }}
@endif
@endif

Informations

Demande créée
{{ $request->created_at->format('d/m/Y à H:i') }}
@if($request->status !== 'pending')
Dernière mise à jour
{{ $request->updated_at->format('d/m/Y à H:i') }}
@endif
Référence
#{{ $request->id }}
@if($request->request_number)
Numéro de demande
{{ $request->request_number }}
@endif
@endsection @push('scripts') @endpush