import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Label } from "@/components/ui/label";
import { Switch } from "@/components/ui/switch";
import { RefreshCw, UserCog, Trash2, Edit, Tag, Mail, Server } from "lucide-react";
import { usePro } from "@/contexts/pro-context";

interface AdminTabProps {
    settings: any;
    onSettingChange: (key: string, value: any) => void;
    saving: boolean;
}

export function AdminTab({ settings, onSettingChange, saving }: AdminTabProps) {
    const { isPro } = usePro();

    return (
        <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
            {/* Create Subscriptions Manually - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <UserCog className="h-5 w-5" />
                        Create Subscriptions Manually
                    </CardTitle>
                    <CardDescription>
                        Create new subscriptions for customers from the backend
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Enable Manual Creation</Label>
                            <p className="text-sm text-muted-foreground">
                                Allow admins to create subscriptions manually without customer checkout
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_create_subscriptions || false}
                            onCheckedChange={(checked) => onSettingChange('admin_create_subscriptions', checked)}
                        />
                    </div>
                </CardContent>
            </Card>
            )}

            {/* Delete Subscriptions - Free Feature */}
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Trash2 className="h-5 w-5" />
                        Delete Subscriptions
                        {saving && <RefreshCw className="h-4 w-4 animate-spin" />}
                    </CardTitle>
                    <CardDescription>
                        Allow admins to delete subscriptions from the backend
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Enable Subscription Deletion</Label>
                            <p className="text-sm text-muted-foreground">
                                Allow admins to permanently delete subscriptions
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_delete_subscriptions || true}
                            onCheckedChange={(checked) => onSettingChange('admin_delete_subscriptions', checked)}
                        />
                    </div>
                </CardContent>
            </Card>

            {/* Edit Subscription Details - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Edit className="h-5 w-5" />
                        Edit Subscription Details
                    </CardTitle>
                    <CardDescription>
                        Modify subscription renewal date, expiry, amount, and billing cycle
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Enable Subscription Editing</Label>
                            <p className="text-sm text-muted-foreground">
                                Edit renewal date, expiry date, amount, and billing cycle
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_edit_subscriptions || false}
                            onCheckedChange={(checked) => onSettingChange('admin_edit_subscriptions', checked)}
                        />
                    </div>
                </CardContent>
            </Card>
            )}

            {/* Subscription Coupons - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Tag className="h-5 w-5" />
                        Subscription Coupons
                    </CardTitle>
                    <CardDescription>
                        Create coupons for sign-up fees or recurring payments
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Enable Subscription Coupons</Label>
                            <p className="text-sm text-muted-foreground">
                                Create coupons that apply to sign-up fees or a specific number of recurring payments
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_subscription_coupons || false}
                            onCheckedChange={(checked) => onSettingChange('admin_subscription_coupons', checked)}
                        />
                    </div>
                </CardContent>
            </Card>
            )}

            {/* Admin Email Notifications - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Mail className="h-5 w-5" />
                        Admin Email Notifications
                    </CardTitle>
                    <CardDescription>
                        Receive emails when subscription status changes
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="space-y-4">
                        <div className="flex items-center justify-between">
                            <div className="space-y-0.5">
                                <Label>Expiring Subscriptions</Label>
                                <p className="text-sm text-muted-foreground">
                                    Notify when a subscription is about to expire
                                </p>
                            </div>
                            <Switch
                                checked={settings.admin_email_expiring || false}
                                onCheckedChange={(checked) => onSettingChange('admin_email_expiring', checked)}
                            />
                        </div>

                        <div className="flex items-center justify-between">
                            <div className="space-y-0.5">
                                <Label>Cancelled Subscriptions</Label>
                                <p className="text-sm text-muted-foreground">
                                    Notify when a subscription is cancelled
                                </p>
                            </div>
                            <Switch
                                checked={settings.admin_email_cancelled || false}
                                onCheckedChange={(checked) => onSettingChange('admin_email_cancelled', checked)}
                            />
                        </div>

                        <div className="flex items-center justify-between">
                            <div className="space-y-0.5">
                                <Label>Paused Subscriptions</Label>
                                <p className="text-sm text-muted-foreground">
                                    Notify when a subscription is paused
                                </p>
                            </div>
                            <Switch
                                checked={settings.admin_email_paused || false}
                                onCheckedChange={(checked) => onSettingChange('admin_email_paused', checked)}
                            />
                        </div>

                        <div className="flex items-center justify-between">
                            <div className="space-y-0.5">
                                <Label>Resumed Subscriptions</Label>
                                <p className="text-sm text-muted-foreground">
                                    Notify when a subscription is resumed
                                </p>
                            </div>
                            <Switch
                                checked={settings.admin_email_resumed || false}
                                onCheckedChange={(checked) => onSettingChange('admin_email_resumed', checked)}
                            />
                        </div>
                    </div>
                </CardContent>
            </Card>
            )}

            {/* Payment Notification - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Mail className="h-5 w-5" />
                        Payment Notifications
                    </CardTitle>
                    <CardDescription>
                        Receive emails when subscription payments are made
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Payment Made Notification</Label>
                            <p className="text-sm text-muted-foreground">
                                Receive an email when a recurring payment is successfully processed
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_email_payment || false}
                            onCheckedChange={(checked) => onSettingChange('admin_email_payment', checked)}
                        />
                    </div>
                </CardContent>
            </Card>
            )}

            {/* Staging Mode - Pro Feature */}
            {isPro && (
            <Card>
                <CardHeader>
                    <CardTitle className="flex items-center gap-2">
                        <Server className="h-5 w-5" />
                        Automatic Staging Mode
                    </CardTitle>
                    <CardDescription>
                        Prevent double charges when cloning to staging environment
                    </CardDescription>
                </CardHeader>
                <CardContent className="space-y-6">
                    <div className="flex items-center justify-between">
                        <div className="space-y-0.5">
                            <Label>Enable Auto Staging Mode</Label>
                            <p className="text-sm text-muted-foreground">
                                Automatically detect site cloning and disable live payment processing
                            </p>
                        </div>
                        <Switch
                            checked={settings.admin_auto_staging || false}
                            onCheckedChange={(checked) => onSettingChange('admin_auto_staging', checked)}
                        />
                    </div>
                    {settings.admin_auto_staging && (
                        <p className="text-xs text-muted-foreground">
                            When enabled, subscriptions will be paused and payments will be simulated when a site URL change is detected.
                        </p>
                    )}
                </CardContent>
            </Card>
            )}
        </div>
    );
}
