feat: implement onboarding flow with complex creation and email verification, and add Zustand for state management

This commit is contained in:
Jose Selesan
2026-04-21 09:14:45 -03:00
parent 23e4218f6f
commit 07408dbbbe
29 changed files with 843 additions and 71 deletions

View File

@@ -6,6 +6,7 @@ export type CreateComplexInput = {
complexName: string;
physicalAddress: string;
adminEmail: string;
userId?: string;
planCode?: string;
city?: string;
state?: string;
@@ -64,20 +65,36 @@ async function buildUniqueSlug(source: string, excludeComplexId?: string): Promi
}
export async function createComplex(input: CreateComplexInput) {
const complexSlug = await buildUniqueSlug(input.complexName);
const { userId, ...rest } = input;
return db.complex.create({
data: {
id: uuidv7(),
complexName: input.complexName,
physicalAddress: input.physicalAddress.trim(),
city: input.city?.trim() || null,
state: input.state?.trim() || null,
country: input.country?.trim() || null,
complexSlug,
adminEmail: input.adminEmail,
planCode: input.planCode,
},
return db.$transaction(async (tx) => {
const complexSlug = await buildUniqueSlug(input.complexName);
const complex = await tx.complex.create({
data: {
id: uuidv7(),
complexName: input.complexName,
physicalAddress: input.physicalAddress.trim(),
city: input.city?.trim() || null,
state: input.state?.trim() || null,
country: input.country?.trim() || null,
complexSlug,
adminEmail: input.adminEmail,
planCode: input.planCode,
},
});
if (userId) {
await tx.complexUser.create({
data: {
complexId: complex.id,
userId,
role: 'ADMIN',
},
});
}
return complex;
});
}