import React, { useState } from 'react';
import { Head } from '@inertiajs/react';
import EmployerLayout from '../../Layouts/EmployerLayout';
import {
CreditCard,
CheckCircle2,
AlertCircle,
ArrowRight,
Sparkles,
FileText,
Download,
ShieldCheck,
Clock,
User,
Building,
Check,
Lock,
RefreshCw,
X,
TrendingUp
} from 'lucide-react';
import { toast } from 'sonner';
export default function Subscription({ currentPlan, expiresAt, plans }) {
const [selectedPlan, setSelectedPlan] = useState(null);
const [showPayTabsModal, setShowPayTabsModal] = useState(false);
const [showSuccess, setShowSuccess] = useState(false);
// Card inputs for PayTabs Gateway
const [cardName, setCardName] = useState('');
const [cardNumber, setCardNumber] = useState('');
const [cardExpiry, setCardExpiry] = useState('');
const [cardCvv, setCardCvv] = useState('');
const [billingEmail, setBillingEmail] = useState('sponsor@marketplace.ae');
// Failed payment simulation
const [simulatedFailedState, setSimulatedFailedState] = useState(false);
const [activePlan, setActivePlan] = useState(currentPlan || 'Premium Employer Pass');
// Payment History List
const [invoices, setInvoices] = useState([
{ id: 'INV-2026-001', date: 'May 01, 2026', amount: '199 AED', status: 'Paid', plan: 'Premium Employer Pass' },
{ id: 'INV-2026-002', date: 'Apr 01, 2026', amount: '199 AED', status: 'Paid', plan: 'Premium Employer Pass' },
{ id: 'INV-2026-003', date: 'Mar 01, 2026', amount: '99 AED', status: 'Refunded', plan: 'Basic Search' }
]);
const handleSelectPlan = (plan) => {
setSelectedPlan(plan);
setShowPayTabsModal(true);
};
const handlePayTabsSubmit = (e) => {
e.preventDefault();
if (cardNumber.length < 16) {
toast.error("💳 Invalid card number format");
return;
}
setShowPayTabsModal(false);
setShowSuccess(true);
setActivePlan(selectedPlan.name);
// Add to invoices
const newInvoice = {
id: `INV-2026-0${invoices.length + 1}`,
date: 'Today',
amount: selectedPlan.price,
status: 'Paid',
plan: selectedPlan.name
};
setInvoices([newInvoice, ...invoices]);
toast.success(`🎉 Payment Approved by PayTabs!`, {
description: `Successfully subscribed to ${selectedPlan.name}. Premium access limits updated instantly.`,
duration: 5000,
});
// Reset forms
setCardName('');
setCardNumber('');
setCardExpiry('');
setCardCvv('');
setTimeout(() => setShowSuccess(false), 5000);
};
const triggerFailedPaymentSimulation = () => {
setSimulatedFailedState(true);
toast.warning("Simulated billing failure triggered!", {
description: "An automatic system warning will now request payment retry options."
});
};
const handleRetryPayment = () => {
const premium = plans.find(p => p.id === 'premium') || plans[0];
setSelectedPlan(premium);
setShowPayTabsModal(true);
setSimulatedFailedState(false);
};
const downloadReceipt = (invoiceId) => {
toast.success(`📄 Invoice ${invoiceId} generated`, {
description: "Direct MOHRE Sponsor receipt downloaded in PDF format successfully."
});
};
return (
Card renewal on May 22 failed due to insufficient funds. Retry using PayTabs to avoid profile lockout.
Renewing via auto-payment on {expiresAt}
Upgrade or cancel anytime. All contracts compliant with UAE Tadbeer MOHRE guides.
Update tax invoicing options.