Commit ee405c45 by Manivasagam S

code changes

parent 912f0c05
...@@ -4,25 +4,22 @@ import { Seat } from '../Seat/Seat.jsx'; ...@@ -4,25 +4,22 @@ import { Seat } from '../Seat/Seat.jsx';
import styles from './SeatLayout.module.css'; import styles from './SeatLayout.module.css';
import { seatsData } from './SeatsData.js'; import { seatsData } from './SeatsData.js';
const populateSeatsArray = (selectedSeats, reservedSeats, localSelectedSeats) => { const populateSeatsArray = (selectedSeats, reservedSeats, currentReservedSeats) => {
return seatsData.map(({ row, seats }) => return seatsData.map(({ row, seats }) =>
seats.map((number) => { seats.map((number) => {
const seatNo = row + number; const seatNo = row + number;
if (number === '/') { if (number === '/') return { seatNo, status: 'none' };
return { seatNo, status: 'none' };
} else if (localSelectedSeats.includes(seatNo)) { const isMine = currentReservedSeats.includes(seatNo);
if (selectedSeats.includes(seatNo)) { const isSelected = selectedSeats.includes(seatNo);
return { seatNo, status: 'mine' }; const isReserved = reservedSeats.includes(seatNo);
} else {
return { seatNo, status: 'mine-unselected' }; if (isMine && isSelected) return { seatNo, status: 'selected' };
} if (isMine && !isSelected) return { seatNo, status: 'mine-unselected' };
} else if (reservedSeats.includes(seatNo)) { if (isReserved) return { seatNo, status: 'reserved' };
return { seatNo, status: 'reserved' }; if (isSelected) return { seatNo, status: 'selected' };
} else if (selectedSeats.includes(seatNo)) {
return { seatNo, status: 'selected' };
} else {
return { seatNo, status: 'available' }; return { seatNo, status: 'available' };
}
}) })
); );
}; };
...@@ -42,22 +39,38 @@ export const SeatLayout = ({ ...@@ -42,22 +39,38 @@ export const SeatLayout = ({
useEffect(() => { useEffect(() => {
onSelectionChange?.(localSelectedSeats); onSelectionChange?.(localSelectedSeats);
}, [localSelectedSeats, onSelectionChange]); }, [localSelectedSeats]);
const seatClickHandler = (seat) => { const seatClickHandler = (seat) => {
const { seatNo, status } = seat; const { seatNo, status } = seat;
if (status === 'reserved') return; const isMine = currentReservedSeats.includes(seatNo);
const isSelected = localSelectedSeats.includes(seatNo);
const hasExisting = currentReservedSeats.length > 0; if (status === 'reserved') return;
const maxLimit = hasExisting ? Infinity : Number(limit);
setLocalSelectedSeats((prev) => { setLocalSelectedSeats((prev) => {
if (prev.includes(seatNo)) { const updated = [...prev];
return prev.filter((s) => s !== seatNo);
} else if (prev.length < maxLimit) { if (isSelected) {
return [...prev, seatNo]; 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 }) => { ...@@ -41,10 +41,10 @@ export const Selectseat = ({ onLogout }) => {
const available = totalSeats - allReserved.length; const available = totalSeats - allReserved.length;
setAvailableSeats(available); setAvailableSeats(available);
if (userSeats.length > 0) { // if (userSeats.length > 0) {
setSeatCount(userSeats.length); // setSeatCount(userSeats.length);
setShowSelect(false); // setShowSelect(false);
} // }
if (currentUser?.name && !hasWelcomed.current) { if (currentUser?.name && !hasWelcomed.current) {
toast.success(`Welcome, ${currentUser.name}`); toast.success(`Welcome, ${currentUser.name}`);
hasWelcomed.current = true; hasWelcomed.current = true;
......
...@@ -7,10 +7,12 @@ ...@@ -7,10 +7,12 @@
"reservedSeats": [ "reservedSeats": [
"G3", "G3",
"F3", "F3",
"F4",
"G2", "G2",
"C2", "C2",
"C8" "C8",
"F4",
"F7",
"F8"
] ]
}, },
{ {
...@@ -18,7 +20,18 @@ ...@@ -18,7 +20,18 @@
"phoneNumber": "9361775481", "phoneNumber": "9361775481",
"name": "mani", "name": "mani",
"reservedSeats": [ "reservedSeats": [
"E5" "F5",
"E5",
"G5",
"F6",
"E6",
"E7",
"E8",
"G6",
"G7",
"G8",
"D7",
"D8"
] ]
}, },
{ {
...@@ -152,6 +165,17 @@ ...@@ -152,6 +165,17 @@
"email": "mani@gmail.com", "email": "mani@gmail.com",
"phoneNumber": "8976543210", "phoneNumber": "8976543210",
"reservedSeats": [] "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