Commit ee405c45 by Manivasagam S

code changes

parent 912f0c05
......@@ -4,25 +4,22 @@ import { Seat } from '../Seat/Seat.jsx';
import styles from './SeatLayout.module.css';
import { seatsData } from './SeatsData.js';
const populateSeatsArray = (selectedSeats, reservedSeats, localSelectedSeats) => {
const populateSeatsArray = (selectedSeats, reservedSeats, currentReservedSeats) => {
return seatsData.map(({ row, seats }) =>
seats.map((number) => {
const seatNo = row + number;
if (number === '/') {
return { seatNo, status: 'none' };
} else if (localSelectedSeats.includes(seatNo)) {
if (selectedSeats.includes(seatNo)) {
return { seatNo, status: 'mine' };
} else {
return { seatNo, status: 'mine-unselected' };
}
} else if (reservedSeats.includes(seatNo)) {
return { seatNo, status: 'reserved' };
} else if (selectedSeats.includes(seatNo)) {
return { seatNo, status: 'selected' };
} else {
return { seatNo, status: 'available' };
}
if (number === '/') return { seatNo, status: 'none' };
const isMine = currentReservedSeats.includes(seatNo);
const isSelected = selectedSeats.includes(seatNo);
const isReserved = reservedSeats.includes(seatNo);
if (isMine && isSelected) return { seatNo, status: 'selected' };
if (isMine && !isSelected) return { seatNo, status: 'mine-unselected' };
if (isReserved) return { seatNo, status: 'reserved' };
if (isSelected) return { seatNo, status: 'selected' };
return { seatNo, status: 'available' };
})
);
};
......@@ -42,22 +39,38 @@ export const SeatLayout = ({
useEffect(() => {
onSelectionChange?.(localSelectedSeats);
}, [localSelectedSeats, onSelectionChange]);
}, [localSelectedSeats]);
const seatClickHandler = (seat) => {
const { seatNo, status } = seat;
if (status === 'reserved') return;
const isMine = currentReservedSeats.includes(seatNo);
const isSelected = localSelectedSeats.includes(seatNo);
const hasExisting = currentReservedSeats.length > 0;
const maxLimit = hasExisting ? Infinity : Number(limit);
if (status === 'reserved') return;
setLocalSelectedSeats((prev) => {
if (prev.includes(seatNo)) {
return prev.filter((s) => s !== seatNo);
} else if (prev.length < maxLimit) {
return [...prev, seatNo];
const updated = [...prev];
if (isSelected) {
return updated.filter((s) => s !== seatNo); // unselect
} else {
const newlySelected = updated.filter(
(s) => !currentReservedSeats.includes(s)
);
const unselectedMine = currentReservedSeats.filter(
(s) => !updated.includes(s)
);
const totalAllowed = limit + unselectedMine.length;
if (newlySelected.length < totalAllowed) {
return [...updated, seatNo];
} else {
return updated; // reject selection
}
}
return prev;
});
};
......
......@@ -41,10 +41,10 @@ export const Selectseat = ({ onLogout }) => {
const available = totalSeats - allReserved.length;
setAvailableSeats(available);
if (userSeats.length > 0) {
setSeatCount(userSeats.length);
setShowSelect(false);
}
// if (userSeats.length > 0) {
// setSeatCount(userSeats.length);
// setShowSelect(false);
// }
if (currentUser?.name && !hasWelcomed.current) {
toast.success(`Welcome, ${currentUser.name}`);
hasWelcomed.current = true;
......
......@@ -7,10 +7,12 @@
"reservedSeats": [
"G3",
"F3",
"F4",
"G2",
"C2",
"C8"
"C8",
"F4",
"F7",
"F8"
]
},
{
......@@ -18,7 +20,18 @@
"phoneNumber": "9361775481",
"name": "mani",
"reservedSeats": [
"E5"
"F5",
"E5",
"G5",
"F6",
"E6",
"E7",
"E8",
"G6",
"G7",
"G8",
"D7",
"D8"
]
},
{
......@@ -152,6 +165,17 @@
"email": "mani@gmail.com",
"phoneNumber": "8976543210",
"reservedSeats": []
},
{
"id": "c921",
"name": "sakilesh J",
"email": "sakilesh.j@krds.fr",
"phoneNumber": "9080296978",
"reservedSeats": [
"D3",
"C3",
"C4"
]
}
]
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment