'use client';

import { useState, useEffect, useCallback, useMemo } from 'react';
import { useRouter, useSearchParams } from 'next/navigation';
import { toast } from "sonner";
import { OrderDetail, OrderManagement, OrderEdit } from '@/backend/route-params';
import { getOrderDetail, changeOrderStatus, deleteOrder } from '@/backend/actions/OrderDetail';
import type { OrderStatus, OrderDetailData } from '@/backend/actions/OrderDetail';
import { Button } from "@/components/ui/button";
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription } from "@/components/ui/dialog";

// ===== 枚举映射 =====
const STATUS_LABELS: Record<OrderStatus, string> = {
  PENDING: 'قيد الانتظار',
  IN_PROGRESS: 'قيد التنفيذ',
  DELIVERED: 'تم التوصيل',
  CANCELLED: 'ملغى'
};
export default function OrderDetailPage() {
  const router = useRouter();
  const searchParams = useSearchParams();
  const {
    orderId
  } = OrderDetail.getParams(searchParams);

  // ===== State =====
  const [isLoading, setIsLoading] = useState(true);
  const [orderData, setOrderData] = useState<OrderDetailData | null>(null);
  const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
  const [isDeleting, setIsDeleting] = useState(false);
  const [statusChangeDialog, setStatusChangeDialog] = useState<{
    isOpen: boolean;
    targetStatus: OrderStatus | null;
  }>({
    isOpen: false,
    targetStatus: null
  });
  const [isChangingStatus, setIsChangingStatus] = useState(false);

  // ===== Handlers =====
  const fetchOrder = useCallback(async (id: string) => {
    setIsLoading(true);
    try {
      const data = await getOrderDetail({
        order_id: id
      });
      setOrderData(data.order);
    } catch (error) {
      const msg = error instanceof Error ? error.message : 'خطأ في جلب البيانات';
      toast.error(msg);
    } finally {
      setIsLoading(false);
    }
  }, []);
  const confirmDelete = async () => {
    if (!orderData) return;
    setIsDeleting(true);
    try {
      await deleteOrder({
        order_id: orderData.order_id
      });
      toast.success('تم حذف الطلب بنجاح');
      OrderManagement.navigateToDefault(router);
    } catch (error) {
      const msg = error instanceof Error ? error.message : 'حدث خطأ أثناء الحذف';
      toast.error(msg);
      setIsDeleting(false);
    }
  };
  const confirmStatusChange = async () => {
    if (!orderData || !statusChangeDialog.targetStatus) return;
    setIsChangingStatus(true);
    try {
      await changeOrderStatus({
        order_id: orderData.order_id,
        new_status: statusChangeDialog.targetStatus
      });
      toast.success('تم تحديث حالة الطلب بنجاح');
      await fetchOrder(orderData.order_id);
      setStatusChangeDialog({
        isOpen: false,
        targetStatus: null
      });
    } catch (error) {
      const msg = error instanceof Error ? error.message : 'حدث خطأ أثناء تغيير الحالة';
      toast.error(msg);
    } finally {
      setIsChangingStatus(false);
    }
  };
  const openStatusChangeDialog = (targetStatus: OrderStatus) => {
    setStatusChangeDialog({
      isOpen: true,
      targetStatus
    });
  };

  // ===== Effects =====
  useEffect(() => {
    if (!orderId) {
      OrderManagement.navigateToDefault(router);
    } else {
      fetchOrder(orderId);
    }
  }, [orderId, router, fetchOrder]);

  // ===== Memoized Display Data =====
  const displayData = useMemo(() => {
    if (!orderData) return null;
    return {
      ...orderData,
      created_at_formatted: new Date(orderData.created_at).toLocaleString('ar-IQ'),
      updated_at_formatted: new Date(orderData.updated_at).toLocaleString('ar-IQ'),
      histories: orderData.status_histories.map((h, index) => ({
        ...h,
        created_at_formatted: new Date(h.created_at).toLocaleString('ar-IQ')
      }))
    };
  }, [orderData]);

  // ===== Render =====
  if (isLoading) {
    return <main data-api-unique-id='orderdetailview-skeleton-with-logic-r0d78551e34592dee-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <p data-api-unique-id='orderdetailview-skeleton-with-logic-rd66406e325ab0e64-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>جاري تحميل بيانات الطلب...</p>
      </main>;
  }
  if (!displayData) {
    return <main data-api-unique-id='orderdetailview-skeleton-with-logic-r4b554746e4dc6f75-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <p data-api-unique-id='orderdetailview-skeleton-with-logic-r9c67dc59245b7cbc-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>الطلب غير موجود أو حدث خطأ أثناء التحميل.</p>
        <Button onClick={() => OrderManagement.navigateToDefault(router)} data-api-unique-id='orderdetailview-skeleton-with-logic-rae0e13d96d5f873c-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          العودة لإدارة الطلبات
        </Button>
      </main>;
  }
  return <main data-api-unique-id='orderdetailview-skeleton-with-logic-r298c7be58c0e13ea-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
      <menu data-api-unique-id='orderdetailview-skeleton-with-logic-r79d7c45b66c59910-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <Button onClick={() => OrderEdit.navigateToEdit(router, {
        id: displayData.order_id
      })} data-api-unique-id='orderdetailview-skeleton-with-logic-r0607642d198aefbe-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          تعديل الطلب
        </Button>
        <Button variant="destructive" onClick={() => setIsDeleteDialogOpen(true)} data-api-unique-id='orderdetailview-skeleton-with-logic-r2d70af5c31027482-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          حذف الطلب
        </Button>
      </menu>

      <article data-api-unique-id='orderdetailview-skeleton-with-logic-r71adcc19ebadcc98-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <section data-api-unique-id='orderdetailview-skeleton-with-logic-rf144a9db2b98278a-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          <h2 data-api-unique-id='orderdetailview-skeleton-with-logic-r459e66bc08d23149-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>بيانات الزبون</h2>
          <dl data-api-unique-id='orderdetailview-skeleton-with-logic-rdf2e1e6277df64de-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r84e9bfe32f28d8ea-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>اسم الزبون</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r713fa93cb3d37b1c-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.customer_name}</dd>
            
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r20b7b4f914ccd066-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>رقم الزبون</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-rc4d6311752997d84-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.customer_phone}</dd>
          </dl>

          <h2 data-api-unique-id='orderdetailview-skeleton-with-logic-r4839d30ec57b4dd4-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>بيانات الموقع</h2>
          <dl data-api-unique-id='orderdetailview-skeleton-with-logic-rd23c9f35eefe81f5-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r8b8e271361c39404-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>المحافظة</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-rf7315bf26c7f027b-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.governorate_name}</dd>
            
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r3054ed10ad1dfe19-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>المنطقة</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-rc56dc648dfaf0ffa-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.area_name}</dd>
            
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r4c377cfecd3c1e23-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>أقرب نقطة دالة</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r70a17eb66258980b-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.nearest_landmark}</dd>
          </dl>
        </section>

        <section data-api-unique-id='orderdetailview-skeleton-with-logic-r9da816bce52374ff-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          <h2 data-api-unique-id='orderdetailview-skeleton-with-logic-rc8eeda9725c897be-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>بيانات التوصيل</h2>
          <dl data-api-unique-id='orderdetailview-skeleton-with-logic-r01acd8d3113c62c1-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-rbf11f11dbcf3a098-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>اسم السائق</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r3ca84e3c3ebfacd4-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.driver_name}</dd>
            
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r664ddebee4a03f88-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>نوع الطلب</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r3dd1d80ae292042e-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.order_type}</dd>
          </dl>

          <h2 data-api-unique-id='orderdetailview-skeleton-with-logic-r234e770be64d3838-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>الطوابع الزمنية</h2>
          <dl data-api-unique-id='orderdetailview-skeleton-with-logic-r91662250f1b0a9f7-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-r029511ece23a09f2-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>تاريخ الإنشاء</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r70d74fb597afc7cd-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.created_at_formatted}</dd>
            
            <dt data-api-unique-id='orderdetailview-skeleton-with-logic-rfad7e8347a99fc87-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>تاريخ آخر تحديث</dt>
            <dd data-api-unique-id='orderdetailview-skeleton-with-logic-r3238b0695a5cb515-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{displayData.updated_at_formatted}</dd>
          </dl>
        </section>

        <section data-api-unique-id='orderdetailview-skeleton-with-logic-r93d48d8e0843e5d5-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          <h2 data-api-unique-id='orderdetailview-skeleton-with-logic-r16aca0a513529d0a-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>مركز التحكم بالحالة</h2>
          <div data-api-unique-id='orderdetailview-skeleton-with-logic-rd7297e035f1189d5-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <h3 data-api-unique-id='orderdetailview-skeleton-with-logic-rb81d183664f28bbb-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>الحالة الحالية</h3>
            <strong data-api-unique-id='orderdetailview-skeleton-with-logic-rfcdcde4249f8c921-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>{STATUS_LABELS[displayData.status]}</strong>
          </div>

          {(displayData.status === 'PENDING' || displayData.status === 'IN_PROGRESS') && <nav data-api-unique-id='orderdetailview-skeleton-with-logic-r505a25856b6777b3-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              {displayData.status === 'PENDING' && <>
                  <Button onClick={() => openStatusChangeDialog('IN_PROGRESS')} data-api-unique-id='orderdetailview-skeleton-with-logic-r4ec452302fe02b9c-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
                    البدء بالتنفيذ
                  </Button>
                  <Button variant="secondary" onClick={() => openStatusChangeDialog('CANCELLED')} data-api-unique-id='orderdetailview-skeleton-with-logic-re99f44f7b22c8309-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
                    إلغاء الطلب
                  </Button>
                </>}
              {displayData.status === 'IN_PROGRESS' && <>
                  <Button onClick={() => openStatusChangeDialog('DELIVERED')} data-api-unique-id='orderdetailview-skeleton-with-logic-r9b0f695c33e9a6d3-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
                    تم التوصيل
                  </Button>
                  <Button variant="secondary" onClick={() => openStatusChangeDialog('CANCELLED')} data-api-unique-id='orderdetailview-skeleton-with-logic-r9ff246a43a822ef9-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
                    إلغاء الطلب
                  </Button>
                </>}
            </nav>}

          <div data-api-unique-id='orderdetailview-skeleton-with-logic-r68768f7ac632e41c-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <h3 data-api-unique-id='orderdetailview-skeleton-with-logic-rf5fdf0fc59a2a824-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>سجل الحالات</h3>
            {displayData.histories.length === 0 ? <p data-api-unique-id='orderdetailview-skeleton-with-logic-r187a6aa0a39a34fc-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>لا يوجد سجل حالات.</p> : <ul data-api-unique-id='orderdetailview-skeleton-with-logic-r425ecbd8d74453ea-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
                {displayData.histories.map((history, index) => <li key={history.history_id} data-api-unique-id='orderdetailview-skeleton-with-logic-r0b52a2cf11865e12-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic' data-api-in-loop='1'>
                    <time data-api-unique-id='orderdetailview-skeleton-with-logic-r73fb05a70684a45c-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic' data-api-in-loop='1' data-api-bind-info={`displayData.histories-${index}-created_at_formatted`} data-api-map-var-name='history'>{history.created_at_formatted}</time>
                    <p data-api-unique-id='orderdetailview-skeleton-with-logic-rfe12b300ea4798f6-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic' data-api-in-loop='1'>
                      {history.from_status ? STATUS_LABELS[history.from_status] : 'جديد'} 
                      {' -> '} 
                      {STATUS_LABELS[history.to_status]}
                    </p>
                    <p data-api-unique-id='orderdetailview-skeleton-with-logic-r733b110d92afe53f-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic' data-api-in-loop='1'>المشغل: {history.changed_by_name || 'النظام'}</p>
                  </li>)}
              </ul>}
          </div>
        </section>
      </article>

      <Dialog open={isDeleteDialogOpen} onOpenChange={setIsDeleteDialogOpen} data-api-unique-id='orderdetailview-skeleton-with-logic-reb921197584465de-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <DialogContent data-api-unique-id='orderdetailview-skeleton-with-logic-re20f750f7a9babd5-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          <DialogHeader data-api-unique-id='orderdetailview-skeleton-with-logic-r24ea71b266ad5007-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <DialogTitle data-api-unique-id='orderdetailview-skeleton-with-logic-rccd4ff077f00b0cf-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>تأكيد الحذف</DialogTitle>
            <DialogDescription data-api-unique-id='orderdetailview-skeleton-with-logic-r107e2a959cf95e66-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              هل أنت متأكد من رغبتك في حذف هذا الطلب بشكل نهائي؟ هذا الإجراء لا يمكن التراجع عنه وسيحذف كافة سجلات الحالات المرتبطة به.
            </DialogDescription>
          </DialogHeader>
          <DialogFooter data-api-unique-id='orderdetailview-skeleton-with-logic-r10140b4046f517e8-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <Button variant="outline" onClick={() => setIsDeleteDialogOpen(false)} disabled={isDeleting} data-api-unique-id='orderdetailview-skeleton-with-logic-r1111775df67e0984-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              إلغاء
            </Button>
            <Button variant="destructive" onClick={confirmDelete} disabled={isDeleting} data-api-unique-id='orderdetailview-skeleton-with-logic-rb7f7e599ae541aba-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              {isDeleting ? 'جاري الحذف...' : 'تأكيد الحذف'}
            </Button>
          </DialogFooter>
        </DialogContent>
      </Dialog>

      <Dialog open={statusChangeDialog.isOpen} onOpenChange={open => !open && setStatusChangeDialog({
      isOpen: false,
      targetStatus: null
    })} data-api-unique-id='orderdetailview-skeleton-with-logic-r541c0c0484c198a7-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
        <DialogContent data-api-unique-id='orderdetailview-skeleton-with-logic-rdf25fba179fc2493-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
          <DialogHeader data-api-unique-id='orderdetailview-skeleton-with-logic-rd239edf388e9e37b-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <DialogTitle data-api-unique-id='orderdetailview-skeleton-with-logic-r5e655be4d053b305-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>تأكيد تغيير الحالة</DialogTitle>
            <DialogDescription data-api-unique-id='orderdetailview-skeleton-with-logic-r4bf095ee816450f2-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              هل أنت متأكد من رغبتك في تغيير حالة الطلب إلى &quot;{statusChangeDialog.targetStatus && STATUS_LABELS[statusChangeDialog.targetStatus]}&quot;؟
            </DialogDescription>
          </DialogHeader>
          <DialogFooter data-api-unique-id='orderdetailview-skeleton-with-logic-rcf920fc1fc2a7439-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
            <Button variant="outline" onClick={() => setStatusChangeDialog({
            isOpen: false,
            targetStatus: null
          })} disabled={isChangingStatus} data-api-unique-id='orderdetailview-skeleton-with-logic-ra76c74e44db1b0d8-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              إلغاء
            </Button>
            <Button onClick={confirmStatusChange} disabled={isChangingStatus} data-api-unique-id='orderdetailview-skeleton-with-logic-rf7152247f6ddb7a0-s2593186728' data-api-unique-page-name='src/backend/components/OrderDetailView_skeleton_with_logic'>
              {isChangingStatus ? 'جاري التحديث...' : 'تأكيد التغيير'}
            </Button>
          </DialogFooter>
        </DialogContent>
      </Dialog>

    </main>;
}