refactor(api): share rate card support shapes
This commit is contained in:
@@ -19,6 +19,45 @@ type CreateRateCardLineInput = z.infer<typeof CreateRateCardLineSchema>;
|
||||
type UpdateRateCardInput = z.infer<typeof UpdateRateCardSchema>;
|
||||
type UpdateRateCardLineInput = z.infer<typeof UpdateRateCardLineSchema>;
|
||||
|
||||
export const rateCardSummaryInclude = {
|
||||
_count: { select: { lines: true } },
|
||||
client: { select: { id: true, name: true, code: true } },
|
||||
} as const;
|
||||
|
||||
export const rateCardLineOrderBy: Prisma.RateCardLineOrderByWithRelationInput[] = [
|
||||
{ chapter: "asc" },
|
||||
{ seniority: "asc" },
|
||||
{ createdAt: "asc" },
|
||||
];
|
||||
|
||||
export const rateCardDetailInclude = {
|
||||
client: { select: { id: true, name: true, code: true } },
|
||||
lines: {
|
||||
select: {
|
||||
id: true,
|
||||
rateCardId: true,
|
||||
roleId: true,
|
||||
chapter: true,
|
||||
seniority: true,
|
||||
location: true,
|
||||
workType: true,
|
||||
serviceGroup: true,
|
||||
costRateCents: true,
|
||||
billRateCents: true,
|
||||
machineRateCents: true,
|
||||
attributes: true,
|
||||
role: { select: { id: true, name: true } },
|
||||
},
|
||||
orderBy: rateCardLineOrderBy,
|
||||
},
|
||||
} as const;
|
||||
|
||||
export const rateCardCreateInclude = {
|
||||
lines: {
|
||||
select: rateCardDetailInclude.lines.select,
|
||||
},
|
||||
} as const;
|
||||
|
||||
function buildRateCardLineCoreData(
|
||||
line: CreateRateCardLineInput,
|
||||
) {
|
||||
@@ -134,3 +173,33 @@ export function buildRateCardLineUpdateData(
|
||||
|
||||
return updateData;
|
||||
}
|
||||
|
||||
export function buildRateCardCreateAuditAfter(
|
||||
input: Pick<CreateRateCardInput, "name" | "currency" | "lines">,
|
||||
) {
|
||||
return {
|
||||
name: input.name,
|
||||
currency: input.currency,
|
||||
lineCount: input.lines.length,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildRateCardLineCreateAuditAfter(
|
||||
input: {
|
||||
rateCardId: string;
|
||||
line: Pick<CreateRateCardLineInput, "costRateCents" | "billRateCents" | "chapter">;
|
||||
},
|
||||
) {
|
||||
return {
|
||||
rateCardId: input.rateCardId,
|
||||
costRateCents: input.line.costRateCents,
|
||||
billRateCents: input.line.billRateCents,
|
||||
chapter: input.line.chapter ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildRateCardReplaceLinesAuditAfter(
|
||||
replacedLineCount: number,
|
||||
) {
|
||||
return { replacedLineCount };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user