diff --git a/app/(dashboard)/projects/[id]/page.tsx b/app/(dashboard)/projects/[id]/page.tsx
index 51430bd..da2069d 100644
--- a/app/(dashboard)/projects/[id]/page.tsx
+++ b/app/(dashboard)/projects/[id]/page.tsx
@@ -33,6 +33,7 @@ type TaskRow = {
status: string | null;
priority: string | null;
due_at: string | null;
+ is_public_to_client: boolean | null;
};
type FinanceRow = {
@@ -60,7 +61,7 @@ export default async function ProjectDetailPage({
return null;
}
- const [{ data: projectRow }, { data: sectionRows }, { data: taskRows }, { data: financeRows }] =
+ const [{ data: projectRow }, { data: sectionRows }, { data: taskRows }, { data: financeRows }, { data: revisionRows }] =
await Promise.all([
supabase
.from("projects")
@@ -79,7 +80,7 @@ export default async function ProjectDetailPage({
.order("created_at", { ascending: true }),
supabase
.from("tasks")
- .select("id, title, status, priority, due_at")
+ .select("id, title, status, priority, due_at, is_public_to_client")
.eq("project_id", id)
.eq("user_id", user.id)
.order("created_at", { ascending: false }),
@@ -89,6 +90,11 @@ export default async function ProjectDetailPage({
.eq("project_id", id)
.eq("user_id", user.id)
.order("transaction_date", { ascending: false }),
+ supabase
+ .from("project_revisions")
+ .select("id, description, status, created_at, requested_by")
+ .eq("project_id", id)
+ .order("created_at", { ascending: false }),
]);
if (!projectRow) {
@@ -129,7 +135,9 @@ export default async function ProjectDetailPage({
status: normalizeTaskStatus(task.status),
priority: normalizeTaskPriority(task.priority),
due_at: task.due_at,
+ is_public_to_client: task.is_public_to_client || false,
}));
+ const revisions = revisionRows || [];
const financeTransactions: ProjectFinanceItem[] = ((financeRows || []) as FinanceRow[]).map(
(transaction) => ({
id: transaction.id,
@@ -148,6 +156,7 @@ export default async function ProjectDetailPage({
sections={sections}
tasks={tasks}
financeTransactions={financeTransactions}
+ revisions={revisions}
/>
);
}
diff --git a/app/(dashboard)/projects/[id]/project-detail-client.tsx b/app/(dashboard)/projects/[id]/project-detail-client.tsx
index bb4af79..5681aa4 100644
--- a/app/(dashboard)/projects/[id]/project-detail-client.tsx
+++ b/app/(dashboard)/projects/[id]/project-detail-client.tsx
@@ -87,6 +87,7 @@ export type ProjectDetailTaskItem = {
status: "todo" | "in_progress" | "done";
priority: "low" | "medium" | "high" | "urgent";
due_at: string | null;
+ is_public_to_client: boolean;
};
export type ProjectFinanceItem = {
@@ -104,6 +105,7 @@ type ProjectDetailClientProps = {
sections: ProjectPlanningSectionItem[];
tasks: ProjectDetailTaskItem[];
financeTransactions: ProjectFinanceItem[];
+ revisions: any[];
};
const typeLabels = {
@@ -168,8 +170,9 @@ export function ProjectDetailClient({
sections,
tasks,
financeTransactions,
+ revisions,
}: ProjectDetailClientProps) {
- const [activeTab, setActiveTab] = useState<"planning" | "design" | "tasks" | "finance">(
+ const [activeTab, setActiveTab] = useState<"planning" | "design" | "tasks" | "finance" | "revisions">(
"planning",
);
const planningSections = sections.filter((section) =>
@@ -290,6 +293,14 @@ export function ProjectDetailClient({
Bu proje için henüz bir revizyon talebi oluşturulmamış. {rev.description}Müşteri Revizyon Talepleri
+ {revisions.length === 0 ? (
+
+ Eğer müşteri hesabı varsa, bu görev müşteri portalındaki proje detayında da görünür olur. +
+