// routes/api/retrieve/landlord_dashboard.ts import { define } from "../../../utils.ts"; import { getLandlordDashboardData, getLandlordOnboardingStatus, isUserLandlord, } from "../../../services/landlordService.ts"; import { SessionCookie } from "../../auth/callback.ts"; export const handler = define.handlers({ async GET(ctx) { try { const stateData: SessionCookie = ctx.state.data; const { user_id } = stateData; const url = new URL(ctx.req.url); const onboarding_only = url.searchParams.get("onboarding_only") === "true"; // Check if user is a landlord const isLandlord = await isUserLandlord(user_id); if (!isLandlord) { return new Response( JSON.stringify({ error: "User is not a landlord", }), { status: 403, headers: { "Content-Type": "application/json" }, }, ); } if (onboarding_only) { // Get onboarding status only const onboardingStatus = await getLandlordOnboardingStatus(user_id); return new Response( JSON.stringify({ success: true, onboarding: onboardingStatus, }), { status: 200, headers: { "Content-Type": "application/json" }, }, ); } else { // Get full dashboard data const dashboardData = await getLandlordDashboardData(user_id); const onboardingStatus = await getLandlordOnboardingStatus(user_id); return new Response( JSON.stringify({ success: true, dashboard: dashboardData, onboarding: onboardingStatus, }), { status: 200, headers: { "Content-Type": "application/json" }, }, ); } } catch (e) { return new Response(JSON.stringify({ error: e }), { status: 500, headers: { "Content-Type": "application/json" }, }); } }, });