Merge pull request #159 from Tria-plc/alpha

Merge request for nationality mismatch issue resolution
This commit is contained in:
Eyob T.
2026-06-14 23:53:29 +03:00
committed by GitHub

View File

@@ -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">