{promotionError}
} + + {/* Referral Code */} ++ You'll both earn bonus points when your booking is confirmed! +
+ )} +{referralError}
} +Manage guest profiles, preferences, and communications
+| Guest | +Lifetime Value | +Visits | +Satisfaction | +Tags | +Actions | +
|---|---|---|---|---|---|
|
+
+
+
+
+
+
+
+
+ {guest.full_name}
+ {guest.is_vip && (
+
+
+ )}
+ {guest.email}
+ {guest.phone && {guest.phone} }
+ |
+
+
+ {formatCurrency(guest.lifetime_value)}
+
+ |
+
+ {guest.total_visits}
+ {guest.last_visit_date && (
+
+ {new Date(guest.last_visit_date).toLocaleDateString()}
+
+ )}
+ |
+
+ {guest.satisfaction_score ? (
+
+
+ ) : (
+ N/A
+ )}
+ |
+
+
+ {guest.tags.slice(0, 3).map((tag) => (
+
+ {tag.name}
+
+ ))}
+ {guest.tags.length > 3 && (
+
+ +{guest.tags.length - 3}
+
+ )}
+
+ |
+
+
+
+
+
+ |
+
Guest profile not found
+ +| Booking # | +Check-in | +Check-out | +Status | +Total | +
|---|---|---|---|---|
| {booking.booking_number} | ++ {new Date(booking.check_in_date).toLocaleDateString()} + | ++ {new Date(booking.check_out_date).toLocaleDateString()} + | ++ + {booking.status} + + | ++ {formatCurrency(booking.total_price)} + | +
Manage loyalty program settings, tiers, and rewards
+| + Customer + | ++ Tier + | ++ Lifetime Points + | ++ Available Points + | ++ Referrals + | ++ Member Since + | +
|---|---|---|---|---|---|
|
+
+
+ {user.user_name}
+ {user.user_email}
+ |
+
+
+ |
+
+
+ {user.lifetime_points.toLocaleString()}
+
+ |
+
+
+ {user.available_points.toLocaleString()}
+
+ |
+
+
+
+ |
+ + {user.tier_started_date + ? new Date(user.tier_started_date).toLocaleDateString() + : 'N/A'} + | +
{tier.description}
+{reward.description}
+Earn points, unlock rewards, and enjoy exclusive benefits
+{loyaltyStatus.tier?.description}
++ {loyaltyStatus.tier?.benefits || 'No benefits listed'} +
+
+ {loyaltyStatus.referral_code}
+
+
+ + Share your code with friends! You both get bonus points when they make their first booking. +
++ Referrals: {loyaltyStatus.referral_count} +
+{reward.description}
+{redemption.reward.description}
+ {redemption.code && ( +
+ Code: {redemption.code}
+
+ )}
+ {transaction.description}
++ {formatDate(transaction.created_at)} ⢠{transaction.source} +
+0 ? 'text-green-600' : 'text-red-600' + }`} + > + {transaction.points > 0 ? '+' : ''} + {transaction.points.toLocaleString()} +
+ {transaction.expires_at && ( ++ Expires: {formatDate(transaction.expires_at)} +
+ )} ++ {referral.referred_user?.name || 'Unknown User'} +
+{referral.referred_user?.email}
++ Completed: {formatDate(referral.completed_at)} +
+ )} ++ You've redeemed {redemptionData.rewardName} for {redemptionData.pointsUsed.toLocaleString()} points. +
+{redemptionData.code}
+
+ + Save this code! You can use it when booking or contact support to apply it. +
+