From 409eef0281c5e0feec9a88118cecf8165289f657 Mon Sep 17 00:00:00 2001 From: "open-swe-dev-andrinoid[bot]" Date: Thu, 22 Jan 2026 06:02:44 +0000 Subject: [PATCH] Apply patch [skip ci] --- routes/api/update/lease_invite.ts | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 routes/api/update/lease_invite.ts diff --git a/routes/api/update/lease_invite.ts b/routes/api/update/lease_invite.ts new file mode 100644 index 0000000..93bf3b6 --- /dev/null +++ b/routes/api/update/lease_invite.ts @@ -0,0 +1,67 @@ +// routes/api/update/lease_invite.ts +import { define } from "../../../utils.ts"; +import { getLeaseById } from "../../../services/leaseService.ts"; +import { createTenantInvite } from "../../../services/tenantInviteService.ts"; +import { SessionCookie } from "../../auth/callback.ts"; + +export const handler = define.handlers({ + async POST(ctx) { + try { + const stateData: SessionCookie = ctx.state.data; + const { user_id } = stateData || {}; + + if (!user_id) { + return new Response(JSON.stringify({ error: "Unauthorized" }), { + status: 401, + headers: { "Content-Type": "application/json" }, + }); + } + + const contentType = ctx.req.headers.get("content-type") || ""; + let data: Record = {}; + if (contentType.includes("application/json")) { + data = await ctx.req.json(); + } else { + const form = await ctx.req.formData(); + for (const [k, v] of form.entries()) { + data[k] = typeof v === "string" ? v : String(v); + } + } + + const lease_id = (data.lease_id as string) || (data["lease_id"] as string); + if (!lease_id) { + return new Response(JSON.stringify({ error: "lease_id is required" }), { + status: 400, + headers: { "Content-Type": "application/json" }, + }); + } + + const lease = await getLeaseById(lease_id); + if (!lease) { + return new Response(JSON.stringify({ error: "lease not found" }), { + status: 404, + headers: { "Content-Type": "application/json" }, + }); + } + + const property_id = lease.property_id as string | undefined; + if (!property_id) { + return new Response(JSON.stringify({ error: "lease has no property_id" }), { + status: 400, + headers: { "Content-Type": "application/json" }, + }); + } + + const invite = await createTenantInvite(user_id as string, property_id); + return new Response(JSON.stringify({ success: true, invite }), { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (err) { + return new Response(JSON.stringify({ error: String(err) }), { + status: 500, + headers: { "Content-Type": "application/json" }, + }); + } + }, +});