Index: my-react-app/src/components/MenuList.js
===================================================================
--- my-react-app/src/components/MenuList.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
+++ my-react-app/src/components/MenuList.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -0,0 +1,99 @@
+import React, { useState, useEffect } from 'react';
+import axios from 'axios';
+import 'bootstrap/dist/css/bootstrap.min.css';
+
+const MenuList = ({ restaurantId, onPreOrderChange, setPreOrderedItems, preOrderedItems }) => {
+    const [menuItems, setMenuItems] = useState([]);
+    const [preOrder, setPreOrder] = useState([]);
+
+    const handleItemSelect = (item) => {
+        setPreOrderedItems(prevItems => [...prevItems, item]);
+    };
+
+    const handleItemToggle = (item) => {
+        setPreOrderedItems(prevItems => {
+            const exists = prevItems.find(i => i.id === item.id);
+            if (exists) {
+                return prevItems.filter(i => i.id !== item.id); // remove
+            } else {
+                return [...prevItems, item]; // add
+            }
+        });
+    };
+
+    useEffect(() => {
+        const fetchMenu = async () => {
+            try {
+                const response = await axios.get(`http://localhost:8081/api/restaurant-menu/${restaurantId}`);
+                setMenuItems(response.data);
+            } catch (err) {
+                console.error('Failed to fetch menu:', err);
+            }
+        };
+        if (restaurantId) {
+            fetchMenu();
+        }
+    }, [restaurantId]);
+
+    const handleAddToPreOrder = (item) => {
+        const existingItem = preOrder.find((i) => i.menuID === item.menuID);
+
+        let updatedPreOrder;
+        if (existingItem) {
+            updatedPreOrder = preOrder.map((i) =>
+                i.menuID === item.menuID ? { ...i, quantity: i.quantity + 1 } : i
+            );
+        } else {
+            updatedPreOrder = [...preOrder, { ...item, quantity: 1 }];
+        }
+
+        setPreOrder(updatedPreOrder);
+        setPreOrderedItems(updatedPreOrder);
+    };
+
+    const calculateTotal = () => {
+        return preOrder.reduce((acc, item) => acc + item.price * item.quantity, 0).toFixed(2);
+    };
+
+    return (
+        <div className="container mt-4">
+            <h3 className="text-center">Menu</h3>
+            <div className="row">
+                {menuItems.map((item) => (
+                    <div key={item.menuID} className="col-md-4 mb-4">
+                        <div className="card h-100 shadow-sm">
+                            <div className="card-body d-flex flex-column">
+                                <h5 className="card-title">{item.itemName}</h5>
+                                <p className="card-text">{item.description}</p>
+                                <h6 className="card-subtitle mb-2 text-muted">${item.price.toFixed(2)}</h6>
+                                <button
+                                    className="btn btn-outline-success mt-auto"
+                                    onClick={() => handleAddToPreOrder(item)}
+                                >
+                                    Add to Pre-Order
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                ))}
+            </div>
+
+            {preOrder.length > 0 && (
+                <div className="mt-5">
+                    <h4>Pre-Order Summary</h4>
+                    <ul className="list-group">
+                        {preOrder.map((item) => (
+                            <li key={item.menuID} className="list-group-item d-flex justify-content-between align-items-center">
+                                {item.itemName} (x{item.quantity})
+                                <span>${(item.price * item.quantity).toFixed(2)}</span>
+                            </li>
+                        ))}
+                    </ul>
+                    <h5 className="mt-3">Total: ${calculateTotal()}</h5>
+                </div>
+            )}
+        </div>
+    );
+};
+
+export default MenuList;
Index: my-react-app/src/components/ReservationConfirmation.js
===================================================================
--- my-react-app/src/components/ReservationConfirmation.js	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ my-react-app/src/components/ReservationConfirmation.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -3,5 +3,6 @@
 import axios from 'axios';
 import { useNavigate } from 'react-router-dom';
-import {jwtDecode} from "jwt-decode";
+import { useLocation } from 'react-router-dom';
+import { jwtDecode } from "jwt-decode";
 import {request} from "../axios_helper";
 import restaurants from "./Restaurants";
@@ -10,4 +11,6 @@
     const navigate = useNavigate();
 
+    const location = useLocation();
+    const preOrderedItems = location.state?.preOrderedItems || [];
     const [restaurant, setRestaurant] = useState({});
     const [user, setUser] = useState({});
@@ -59,4 +62,5 @@
             specialRequests: specialRequests.trim(),
             paymentStatus: 'Pending',
+            preOrderedItems: preOrderedItems.map(item => `${item.itemName}:${item.quantity}:${item.price}`)
         };
 
@@ -117,4 +121,9 @@
         return `${formattedDate} - ${formattedTime}`;
     };
+
+    const grandTotal = preOrderedItems.reduce((acc, item) => acc + item.price * item.quantity, 0).toFixed(2);
+    const itemQuantityString = preOrderedItems
+        .map(item => `${item.itemName}:${item.quantity}`)
+        .join(',');
 
     return (
@@ -156,4 +165,26 @@
                                     <br />
                                 </p>
+                                {preOrderedItems.length > 0 ? (
+                                    <div className="row">
+                                        {preOrderedItems.map((item) => (
+                                            <div key={item.menuID} className="col-md-4 mb-4">
+                                                <div className="list-group shadow-sm p-3">
+                                                    <p className="item"><strong>Item:</strong> {item.itemName}</p>
+                                                    <p className="item"><strong>Price:</strong> ${item.price.toFixed(2)}</p>
+                                                    <p className="item"><strong>Quantity:</strong> {item.quantity}</p>
+                                                    <p className="item"><strong>Total:</strong> ${(item.price * item.quantity).toFixed(2)}</p>
+                                                </div>
+                                            </div>
+                                        ))}
+
+                                        <div className="col-12 mt-4">
+                                            <div className="list-group shadow-sm p-4 text-center">
+                                                <h4>Grand Total: ${grandTotal}</h4>
+                                            </div>
+                                        </div>
+                                    </div>
+                                ) : (
+                                    <p>No pre-ordered items.</p>
+                                )}
                             </div>
                             <div className="card-footer">
Index: my-react-app/src/components/ReservationEdit.js
===================================================================
--- my-react-app/src/components/ReservationEdit.js	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ my-react-app/src/components/ReservationEdit.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -65,39 +65,26 @@
     }, [table]);
 
-    const generateTimeSlots = (operatingHours, interval) => {
-        const slots = [];
-        const [startTimeStr, endTimeStr] = operatingHours.split('-');
-        const [startHours, startMinutes] = startTimeStr.split(':').map(Number);
-        const [endHours, endMinutes] = endTimeStr.split(':').map(Number);
-
-        const startTime = new Date();
-        startTime.setHours(startHours, startMinutes, 0, 0);
-
-        const endTime = new Date();
-        endTime.setHours(endHours, endMinutes, 0, 0);
-
-        let currentTime = startTime;
-        while (currentTime <= endTime) {
-            slots.push(new Date(currentTime).toISOString());
-            currentTime = new Date(currentTime.getTime() + interval * 60000);
-        }
-
-        return slots;
-    };
-
     const generateTimeOptions = (operatingHours) => {
-        const { startTime, endTime } = parseOperatingHours(operatingHours);
         const now = new Date();
-
         const selectedDateObj = new Date(selectedDate);
+
+        const { startTime, endTime } = parseOperatingHours(operatingHours, selectedDateObj);
+
         const isToday = selectedDateObj.toDateString() === now.toDateString();
-        const isTomorrow = selectedDateObj > now && selectedDateObj.getDate() === now.getDate() + 1;
 
         let currentTime;
 
         if (isToday) {
-            currentTime = roundToNext15Minutes(new Date());
+            const roundedNow = roundToNext15Minutes(now);
+
+            if (roundedNow < startTime) {
+                currentTime = startTime;
+            } else if (roundedNow > endTime) {
+                return [];
+            } else {
+                currentTime = roundedNow;
+            }
         } else {
-            currentTime = new Date(startTime);
+            currentTime = startTime;
         }
 
@@ -111,14 +98,16 @@
     };
 
-    useEffect(() => {
-        const operatingHours = table?.restaurant?.operatingHours || "09:00-00:00";
-        const allTimeSlots = generateTimeSlots(operatingHours, timeSlotInterval);
-
-        const availableSlots = allTimeSlots.filter((slot) =>
-            !tableReservations.includes(slot)
-        );
-
-        setFilteredTimeSlots(availableSlots);
-    }, [tableReservations, table]);
+    const roundToNext15Minutes = (date) => {
+        const ms = 1000 * 60 * 15;
+        return new Date(Math.ceil(date.getTime() / ms) * ms);
+    };
+
+    useEffect(() => {
+        if (table?.restaurant?.operatingHours && selectedDate) {
+            const options = generateTimeOptions(table.restaurant.operatingHours);
+            setTimeOptions(options);
+        }
+    }, [table, selectedDate]);
+
 
     const handleInputChange = (e) => {
@@ -189,10 +178,17 @@
     const formattedDate = `${year}-${month}-${day}`;
 
-    const parseOperatingHours = (operatingHours) => {
+    const parseOperatingHours = (operatingHours, forDate) => {
         const [start, end] = operatingHours.split('-');
-        return {
-            startTime: new Date(`1970-01-01T${start}:00`),
-            endTime: new Date(`1970-01-01T${end}:00`)
-        };
+
+        const [startHour, startMinute] = start.split(':').map(Number);
+        const [endHour, endMinute] = end.split(':').map(Number);
+
+        const startTime = new Date(forDate);
+        startTime.setHours(startHour, startMinute, 0, 0);
+
+        const endTime = new Date(forDate);
+        endTime.setHours(endHour, endMinute, 0, 0);
+
+        return { startTime, endTime };
     };
 
Index: my-react-app/src/components/Reservations.js
===================================================================
--- my-react-app/src/components/Reservations.js	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ my-react-app/src/components/Reservations.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -24,4 +24,5 @@
                 const response = await axios.get(`http://localhost:8081/api/reservations/by/${userId}`);
                 setReservations(response.data);
+                console.log(response.data)
             } catch (error) {
                 console.error('Error fetching reservations:', error);
@@ -88,4 +89,35 @@
                                         "Not specified"} </p>
                                     <p className="card-text">Party Size: {reservation.partySize || "Not specified"}</p>
+                                    {reservation.preOrderedItems && reservation.preOrderedItems.length > 0 ? (
+                                        <div className="mt-3">
+                                            <h5 className="text-primary">Pre-Ordered Items:</h5>
+                                            <ul className="list-group mb-3">
+                                                {reservation.preOrderedItems.map((itemStr, index) => {
+                                                    const parts = itemStr.split(':');
+                                                    const name = parts[0];
+                                                    const quantity = parseInt(parts[1], 10) || 0;
+                                                    const price = parseFloat(parts[2]) || 0;
+
+                                                    return (
+                                                        <li key={index} className="list-group-item d-flex justify-content-between align-items-center">
+                                                            <span><strong>{name}</strong> × {quantity}</span>
+                                                            <span className="badge bg-success rounded-pill">${(price * quantity).toFixed(2)}</span>
+                                                        </li>
+                                                    );
+                                                })}
+                                            </ul>
+
+                                            <div className="alert alert-info text-center" role="alert">
+                                                <h5>Grand Total: ${reservation.preOrderedItems.reduce((acc, itemStr) => {
+                                                    const parts = itemStr.split(':');
+                                                    const quantity = parseInt(parts[1], 10) || 0;
+                                                    const price = parseFloat(parts[2]) || 0;
+                                                    return acc + (quantity * price);
+                                                }, 0).toFixed(2)}</h5>
+                                            </div>
+                                        </div>
+                                    ) : (
+                                        <p>No pre-ordered items.</p>
+                                    )}
                                     <p className="card-text text-danger">Special Requests: {reservation.specialRequests || "None"}</p>
                                     <p className="card-text">Status: {reservation.status || "Pending"}</p>
Index: my-react-app/src/components/RestaurantDetails.js
===================================================================
--- my-react-app/src/components/RestaurantDetails.js	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ my-react-app/src/components/RestaurantDetails.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -5,4 +5,5 @@
 import { useParams } from 'react-router-dom';
 import StarRating from "./StarRating";
+import MenuList from "./MenuList";
 
 
@@ -10,4 +11,5 @@
     const navigate = useNavigate();
     const { id } = useParams();
+    const [preOrderedItems, setPreOrderedItems] = useState([]);
 
     const [restaurant, setRestaurant] = useState(null);
@@ -100,6 +102,14 @@
         const encodedRestaurantId = encodeURIComponent(restaurant.restaurantId);
 
-        navigate(`/reservationConfirmation/${encodedTableId}/${encodedDateTime}/${encodedRestaurantId}`);
-    };
+        const totalPrice = preOrderedItems.reduce((acc, item) => acc + item.price * item.quantity, 0).toFixed(2);
+
+        navigate(`/reservationConfirmation/${encodedTableId}/${encodedDateTime}/${encodedRestaurantId}`, {
+            state: {
+                preOrderedItems: preOrderedItems,
+                totalPrice: totalPrice,
+            }
+        });
+    };
+
 
     const roundToNext15Minutes = (date) => {
@@ -174,11 +184,14 @@
                             </>
                         )}
-
+                        <MenuList
+                            restaurantId={restaurant.restaurantId}
+                            setPreOrderedItems={setPreOrderedItems}
+                            preOrderedItems={preOrderedItems}
+                        />
                         <br />
                         <button
                             className="btn btn-primary"
                             onClick={handleReservationConfirmation}
-                            disabled={!selectedTableId || !selectedDate || !selectedTime}
-                        >
+                            disabled={!selectedTableId || !selectedDate || !selectedTime}>
                             Confirm Reservation
                         </button>
Index: my-react-app/src/components/RestaurantInfo.js
===================================================================
--- my-react-app/src/components/RestaurantInfo.js	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ my-react-app/src/components/RestaurantInfo.js	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -1,4 +1,5 @@
 import React from 'react';
 import StarRating from "./StarRating";
+import MenuList from "./MenuList";
 
 const RestaurantInfo = ({ restaurant }) => {
@@ -8,7 +9,8 @@
                 {restaurant.name} <StarRating key={restaurant.id} rating={restaurant.rating}/>
             </h2>
-            <p className="card-text">{restaurant.cuisineType}</p> {/* Assuming cuisineType is provided */}
-            <p className="card-text">{restaurant.operatingHours}</p> {/* Assuming operatingHours is provided */}
-            <p className="card-text">Ul. {restaurant.address}</p> {/* Assuming address is provided */}
+            <p className="card-text">{restaurant.cuisineType}</p>
+            <p className="card-text">{restaurant.operatingHours}</p>
+            <p className="card-text">Ul. {restaurant.address}</p>
+            <MenuList restaurantId={restaurant.id} />
         </div>
     );
Index: src/main/java/com/example/rezevirajmasa/demo/dto/ReservationDTO.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/dto/ReservationDTO.java	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ src/main/java/com/example/rezevirajmasa/demo/dto/ReservationDTO.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -6,4 +6,5 @@
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 public class ReservationDTO {
@@ -19,9 +20,11 @@
     private String specialRequests;
     private String paymentStatus;
+    private List<String> preOrderedItems;
+
 
     public ReservationDTO() {
     }
 
-    public ReservationDTO(Long reservationID, String userEmail, BigDecimal rating, Long tableNumber, LocalDateTime reservationDateTime, LocalDateTime checkInTime, Restaurant restaurant, int partySize, String status, String specialRequests, String paymentStatus) {
+    public ReservationDTO(Long reservationID, String userEmail, BigDecimal rating, Long tableNumber, LocalDateTime reservationDateTime, LocalDateTime checkInTime, Restaurant restaurant, int partySize, String status, String specialRequests, String paymentStatus, List<String> preOrderedItems) {
         this.reservationID = reservationID;
         this.userEmail = userEmail;
@@ -35,4 +38,5 @@
         this.specialRequests = specialRequests;
         this.paymentStatus = paymentStatus;
+        this.preOrderedItems = preOrderedItems;
     }
 
@@ -49,4 +53,13 @@
         this.specialRequests = reservation.getSpecialRequests();
         this.paymentStatus = reservation.getPaymentStatus();
+        this.preOrderedItems = reservation.getPreOrderedItems();
+    }
+
+    public List<String> getPreOrderedItems() {
+        return preOrderedItems;
+    }
+
+    public void setPreOrderedItems(List<String> preOrderedItems) {
+        this.preOrderedItems = preOrderedItems;
     }
 
Index: src/main/java/com/example/rezevirajmasa/demo/model/Menu.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/model/Menu.java	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ src/main/java/com/example/rezevirajmasa/demo/model/Menu.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -1,5 +1,7 @@
 package com.example.rezevirajmasa.demo.model;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
+import lombok.Data;
 
 import java.math.BigDecimal;
@@ -7,4 +9,5 @@
 @Entity
 @Table(name = "menus")
+@Data
 public class Menu {
     @Id
@@ -15,4 +18,5 @@
     @ManyToOne
     @JoinColumn(name = "RestaurantID", nullable = false)
+    @JsonIgnore
     private Restaurant restaurant;
 
Index: src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -4,11 +4,17 @@
 import com.fasterxml.jackson.annotation.JsonManagedReference;
 import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
 
 @Entity
 @Table(name = "reservations")
+@Data
 public class Reservation {
 
@@ -47,9 +53,12 @@
     private LocalDateTime checkInTime;
 
+    @Getter
     @Column(name = "CheckOutTime")
     private LocalDateTime checkOutTime;
 
-//    @Column(name = "TotalAmount", precision = 8, scale = 2)
-//    private BigDecimal totalAmount;
+    @ElementCollection
+    @CollectionTable(name = "reservation_preordered_items", joinColumns = @JoinColumn(name = "reservation_id"))
+    @Column(name = "item")
+    private List<String> preOrderedItems = new ArrayList<>();
 
     @Column(name = "PaymentStatus", length = 20, nullable = false, columnDefinition = "VARCHAR default 'Unpaid'")
@@ -71,5 +80,4 @@
 
     public Reservation(User user, TableEntity table, Restaurant restaurant, LocalDateTime reservationDateTime, int partySize, String specialRequests, String status, LocalDateTime checkInTime, LocalDateTime checkOutTime, String paymentStatus) {
-//        this.customer = customer;
         this.table = table;
         this.user = user;
@@ -84,92 +92,4 @@
     }
 
-    public User getUser() {
-        return user;
-    }
-
-    public void setUser(User user) {
-        this.user = user;
-    }
-
-    public Long getReservationID() {
-        return reservationID;
-    }
-
-    public void setReservationID(Long reservationID) {
-        this.reservationID = reservationID;
-    }
-
-
-    public TableEntity getTable() {
-        return table;
-    }
-
-    public void setTable(TableEntity table) {
-        this.table = table;
-    }
-
-    public Restaurant getRestaurant() {
-        return restaurant;
-    }
-
-    public void setRestaurant(Restaurant restaurant) {
-        this.restaurant = restaurant;
-    }
-
-    public LocalDateTime getReservationDateTime() {
-        return reservationDateTime;
-    }
-
-    public void setReservationDateTime(LocalDateTime reservationDateTime) {
-        this.reservationDateTime = reservationDateTime;
-    }
-
-    public int getPartySize() {
-        return partySize;
-    }
-
-    public void setPartySize(int partySize) {
-        this.partySize = partySize;
-    }
-
-    public String getSpecialRequests() {
-        return specialRequests;
-    }
-
-    public void setSpecialRequests(String specialRequests) {
-        this.specialRequests = specialRequests;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public LocalDateTime getCheckInTime() {
-        return checkInTime;
-    }
-
-    public void setCheckInTime(LocalDateTime checkInTime) {
-        this.checkInTime = checkInTime;
-    }
-
-    public LocalDateTime getCheckOutTime() {
-        return checkOutTime;
-    }
-
-    public void setCheckOutTime(LocalDateTime checkOutTime) {
-        this.checkOutTime = checkOutTime;
-    }
-
-    public String getPaymentStatus() {
-        return paymentStatus;
-    }
-
-    public void setPaymentStatus(String paymentStatus) {
-        this.paymentStatus = paymentStatus;
-    }
 
     @Override
Index: src/main/java/com/example/rezevirajmasa/demo/repository/MenuRepository.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/repository/MenuRepository.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
+++ src/main/java/com/example/rezevirajmasa/demo/repository/MenuRepository.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -0,0 +1,11 @@
+package com.example.rezevirajmasa.demo.repository;
+
+import com.example.rezevirajmasa.demo.model.Menu;
+import com.example.rezevirajmasa.demo.model.Restaurant;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface MenuRepository extends JpaRepository<Menu, Long> {
+    List<Menu> findAllByRestaurant(Restaurant restaurant);
+}
Index: src/main/java/com/example/rezevirajmasa/demo/service/MenuService.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/service/MenuService.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
+++ src/main/java/com/example/rezevirajmasa/demo/service/MenuService.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -0,0 +1,9 @@
+package com.example.rezevirajmasa.demo.service;
+
+import com.example.rezevirajmasa.demo.model.Menu;
+
+import java.util.List;
+
+public interface MenuService {
+    public List<Menu> getMenuByRestaurantId(Long restaurantId);
+}
Index: src/main/java/com/example/rezevirajmasa/demo/service/impl/MenuServiceImpl.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/service/impl/MenuServiceImpl.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
+++ src/main/java/com/example/rezevirajmasa/demo/service/impl/MenuServiceImpl.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -0,0 +1,27 @@
+package com.example.rezevirajmasa.demo.service.impl;
+
+import com.example.rezevirajmasa.demo.model.Menu;
+import com.example.rezevirajmasa.demo.model.Restaurant;
+import com.example.rezevirajmasa.demo.repository.MenuRepository;
+import com.example.rezevirajmasa.demo.service.MenuService;
+import com.example.rezevirajmasa.demo.service.RestaurantService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class MenuServiceImpl implements MenuService {
+    private final MenuRepository menuRepository;
+    private final RestaurantService restaurantService;
+
+    public MenuServiceImpl(MenuRepository menuRepository, RestaurantService restaurantService) {
+        this.menuRepository = menuRepository;
+        this.restaurantService = restaurantService;
+    }
+
+    @Override
+    public List<Menu> getMenuByRestaurantId(Long restaurantId) {
+        Restaurant restaurant = restaurantService.findByIdRestaurant(restaurantId);
+        return menuRepository.findAllByRestaurant(restaurant);
+    }
+}
Index: src/main/java/com/example/rezevirajmasa/demo/service/impl/ReservationImpl.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/service/impl/ReservationImpl.java	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ src/main/java/com/example/rezevirajmasa/demo/service/impl/ReservationImpl.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -63,7 +63,6 @@
             TableEntity table = optionalTable.get();
 
-            LocalDateTime reservationTime = reservationDTO.getReservationDateTime();
-            LocalDateTime startTime = reservationTime.minusHours(2);
-            LocalDateTime endTime = reservationTime.plusHours(2);
+            LocalDateTime startTime = reservationDTO.getReservationDateTime().plusHours(1);
+            LocalDateTime endTime = reservationDTO.getReservationDateTime().plusHours(3);
 
             boolean hasConflict = table.getReservations().stream()
@@ -93,8 +92,9 @@
             reservation.setPaymentStatus(reservationDTO.getPaymentStatus() != null ? reservationDTO.getPaymentStatus() : "Unpaid");
             reservation.setUser(user);
+            reservation.setPreOrderedItems(reservationDTO.getPreOrderedItems());
             reservation.setRestaurant(reservationDTO.getRestaurant());
-            reservation.setCheckInTime(reservationTime);
+            reservation.setCheckInTime(reservationDTO.getReservationDateTime().plusHours(1));
             reservation.setReservationDateTime(LocalDateTime.now());
-            reservation.setCheckOutTime(reservationTime.plusHours(2));
+            reservation.setCheckOutTime(reservationDTO.getReservationDateTime().plusHours(3));
             reservation.setRestaurant(reservationDTO.getRestaurant());
 
Index: src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java	(revision deea3c4a0005ebc66d196fb9a5747758d15a025c)
+++ src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java	(revision e15e8d976a275ebb70018ca698e8c0f11b3f09df)
@@ -37,7 +37,8 @@
     private final ReservationHistoryService reservationHistoryService;
     private final TableService tableService;
+    private final MenuService menuService;
     private final UserMapper userMapper;
     private final TokenService tokenService;
-    public testController(RestaurantService restaurantService, CustomerService customerService, UserService userService, ReservationService reservationService, ReservationHistoryService reservationHistoryService, TableService tableService, UserMapper userMapper, TokenService tokenService) {
+    public testController(RestaurantService restaurantService, CustomerService customerService, UserService userService, ReservationService reservationService, ReservationHistoryService reservationHistoryService, TableService tableService, MenuService menuService, UserMapper userMapper, TokenService tokenService) {
         this.restaurantService = restaurantService;
         this.customerService = customerService;
@@ -46,4 +47,5 @@
         this.reservationHistoryService = reservationHistoryService;
         this.tableService = tableService;
+        this.menuService = menuService;
         this.userMapper = userMapper;
         this.tokenService = tokenService;
@@ -272,3 +274,9 @@
         return new ResponseEntity<>(reservations, HttpStatus.OK);
     }
+
+    // menu calls
+    @GetMapping("/api/restaurant-menu/{restaurantId}")
+    public List<Menu> getMenuByRestaurantId(@PathVariable Long restaurantId) {
+        return menuService.getMenuByRestaurantId(restaurantId);
+    }
 }
