- Removed organization dependency from group creation logic. - Introduced new route and use-case for creating groups. - Refactored form handling for group creation into a reusable GroupForm component. - Updated API calls to support new group creation endpoint. - Adjusted tests to reflect changes in group creation logic and validation. - Removed obsolete organizations route and related components. - Updated breadcrumb navigation and routing for group management.
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import type { PrismaClient } from '@generated/prisma/client';
|
|
import type { BillingType, GroupDto, WeekDay } from '@gruperly/shared';
|
|
|
|
export type GroupDb = Pick<PrismaClient, 'group' | 'groupMember'>;
|
|
|
|
type PriceLike = { toString(): string };
|
|
|
|
export type GroupRecord = {
|
|
id: string;
|
|
name: string;
|
|
description: string | null;
|
|
createdById: string;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
days: WeekDay[] | null;
|
|
time: string | null;
|
|
capacity: number | null;
|
|
price: PriceLike | number | null;
|
|
billingType: BillingType | null;
|
|
dueDay: number | null;
|
|
inviteToken?: string | null;
|
|
};
|
|
|
|
export function toGroupDto(record: GroupRecord): GroupDto {
|
|
return {
|
|
id: record.id,
|
|
name: record.name,
|
|
description: record.description,
|
|
createdById: record.createdById,
|
|
createdAt: record.createdAt.toISOString(),
|
|
updatedAt: record.updatedAt.toISOString(),
|
|
days: record.days,
|
|
time: record.time,
|
|
capacity: record.capacity,
|
|
price: record.price == null ? null : Number(record.price.toString()),
|
|
billingType: record.billingType,
|
|
dueDay: record.dueDay,
|
|
inviteToken: record.inviteToken ?? null,
|
|
};
|
|
}
|
|
|
|
export function buildGroupWhereForUser(userId: string) {
|
|
return {
|
|
OR: [
|
|
{ createdById: userId },
|
|
{ members: { some: { userId } } },
|
|
],
|
|
};
|
|
} |