import { useParams, Link, useNavigate } from "react-router-dom"; import { useGetCouponByIdQuery, useToggleCouponStatusMutation, } from "../../features/coupons/couponAPI"; import { ArrowLeft, Percent, Calendar, Activity } from "lucide-react"; import { formatDate } from "../../utils/formatDate"; /* ---------- Status Badge ---------- */ const StatusBadge = ({ isActive }) => ( {isActive ? "ACTIVE" : "INACTIVE"} ); /* ---------- Main Component ---------- */ const CouponDetails = () => { const { id } = useParams(); const navigate = useNavigate(); const { data: coupon, isLoading, isError, } = useGetCouponByIdQuery(id, { skip: !id }); const [toggleCouponStatus, { isLoading: toggling }] = useToggleCouponStatusMutation(); if (isLoading) { return (
Loading coupon details...
); } if (isError || !coupon) { return (
Failed to load coupon details
); } return (
{/* Back Button */}
{/* Header Card */}

{coupon.code}

{coupon.description}

{coupon.type === "PERCENTAGE" ? `${coupon.value}% OFF` : `₹${coupon.value} OFF`}

{/* Info Cards */}
{/* Discount */}

Discount

{coupon.type === "PERCENTAGE" ? `${coupon.value}%` : `₹${coupon.value}`}

Min Order: ₹{coupon.minOrderAmount}

{/* Validity */}

Validity

From: {formatDate(coupon.validFrom)}

Till: {formatDate(coupon.validUntil)}

{/* Usage */}

Usage

{coupon.usedCount}/{coupon.maxUses}

Remaining: {coupon.remainingUses}

{/* Extra Info */}
Created At: {formatDate(coupon.createdAt)}
Last Updated: {formatDate(coupon.updatedAt)}
Expired: {coupon.isExpired ? "Yes ❌" : "No ✅"}
Not Started: {coupon.isNotStarted ? "Yes ⏳" : "No"}
); }; export default CouponDetails;