Add tags to commssion types and custom types. Add button for example images to cards
This commit is contained in:
@ -25,6 +25,9 @@ export async function createCommissionCustomCard(
|
||||
referenceImageUrl: data.referenceImageUrl ?? null,
|
||||
isVisible: data.isVisible ?? true,
|
||||
isSpecialOffer: data.isSpecialOffer ?? false,
|
||||
tags: data.tagIds?.length
|
||||
? { connect: data.tagIds.map((id) => ({ id })) }
|
||||
: undefined,
|
||||
options: {
|
||||
create:
|
||||
data.options?.map((opt, index) => ({
|
||||
|
||||
@ -20,6 +20,12 @@ export async function updateCommissionCustomCard(
|
||||
referenceImageUrl: data.referenceImageUrl ?? null,
|
||||
isVisible: data.isVisible ?? true,
|
||||
isSpecialOffer: data.isSpecialOffer ?? false,
|
||||
tags: data.tagIds
|
||||
? {
|
||||
set: [],
|
||||
connect: data.tagIds.map((id) => ({ id })),
|
||||
}
|
||||
: undefined,
|
||||
options: {
|
||||
deleteMany: {},
|
||||
create: data.options?.map((opt, index) => ({
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use server"
|
||||
"use server";
|
||||
|
||||
import { prisma } from "@/lib/prisma"
|
||||
import { commissionTypeSchema } from "@/schemas/commissionType"
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { commissionTypeSchema } from "@/schemas/commissionType";
|
||||
|
||||
export async function createCommissionOption(data: { name: string }) {
|
||||
return await prisma.commissionOption.create({
|
||||
@ -9,7 +9,7 @@ export async function createCommissionOption(data: { name: string }) {
|
||||
name: data.name,
|
||||
description: "",
|
||||
},
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
export async function createCommissionExtra(data: { name: string }) {
|
||||
@ -18,64 +18,70 @@ export async function createCommissionExtra(data: { name: string }) {
|
||||
name: data.name,
|
||||
description: "",
|
||||
},
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
export async function createCommissionCustomInput(data: {
|
||||
name: string
|
||||
fieldId: string
|
||||
name: string;
|
||||
fieldId: string;
|
||||
}) {
|
||||
return await prisma.commissionCustomInput.create({
|
||||
data: {
|
||||
name: data.name,
|
||||
fieldId: data.fieldId,
|
||||
},
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
export async function createCommissionType(formData: commissionTypeSchema) {
|
||||
const parsed = commissionTypeSchema.safeParse(formData)
|
||||
const parsed = commissionTypeSchema.safeParse(formData);
|
||||
|
||||
if (!parsed.success) {
|
||||
console.error("Validation failed", parsed.error)
|
||||
throw new Error("Invalid input")
|
||||
console.error("Validation failed", parsed.error);
|
||||
throw new Error("Invalid input");
|
||||
}
|
||||
|
||||
const data = parsed.data
|
||||
const data = parsed.data;
|
||||
|
||||
const created = await prisma.commissionType.create({
|
||||
data: {
|
||||
name: data.name,
|
||||
description: data.description,
|
||||
tags: data.tagIds?.length
|
||||
? { connect: data.tagIds.map((id) => ({ id })) }
|
||||
: undefined,
|
||||
options: {
|
||||
create: data.options?.map((opt, index) => ({
|
||||
option: { connect: { id: opt.optionId } },
|
||||
price: opt.price,
|
||||
pricePercent: opt.pricePercent,
|
||||
priceRange: opt.priceRange,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
create:
|
||||
data.options?.map((opt, index) => ({
|
||||
option: { connect: { id: opt.optionId } },
|
||||
price: opt.price,
|
||||
pricePercent: opt.pricePercent,
|
||||
priceRange: opt.priceRange,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
},
|
||||
extras: {
|
||||
create: data.extras?.map((ext, index) => ({
|
||||
extra: { connect: { id: ext.extraId } },
|
||||
price: ext.price,
|
||||
pricePercent: ext.pricePercent,
|
||||
priceRange: ext.priceRange,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
create:
|
||||
data.extras?.map((ext, index) => ({
|
||||
extra: { connect: { id: ext.extraId } },
|
||||
price: ext.price,
|
||||
pricePercent: ext.pricePercent,
|
||||
priceRange: ext.priceRange,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
},
|
||||
customInputs: {
|
||||
create: data.customInputs?.map((c, index) => ({
|
||||
customInput: { connect: { id: c.customInputId } },
|
||||
label: c.label,
|
||||
inputType: c.inputType,
|
||||
required: c.required,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
create:
|
||||
data.customInputs?.map((c, index) => ({
|
||||
customInput: { connect: { id: c.customInputId } },
|
||||
label: c.label,
|
||||
inputType: c.inputType,
|
||||
required: c.required,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
},
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
return created
|
||||
}
|
||||
return created;
|
||||
}
|
||||
|
||||
@ -1,20 +1,26 @@
|
||||
"use server"
|
||||
"use server";
|
||||
|
||||
import { prisma } from "@/lib/prisma"
|
||||
import { commissionTypeSchema } from "@/schemas/commissionType"
|
||||
import * as z from "zod/v4"
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { commissionTypeSchema } from "@/schemas/commissionType";
|
||||
import type * as z from "zod/v4";
|
||||
|
||||
export async function updateCommissionType(
|
||||
id: string,
|
||||
rawData: z.infer<typeof commissionTypeSchema>
|
||||
rawData: z.infer<typeof commissionTypeSchema>,
|
||||
) {
|
||||
const data = commissionTypeSchema.parse(rawData)
|
||||
const data = commissionTypeSchema.parse(rawData);
|
||||
|
||||
const updated = await prisma.commissionType.update({
|
||||
where: { id },
|
||||
data: {
|
||||
name: data.name,
|
||||
description: data.description,
|
||||
tags: data.tagIds
|
||||
? {
|
||||
set: [],
|
||||
connect: data.tagIds.map((id) => ({ id })),
|
||||
}
|
||||
: undefined,
|
||||
options: {
|
||||
deleteMany: {},
|
||||
create: data.options?.map((opt, index) => ({
|
||||
@ -37,13 +43,14 @@ export async function updateCommissionType(
|
||||
},
|
||||
customInputs: {
|
||||
deleteMany: {},
|
||||
create: data.customInputs?.map((c, index) => ({
|
||||
customInput: { connect: { id: c.customInputId } },
|
||||
label: c.label,
|
||||
inputType: c.inputType,
|
||||
required: c.required,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
create:
|
||||
data.customInputs?.map((c, index) => ({
|
||||
customInput: { connect: { id: c.customInputId } },
|
||||
label: c.label,
|
||||
inputType: c.inputType,
|
||||
required: c.required,
|
||||
sortIndex: index,
|
||||
})) || [],
|
||||
},
|
||||
},
|
||||
include: {
|
||||
@ -51,7 +58,7 @@ export async function updateCommissionType(
|
||||
extras: true,
|
||||
customInputs: true,
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
return updated
|
||||
return updated;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user