// routes/tenant/maintenance/index.tsx import { define } from "../../../utils.ts"; import { getMaintenanceRequestsByUser } from "../../../services/maintenanceRequestService.ts"; import { page } from "fresh"; import { MaintenanceRequest } from "../../../db/interfaces.ts"; export const handler = define.handlers({ async GET(ctx) { const { user_id } = ctx.state.data; const url = new URL(ctx.req.url); const success = url.searchParams.get("success"); if (!user_id) { return new Response("", { status: 302, headers: { Location: "/auth/login" }, }); } try { const maintenanceRequests = await getMaintenanceRequestsByUser(user_id); return page({ maintenanceRequests, success: success === "true", }); } catch (error) { console.error("Error loading maintenance requests:", error); return page({ error: "Failed to load maintenance requests", }); } }, }); export default define.page(function TenantMaintenance({ data }) { const { maintenanceRequests, success, error } = data as { maintenanceRequests: MaintenanceRequest[]; success?: boolean; error?: string; }; return (
{/* Header */}

Maintenance Requests

Track your property maintenance requests

{success && (
Your maintenance request has been submitted successfully!
)} {error && (
{error}
)} {/* Status Filter */} {maintenanceRequests && maintenanceRequests.length > 0 ? (
{maintenanceRequests.map((request) => (

{request.description}

{request.status?.replace("_", " ") || "open"}
{request.request_type || "general"}
Priority: {request.priority}
{new Date(request.created_on as number) .toLocaleDateString()}
{request.description && (

{request.description}

)}
View Details {request.status === "completed" && ( ✓ Resolved )}
))}
) : (

No maintenance requests

You haven't submitted any maintenance requests yet.

)} {/* Emergency Contact Info */}

Emergency Maintenance

For emergencies (gas leaks, electrical hazards, flooding, no heat in winter, security issues), call the emergency maintenance line immediately: (555) 123-HELP

); });