mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Merge pull request #159 from Tria-plc/alpha
Merge request for nationality mismatch issue resolution
This commit is contained in:
@@ -378,13 +378,13 @@ type FormData = z.infer<typeof formSchema>;
|
||||
|
||||
export default function PassengersPage() {
|
||||
const router = useRouter();
|
||||
const { searchCriteria, setPassengers, setCreateAccount, clearBooking } = useBookingStore();
|
||||
const { searchCriteria, setPassengers, setCreateAccount } = useBookingStore();
|
||||
const { user, isAuthenticated, updateUser } = useAuthStore();
|
||||
const [faydaEnabled, setFaydaEnabled] = useState(true);
|
||||
const [verificationStatus, setVerificationStatus] = useState<Record<number, 'success' | 'error'>>({});
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [formInitialized, setFormInitialized] = useState(false);
|
||||
const [nationalityMismatch, setNationalityMismatch] = useState(false);
|
||||
|
||||
|
||||
const totalPassengers = (searchCriteria?.adultCount || 1) + (searchCriteria?.childCount || 0);
|
||||
|
||||
@@ -451,19 +451,7 @@ export default function PassengersPage() {
|
||||
return;
|
||||
}
|
||||
|
||||
const userNationality = (passengerData?.nationality || user.nationality || '').toUpperCase().trim();
|
||||
const searchNationality = (searchCriteria?.nationality || '').toUpperCase().trim();
|
||||
console.log('Nationalities:', { userNationality, searchNationality });
|
||||
|
||||
// Check for nationality mismatch
|
||||
if (userNationality !== searchNationality) {
|
||||
console.log('Nationality mismatch detected');
|
||||
setNationalityMismatch(true);
|
||||
setFormInitialized(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Only populate if nationalities match
|
||||
// Only populate first passenger
|
||||
console.log('Setting passenger 0 values');
|
||||
setValue('passengers.0.name', passengerData?.fullName || user.fullName || '');
|
||||
setValue('passengers.0.dateOfBirth', passengerData?.dateOfBirth || user.dateOfBirth || '');
|
||||
@@ -489,15 +477,6 @@ export default function PassengersPage() {
|
||||
populateForm();
|
||||
}, [isAuthenticated, user, searchCriteria, setValue]);
|
||||
|
||||
useEffect(() => {
|
||||
if (nationalityMismatch && formInitialized) {
|
||||
setTimeout(() => {
|
||||
const element = document.getElementById('nationality-mismatch');
|
||||
element?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
}, 100);
|
||||
}
|
||||
}, [nationalityMismatch, formInitialized]);
|
||||
|
||||
const openFaydaVerification = async (index: number) => {
|
||||
if (typeof window === 'undefined') return;
|
||||
|
||||
@@ -621,45 +600,6 @@ export default function PassengersPage() {
|
||||
|
||||
if (!searchCriteria) return null;
|
||||
|
||||
if (nationalityMismatch && formInitialized) {
|
||||
const searchLabel: Record<string, string> = { ETHIOPIAN: 'Ethiopian', DJIBOUTIAN: 'Djiboutian', OTHER: 'Other' };
|
||||
return (
|
||||
<div className="min-h-screen bg-gray-50 dark:bg-gray-900 py-12">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="max-w-lg mx-auto">
|
||||
<div className="card border-red-300 dark:border-red-700" id="nationality-mismatch">
|
||||
<div className="flex items-start gap-4">
|
||||
<div className="text-red-500 text-2xl mt-0.5">⚠️</div>
|
||||
<div>
|
||||
<h2 className="text-lg font-semibold text-red-700 dark:text-red-400 mb-2">Nationality Mismatch</h2>
|
||||
<p className="text-gray-700 dark:text-gray-300 text-sm mb-3">
|
||||
You searched for an <strong>{searchLabel[searchCriteria.nationality] ?? searchCriteria.nationality}</strong> passenger,
|
||||
but your account is registered as <strong>{user?.nationality}</strong>.
|
||||
</p>
|
||||
<p className="text-gray-600 dark:text-gray-400 text-sm mb-5">
|
||||
You cannot proceed with this booking. Please restart and select the correct nationality on the search page.
|
||||
</p>
|
||||
<button
|
||||
onClick={() => {
|
||||
clearBooking();
|
||||
if (typeof window !== 'undefined') {
|
||||
window.location.href = '/booking/search';
|
||||
}
|
||||
}}
|
||||
className="btn-primary w-full flex items-center justify-center gap-2"
|
||||
>
|
||||
<ExternalLink className="w-5 h-5" />
|
||||
Restart Booking
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (!formInitialized) {
|
||||
return (
|
||||
<div className="min-h-screen bg-gray-50 dark:bg-gray-900 py-12">
|
||||
|
||||
Reference in New Issue
Block a user