'use client'; import React, { useState, useEffect } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { Card } from 'primereact/card'; import { TabView, TabPanel } from 'primereact/tabview'; import { Button } from 'primereact/button'; import { Tag } from 'primereact/tag'; import { Calendar } from 'primereact/calendar'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Timeline } from 'primereact/timeline'; import { apiService } from '@/services/api'; interface Materiel { id: number; nom: string; reference: string; type: string; marque: string; modele: string; statut: string; dateAchat: string; prixAchat: number; tauxJournalier: number; disponibilite: string; reservations: Reservation[]; maintenances: Maintenance[]; } interface Reservation { id: number; chantier: string; dateDebut: string; dateFin: string; statut: string; } interface Maintenance { id: number; type: string; date: string; description: string; cout: number; } export default function MaterielDetailsPage() { const params = useParams(); const router = useRouter(); const id = params.id as string; const [materiel, setMateriel] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (id) { loadMateriel(); } }, [id]); const loadMateriel = async () => { try { setLoading(true); const data = await apiService.materiels.getById(Number(id)); setMateriel(data); } catch (error) { console.error('Erreur lors du chargement du matériel:', error); // L'intercepteur API gérera automatiquement la redirection si 401 } finally { setLoading(false); } }; const formatMontant = (montant: number) => { return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' }).format(montant); }; const getStatutSeverity = (statut: string) => { switch (statut?.toUpperCase()) { case 'DISPONIBLE': return 'success'; case 'EN_UTILISATION': return 'warning'; case 'EN_MAINTENANCE': return 'info'; case 'HORS_SERVICE': return 'danger'; default: return 'info'; } }; const statutTemplate = (rowData: Reservation) => { return ; }; if (loading || !materiel) { return
Chargement...
; } return (

Informations

Type: {materiel.type}
Marque: {materiel.marque}
Modèle: {materiel.modele}
Date d'achat: {materiel.dateAchat}
Prix d'achat: {formatMontant(materiel.prixAchat)}
Tarif journalier: {formatMontant(materiel.tauxJournalier)}

Disponibilité

(
); }