"use client"; import { useState } from "react"; import { format } from "date-fns"; import { tr } from "date-fns/locale"; import { Card, CardContent, Badge, Button, Textarea, Label } from "poyraz-ui/atoms"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter } from "poyraz-ui/molecules"; import { CheckCircle2, Clock, MessageSquare, Loader2, RefreshCw } from "lucide-react"; import { toast } from "poyraz-ui/molecules"; import { createRevisionRequest } from "./actions"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "poyraz-ui/molecules"; export type PortalProjectDetail = { id: string; name: string; description: string | null; status: "planning" | "active" | "paused" | "completed" | "cancelled"; progress: number; due_date: string | null; revision_quota: number; can_request_revision: boolean; }; export type PortalPlanningSection = { id: string; title: string; content: string | null; type: string; }; export type PortalTask = { id: string; title: string; status: "todo" | "in_progress" | "done"; date: string | null; }; export type PortalRevision = { id: string; description: string; status: "pending" | "in_progress" | "completed" | "rejected"; created_at: string; }; type PortalProjectClientProps = { project: PortalProjectDetail; sections: PortalPlanningSection[]; tasks: PortalTask[]; revisions: PortalRevision[]; }; export function PortalProjectClient({ project, sections, tasks, revisions }: PortalProjectClientProps) { const [isSubmitting, setIsSubmitting] = useState(false); const [openRevision, setOpenRevision] = useState(false); const handleRevision = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); const formData = new FormData(e.currentTarget); try { const res = await createRevisionRequest(project.id, formData); if (res.error) throw new Error(res.error); toast.success("Revizyon talebiniz başarıyla iletildi."); setOpenRevision(false); } catch (error: unknown) { toast.error(error instanceof Error ? error.message : "Revizyon talebi oluşturulamadı."); } finally { setIsSubmitting(false); } }; const pendingRevisions = revisions.filter((revision) => revision.status === 'pending' || revision.status === 'in_progress').length; const hasRevisionQuota = project.can_request_revision; return (
{/* Header Info */}

{project.name}

{project.description &&

{project.description}

}
{project.status} {hasRevisionQuota ? (
Yeni Revizyon Talebi
{pendingRevisions > 0 && (
Şu anda sonuçlanmamış {pendingRevisions} adet revizyon talebiniz var. Yeni bir tane eklemek istediğinize emin misiniz?
)}