44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { db } from '@/lib/prisma';
|
|
import { createComplex } from '@/modules/complex/services/complex.service';
|
|
import type { AppContext } from '@/types/hono';
|
|
import type { CreateComplexInput } from '@repo/api-contract';
|
|
|
|
export async function createComplexHandler(c: AppContext) {
|
|
const payload = c.req.valid('json' as never) as CreateComplexInput;
|
|
|
|
const user = c.get('user');
|
|
let adminEmail = user?.email;
|
|
let userId = user?.id;
|
|
|
|
if (!adminEmail) {
|
|
const body = await c.req.json().catch(() => ({}));
|
|
adminEmail = body.adminEmail;
|
|
userId = body.userId;
|
|
}
|
|
|
|
if (!adminEmail) {
|
|
return c.json({ message: 'Se requiere email del administrador.' }, 400);
|
|
}
|
|
|
|
if (!userId && adminEmail) {
|
|
const existingUser = await db.user.findUnique({
|
|
where: { email: adminEmail },
|
|
select: { id: true },
|
|
});
|
|
userId = existingUser?.id;
|
|
}
|
|
|
|
const complex = await createComplex({
|
|
complexName: payload.complexName,
|
|
physicalAddress: payload.physicalAddress,
|
|
adminEmail,
|
|
userId,
|
|
planCode: payload.planCode,
|
|
city: payload.city,
|
|
state: payload.state,
|
|
country: payload.country,
|
|
});
|
|
|
|
return c.json(complex, 201);
|
|
}
|