"use client";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import UnitCard from "@/components/units/UnitCard";
import { Button } from "./ui/button";
import NoResults from "./NoResults";

import { useState } from "react";
import Dialog from "./ui/dialog";
import SubEstateCard from "./SubEstateCard";
import { PropertyCard } from "@/types/property-card";

type UnitsStatusTabsProps = {
    units?: PropertyCard[];
}

const UnitsStatusTabs = ({ units = [] }: UnitsStatusTabsProps) => {
    const [showSubEstates, setShowSubEstates] = useState(false);

    // Filter units based on status from backend
    // Typically: 'available', 'booked', 'sold'
    const availableUnits = units.filter(unit => (unit as any).status === 'available' || (unit as any).status === 'متاح');
    const bookedUnits = units.filter(unit => (unit as any).status === 'booked' || (unit as any).status === 'محجوز');
    const soldUnits = units.filter(unit => (unit as any).status === 'sold' || (unit as any).status === 'مباع');

    const hasUnits = units.length > 0;

    return (
        <div className="bg-[#F1F5F9] p-3 rounded-md">
            <Tabs defaultValue="all" dir="rtl">
                <div className="border-b mb-1">
                    <TabsList className="bg-transparent rounded-none h-auto p-0 gap-2">
                        <TabsTrigger
                            value="all"
                            className="rounded-none border-none px-4 py-2 text-gray-600 data-[state=active]:bg-transparent data-[state=active]:text-[#052531] data-[state=active]:border-b-2 data-[state=active]:border-[#052531] text-sm flex items-center gap-2 transition-all"
                        >
                            <AllIcon />
                            الكل
                        </TabsTrigger>
                        <TabsTrigger
                            value="available"
                            className="rounded-none border-none px-4 py-2 text-gray-600 data-[state=active]:bg-transparent data-[state=active]:text-[#052531] data-[state=active]:border-b-2 data-[state=active]:border-[#052531] text-sm flex items-center gap-2 transition-all"
                        >
                            <AvailableIcon />
                            متاح
                        </TabsTrigger>
                        <TabsTrigger
                            value="booked"
                            className="rounded-none border-none px-4 py-2 text-gray-600 data-[state=active]:bg-transparent data-[state=active]:text-[#052531] data-[state=active]:border-b-2 data-[state=active]:border-[#052531] text-sm flex items-center gap-2 transition-all"
                        >
                            <BookedIcon />
                            محجوز
                        </TabsTrigger>
                        <TabsTrigger
                            value="sold"
                            className="rounded-none border-none px-4 py-2 text-gray-600 data-[state=active]:bg-transparent data-[state=active]:text-[#052531] data-[state=active]:border-b-2 data-[state=active]:border-[#052531] text-sm flex items-center gap-2 transition-all"
                        >
                            <SoldIcon />
                            مباع
                        </TabsTrigger>
                    </TabsList>
                </div>

                <div className="mt-6">
                    <TabsContent value="all">
                        {hasUnits ? (
                            <>
                                <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
                                    {units.map((card, index) => (
                                        <UnitCard
                                            key={index}
                                            card={{ ...card, label: card.badge || "متاح" }}
                                            showPremiumBadge={false}
                                            action={() => setShowSubEstates(true)}
                                        />
                                    ))}
                                </div>
                                <NavigationButtons />
                            </>
                        ) : (
                            <NoResults subTitle="لم يتم العثور على وحدات لهذا المشروع حالياً" />
                        )}
                    </TabsContent>

                    <TabsContent value="available">
                        {availableUnits.length > 0 ? (
                            <>
                                <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
                                    {availableUnits.map((card, index) => (
                                        <UnitCard
                                            key={index}
                                            card={{ ...card, label: card.badge || "متاح" }}
                                            showPremiumBadge={false}
                                            action={() => setShowSubEstates(true)}
                                        />
                                    ))}
                                </div>
                                <NavigationButtons />
                            </>
                        ) : (
                            <NoResults subTitle="لا توجد وحدات متاحة حالياً" />
                        )}
                    </TabsContent>

                    <TabsContent value="booked">
                        {bookedUnits.length > 0 ? (
                            <>
                                <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
                                    {bookedUnits.map((card, index) => (
                                        <UnitCard
                                            key={index}
                                            card={{ ...card, label: card.badge || "محجوز" }}
                                            showPremiumBadge={false}
                                            action={() => setShowSubEstates(true)}
                                        />
                                    ))}
                                </div>
                                <NavigationButtons />
                            </>
                        ) : (
                            <NoResults subTitle="لا توجد وحدات محجوزة حالياً" />
                        )}
                    </TabsContent>

                    <TabsContent value="sold">
                        {soldUnits.length > 0 ? (
                            <>
                                <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
                                    {soldUnits.map((card, index) => (
                                        <UnitCard
                                            key={index}
                                            card={{ ...card, label: card.badge || "مباع" }}
                                            showPremiumBadge={false}
                                            action={() => setShowSubEstates(true)}
                                        />
                                    ))}
                                </div>
                                <NavigationButtons />
                            </>
                        ) : (
                            <NoResults subTitle="لم يتم العثور على أي وحدات مباعة" />
                        )}
                    </TabsContent>
                </div>
            </Tabs>

            <Dialog open={showSubEstates} onOpenChange={setShowSubEstates} title="العقارات الفرعية">
                <div className="flex gap-2 p-4 overflow-x-auto">
                    <SubEstateCard onClick={() => { setShowSubEstates(false); }} />
                </div>
            </Dialog>
        </div>
    );
};

const NavigationButtons = () => {
    return (
        <div className="mt-4 flex justify-center gap-2">
            <Button className="w-24 rounded-full">
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <path d="M3.33301 8.00004H12.6663M12.6663 8.00004L7.99967 3.33337M12.6663 8.00004L7.99967 12.6667" stroke="white" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
                </svg>
                السابق
            </Button>
            <Button className="w-24 text-[#05222D] rounded-full bg-[#0525311A] hover:bg-[#02121810]">
                التالي
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <path d="M12.6663 8.00004H3.33301M3.33301 8.00004L7.99967 12.6667M3.33301 8.00004L7.99967 3.33337" stroke="#05222D" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
                </svg>
            </Button>
        </div>
    )
}

const AllIcon = () => {
    return (
        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M6.66667 2H2V6.66667H6.66667V2Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
            <path d="M14 2H9.33333V6.66667H14V2Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
            <path d="M14 9.33333H9.33333V14H14V9.33333Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
            <path d="M6.66667 9.33333H2V14H6.66667V9.33333Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
    );
};

const AvailableIcon = () => {
    return (
        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M4.66634 4.66665H4.67301M13.7263 8.93998L8.94634 13.72C8.82251 13.8439 8.67546 13.9423 8.51359 14.0094C8.35173 14.0765 8.17823 14.111 8.00301 14.111C7.82779 14.111 7.65428 14.0765 7.49242 14.0094C7.33056 13.9423 7.1835 13.8439 7.05967 13.72L1.33301 7.99998V1.33331H7.99967L13.7263 7.05998C13.9747 7.3098 14.1141 7.64773 14.1141 7.99998C14.1141 8.35223 13.9747 8.69016 13.7263 8.93998Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
    );
};

const BookedIcon = () => {
    return (
        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M7.99967 3.99998V7.99998L10.6663 9.33331M14.6663 7.99998C14.6663 11.6819 11.6816 14.6666 7.99967 14.6666C4.31778 14.6666 1.33301 11.6819 1.33301 7.99998C1.33301 4.31808 4.31778 1.33331 7.99967 1.33331C11.6816 1.33331 14.6663 4.31808 14.6663 7.99998Z" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
    );
};


const SoldIcon = () => {
    return (
        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
            <path d="M8 0.666687V15.3334M11.3333 3.33335H6.33333C5.71449 3.33335 5.121 3.57919 4.68342 4.01677C4.24583 4.45436 4 5.04785 4 5.66669C4 6.28553 4.24583 6.87902 4.68342 7.3166C5.121 7.75419 5.71449 8.00002 6.33333 8.00002H9.66667C10.2855 8.00002 10.879 8.24585 11.3166 8.68344C11.7542 9.12102 12 9.71452 12 10.3334C12 10.9522 11.7542 11.5457 11.3166 11.9833C10.879 12.4209 10.2855 12.6667 9.66667 12.6667H4" stroke="currentColor" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
    );
};

export default UnitsStatusTabs;
