Index: src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -48,5 +48,5 @@
 //    private BigDecimal totalAmount;//rezervacija so depozit ako e
 
-    @Column(name = "Pa`ymentStatus", length = 20, nullable = false, columnDefinition = "VARCHAR default 'Unpaid'")
+    @Column(name = "PaymentStatus", length = 20, nullable = false, columnDefinition = "VARCHAR default 'Unpaid'")
     private String paymentStatus;
 
Index: src/main/java/com/example/rezevirajmasa/demo/repository/RestaurantRepository.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/repository/RestaurantRepository.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/repository/RestaurantRepository.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -4,4 +4,5 @@
 import com.example.rezevirajmasa.demo.model.TableEntity;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
@@ -9,4 +10,7 @@
 public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
     List<Restaurant> findAllByNameLike(String search);
-    List<Restaurant> findAllByCuisineTypeLike(String search);
+    List<Restaurant> findAllByCuisineTypeContaining(String search);
+    @Query("SELECT DISTINCT r.cuisineType FROM Restaurant r")
+    List<String> findAllCuisineTypes();
+    List<Restaurant> findAllByCuisineType(String cuisine);
 }
Index: src/main/java/com/example/rezevirajmasa/demo/repository/TableRepository.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/repository/TableRepository.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/repository/TableRepository.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -14,4 +14,4 @@
 //    @Query("SELECT t FROM TableEntity t JOIN FETCH t.restaurant WHERE t.id = :id")
 //    TableEntity findTableEntityByIdWithRestaurant(@Param("id") Long id);
-    List<TableEntity> findAllByTimeSlotsContainingAndCapacity(LocalDateTime timeSlot, Integer partySize);
+    List<TableEntity> findAllByTimeSlotsContainingAndCapacityGreaterThanEqual(LocalDateTime timeSlot, Integer partySize);
 }
Index: src/main/java/com/example/rezevirajmasa/demo/service/RestaurantService.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/service/RestaurantService.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/service/RestaurantService.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -22,3 +22,5 @@
     public List<Restaurant> findRestaurantsByDateTimeAndPartySize(LocalDateTime dateTime, int partySize, String search);
     public List<Restaurant> findRestaurantsBySearchParams(LocalDateTime dateTime, int partySize, String search);
+    public List<String> findALlCuisineTypes();
+    List<Restaurant> findRestaurantsByCuisineType(String param);
 }
Index: src/main/java/com/example/rezevirajmasa/demo/service/impl/RestaurantServiceImpl.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/service/impl/RestaurantServiceImpl.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/service/impl/RestaurantServiceImpl.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -168,19 +168,27 @@
     @Override
     public List<Restaurant> findRestaurantsBySearchParams(LocalDateTime dateTime, int partySize, String search) {
-        if (!search.isEmpty()) {
-            List<Restaurant> restaurantList = null;
-            if (!restaurantRepository.findAllByNameLike(search).isEmpty()) {
-                restaurantList = restaurantRepository.findAllByNameLike(search);
-            } else {
-                restaurantList = restaurantRepository.findAllByCuisineTypeLike(search);
+        if (search == null || search.isEmpty()) {
+            List<TableEntity> tableEntities = tableRepository.findAllByTimeSlotsContainingAndCapacityGreaterThanEqual(dateTime, partySize);
+            return tableEntities.stream()
+                    .map(TableEntity::getRestaurant)
+                    .distinct()
+                    .collect(Collectors.toList());
+        } else {
+            List<Restaurant> restaurantList = restaurantRepository.findAllByNameLike(search);
+            if (restaurantList.isEmpty()) {
+                restaurantList = restaurantRepository.findAllByCuisineTypeContaining(search);
             }
             return restaurantList;
-        } else {
-            List<TableEntity> tableEntities = tableRepository.findAllByTimeSlotsContainingAndCapacity(dateTime, partySize);
-            return tableEntities.stream()
-                    .map(TableEntity::getRestaurant)
-                    .distinct()  // To avoid duplicates in case one restaurant has multiple tables
-                    .collect(Collectors.toList());
         }
     }
+
+    @Override
+    public List<String> findALlCuisineTypes() {
+        return restaurantRepository.findAllCuisineTypes();
+    }
+
+    @Override
+    public List<Restaurant> findRestaurantsByCuisineType(String param) {
+        return restaurantRepository.findAllByCuisineType(param);
+    }
 }
Index: src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java
===================================================================
--- src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java	(revision 75f50866bac587cbe5cf2dfb97353279f16a8c82)
+++ src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java	(revision cfc16a3143db2a719a3031cf0cf4bdb718b66d4f)
@@ -17,4 +17,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 @CrossOrigin(origins = "http://localhost:3000/")
@@ -52,9 +53,10 @@
     @PostMapping("/api/search")
     public ResponseEntity<List<Restaurant>> searchRestaurants(@RequestBody Map<String, Object> requestData) {
-        String dateTime = (String) requestData.get("dateTime");
-        Integer partySize = (Integer) requestData.get("partySize");
-        String search = (String) requestData.get("search");
+        Optional<String> dateTimeOptional = Optional.ofNullable((String) requestData.get("dateTime"));
+        int partySize = Integer.parseInt(requestData.get("partySize").toString());
+        Optional<String> searchOptional = Optional.ofNullable((String) requestData.get("search"));
 
-        // Now proceed with parsing dateTime and performing the search based on the received parameters
+        String dateTime = dateTimeOptional.orElse(null);
+        String search = searchOptional.orElse(null);
 
         LocalDateTime parsedDateTime = null;
@@ -67,4 +69,21 @@
 
         return new ResponseEntity<List<Restaurant>>(filteredRestaurants, HttpStatus.OK);
+    }
+
+    @PostMapping("/api/search/shortcut/{param}")
+    public ResponseEntity<List<Restaurant>> searchByCuisineTypeShortcut(@PathVariable String param) {
+        List<Restaurant> filteredRestaurants;
+        if(param != null && !param.isEmpty()) {
+            filteredRestaurants = restaurantService.findRestaurantsByCuisineType(param);
+        } else {
+            filteredRestaurants = restaurantService.listall();
+        }
+        return new ResponseEntity<List<Restaurant>>(filteredRestaurants, HttpStatus.OK);
+    }
+
+    @GetMapping("/api/cuisineTypes")
+    public ResponseEntity<List<String>> getAllCuisineTypes() {
+        List<String> cuisineTypes = restaurantService.findALlCuisineTypes();
+        return new ResponseEntity<>(cuisineTypes, HttpStatus.OK);
     }
 
