Add commission type example image
This commit is contained in:
@ -399,6 +399,7 @@ model CommissionGuidelines {
|
|||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
|
|
||||||
markdown String
|
markdown String
|
||||||
|
exampleImageUrl String?
|
||||||
isActive Boolean @default(true)
|
isActive Boolean @default(true)
|
||||||
|
|
||||||
@@index([isActive])
|
@@index([isActive])
|
||||||
|
|||||||
@ -1,21 +1,60 @@
|
|||||||
import { CommissionCard } from "@/components/commissions/CommissionCard";
|
import { CommissionCard } from "@/components/commissions/CommissionCard";
|
||||||
import CommissionGuidelines from "@/components/commissions/CommissionGuidelines";
|
import CommissionGuidelines from "@/components/commissions/CommissionGuidelines";
|
||||||
import { CommissionOrderForm } from "@/components/commissions/CommissionOrderForm";
|
import { CommissionOrderForm } from "@/components/commissions/CommissionOrderForm";
|
||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogContent,
|
||||||
|
DialogHeader,
|
||||||
|
DialogTitle,
|
||||||
|
DialogTrigger,
|
||||||
|
} from "@/components/ui/dialog";
|
||||||
import { prisma } from "@/lib/prisma";
|
import { prisma } from "@/lib/prisma";
|
||||||
|
import Image from "next/image";
|
||||||
|
|
||||||
export default async function CommissionsPage() {
|
export default async function CommissionsPage() {
|
||||||
const commissions = await prisma.commissionType.findMany({
|
const [commissions, guidelines] = await Promise.all([
|
||||||
include: {
|
prisma.commissionType.findMany({
|
||||||
options: { include: { option: true }, orderBy: { sortIndex: "asc" } },
|
include: {
|
||||||
extras: { include: { extra: true }, orderBy: { sortIndex: "asc" } },
|
options: { include: { option: true }, orderBy: { sortIndex: "asc" } },
|
||||||
customInputs: { include: { customInput: true }, orderBy: { sortIndex: "asc" } },
|
extras: { include: { extra: true }, orderBy: { sortIndex: "asc" } },
|
||||||
},
|
customInputs: { include: { customInput: true }, orderBy: { sortIndex: "asc" } },
|
||||||
orderBy: [{ sortIndex: "asc" }, { name: "asc" }],
|
},
|
||||||
})
|
orderBy: [{ sortIndex: "asc" }, { name: "asc" }],
|
||||||
|
}),
|
||||||
|
prisma.commissionGuidelines.findFirst({
|
||||||
|
where: { isActive: true },
|
||||||
|
orderBy: { createdAt: "desc" },
|
||||||
|
select: { exampleImageUrl: true },
|
||||||
|
}),
|
||||||
|
]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mx-auto w-full max-w-6xl px-4 py-8 flex flex-col gap-8">
|
<div className="mx-auto w-full max-w-6xl px-4 py-8 flex flex-col gap-8">
|
||||||
<h1 className="text-3xl font-bold">Commission Pricing</h1>
|
<div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
|
||||||
|
<h1 className="text-3xl font-bold">Commission Pricing</h1>
|
||||||
|
{guidelines?.exampleImageUrl ? (
|
||||||
|
<Dialog>
|
||||||
|
<DialogTrigger asChild>
|
||||||
|
<Button variant="secondary">View example</Button>
|
||||||
|
</DialogTrigger>
|
||||||
|
<DialogContent className="w-[min(95vw,1200px)] max-w-300 p-4 sm:p-6">
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle></DialogTitle>
|
||||||
|
</DialogHeader>
|
||||||
|
<div className="relative w-full h-[80vh] max-h-[80vh] overflow-hidden rounded-xl border-2 border-border/60 bg-muted shadow-2xl">
|
||||||
|
<Image
|
||||||
|
src={guidelines.exampleImageUrl}
|
||||||
|
alt="Commission example"
|
||||||
|
fill
|
||||||
|
sizes="(max-width: 640px) 95vw, 1200px"
|
||||||
|
className="object-contain"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 items-start">
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 items-start">
|
||||||
{commissions.map((commission) => (
|
{commissions.map((commission) => (
|
||||||
<CommissionCard key={commission.id} commission={commission} />
|
<CommissionCard key={commission.id} commission={commission} />
|
||||||
@ -27,4 +66,4 @@ export default async function CommissionsPage() {
|
|||||||
<CommissionOrderForm types={commissions} />
|
<CommissionOrderForm types={commissions} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user