import { notFound, redirect } from "next/navigation" import { and, eq } from "drizzle-orm" import { db } from "@/lib/db" import { maintenance_requests } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" import Link from "next/link" import { formatCurrency, formatDate } from "@/lib/utils" import { MaintenanceStatusBadge, PriorityBadge } from "@/components/dashboard/maintenance-status-badge" import { MaintenanceStatusUpdater } from "@/components/forms/maintenance-status-updater" export default async function MaintenanceDetailPage({ params }: { params: Promise<{ requestId: string }> }) { const user = await getSessionUser() if (!user) redirect("/login") const { requestId } = await params const req = await db.query.maintenance_requests.findFirst({ where: and( eq(maintenance_requests.id, requestId), eq(maintenance_requests.user_id, user.id) ), with: { property: { columns: { name: true, address_line1: true, city: true } }, unit: { columns: { unit_number: true } }, tenant: { columns: { first_name: true, last_name: true, email: true, phone: true } }, }, }) if (!req) notFound() const request = req as any return (
{/* Breadcrumb */}
Maintenance / {request.title}
{/* Header */}

{request.title}

{request.property?.name}{request.unit ? ` · Unit ${request.unit.unit_number}` : ""} · Opened {formatDate(request.created_at)}

{/* Main details */}

Description

{request.description}

{request.resolution_notes && ( <>

Resolution Notes

{request.resolution_notes}

)}
{/* Status updater */}
{/* Sidebar */}
{/* Details card */}

Details

{request.assigned_to && } {request.estimated_cost && } {request.actual_cost && } {request.resolved_at && }
{/* Tenant card */} {request.tenant && (

Tenant

{request.tenant.first_name} {request.tenant.last_name}

{request.tenant.email &&

{request.tenant.email}

} {request.tenant.phone &&

{request.tenant.phone}

}
)}
) } function Row({ label, value }: { label: string; value: string }) { return (
{label} {value}
) }