Ignore:
Timestamp:
03/03/24 10:52:49 (15 months ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
c63036a
Parents:
75f5086
Message:

RetaurantServiceImpl problemi
isAvailable od tableEntity...

Location:
src/main/java/com/example/rezevirajmasa/demo
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java

    r75f5086 rcfc16a3  
    4848//    private BigDecimal totalAmount;//rezervacija so depozit ako e
    4949
    50     @Column(name = "Pa`ymentStatus", length = 20, nullable = false, columnDefinition = "VARCHAR default 'Unpaid'")
     50    @Column(name = "PaymentStatus", length = 20, nullable = false, columnDefinition = "VARCHAR default 'Unpaid'")
    5151    private String paymentStatus;
    5252
  • src/main/java/com/example/rezevirajmasa/demo/repository/RestaurantRepository.java

    r75f5086 rcfc16a3  
    44import com.example.rezevirajmasa.demo.model.TableEntity;
    55import org.springframework.data.jpa.repository.JpaRepository;
     6import org.springframework.data.jpa.repository.Query;
    67
    78import java.util.List;
     
    910public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
    1011    List<Restaurant> findAllByNameLike(String search);
    11     List<Restaurant> findAllByCuisineTypeLike(String search);
     12    List<Restaurant> findAllByCuisineTypeContaining(String search);
     13    @Query("SELECT DISTINCT r.cuisineType FROM Restaurant r")
     14    List<String> findAllCuisineTypes();
     15    List<Restaurant> findAllByCuisineType(String cuisine);
    1216}
  • src/main/java/com/example/rezevirajmasa/demo/repository/TableRepository.java

    r75f5086 rcfc16a3  
    1414//    @Query("SELECT t FROM TableEntity t JOIN FETCH t.restaurant WHERE t.id = :id")
    1515//    TableEntity findTableEntityByIdWithRestaurant(@Param("id") Long id);
    16     List<TableEntity> findAllByTimeSlotsContainingAndCapacity(LocalDateTime timeSlot, Integer partySize);
     16    List<TableEntity> findAllByTimeSlotsContainingAndCapacityGreaterThanEqual(LocalDateTime timeSlot, Integer partySize);
    1717}
  • src/main/java/com/example/rezevirajmasa/demo/service/RestaurantService.java

    r75f5086 rcfc16a3  
    2222    public List<Restaurant> findRestaurantsByDateTimeAndPartySize(LocalDateTime dateTime, int partySize, String search);
    2323    public List<Restaurant> findRestaurantsBySearchParams(LocalDateTime dateTime, int partySize, String search);
     24    public List<String> findALlCuisineTypes();
     25    List<Restaurant> findRestaurantsByCuisineType(String param);
    2426}
  • src/main/java/com/example/rezevirajmasa/demo/service/impl/RestaurantServiceImpl.java

    r75f5086 rcfc16a3  
    168168    @Override
    169169    public List<Restaurant> findRestaurantsBySearchParams(LocalDateTime dateTime, int partySize, String search) {
    170         if (!search.isEmpty()) {
    171             List<Restaurant> restaurantList = null;
    172             if (!restaurantRepository.findAllByNameLike(search).isEmpty()) {
    173                 restaurantList = restaurantRepository.findAllByNameLike(search);
    174             } else {
    175                 restaurantList = restaurantRepository.findAllByCuisineTypeLike(search);
     170        if (search == null || search.isEmpty()) {
     171            List<TableEntity> tableEntities = tableRepository.findAllByTimeSlotsContainingAndCapacityGreaterThanEqual(dateTime, partySize);
     172            return tableEntities.stream()
     173                    .map(TableEntity::getRestaurant)
     174                    .distinct()
     175                    .collect(Collectors.toList());
     176        } else {
     177            List<Restaurant> restaurantList = restaurantRepository.findAllByNameLike(search);
     178            if (restaurantList.isEmpty()) {
     179                restaurantList = restaurantRepository.findAllByCuisineTypeContaining(search);
    176180            }
    177181            return restaurantList;
    178         } else {
    179             List<TableEntity> tableEntities = tableRepository.findAllByTimeSlotsContainingAndCapacity(dateTime, partySize);
    180             return tableEntities.stream()
    181                     .map(TableEntity::getRestaurant)
    182                     .distinct()  // To avoid duplicates in case one restaurant has multiple tables
    183                     .collect(Collectors.toList());
    184182        }
    185183    }
     184
     185    @Override
     186    public List<String> findALlCuisineTypes() {
     187        return restaurantRepository.findAllCuisineTypes();
     188    }
     189
     190    @Override
     191    public List<Restaurant> findRestaurantsByCuisineType(String param) {
     192        return restaurantRepository.findAllByCuisineType(param);
     193    }
    186194}
  • src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java

    r75f5086 rcfc16a3  
    1717import java.util.List;
    1818import java.util.Map;
     19import java.util.Optional;
    1920
    2021@CrossOrigin(origins = "http://localhost:3000/")
     
    5253    @PostMapping("/api/search")
    5354    public ResponseEntity<List<Restaurant>> searchRestaurants(@RequestBody Map<String, Object> requestData) {
    54         String dateTime = (String) requestData.get("dateTime");
    55         Integer partySize = (Integer) requestData.get("partySize");
    56         String search = (String) requestData.get("search");
     55        Optional<String> dateTimeOptional = Optional.ofNullable((String) requestData.get("dateTime"));
     56        int partySize = Integer.parseInt(requestData.get("partySize").toString());
     57        Optional<String> searchOptional = Optional.ofNullable((String) requestData.get("search"));
    5758
    58         // Now proceed with parsing dateTime and performing the search based on the received parameters
     59        String dateTime = dateTimeOptional.orElse(null);
     60        String search = searchOptional.orElse(null);
    5961
    6062        LocalDateTime parsedDateTime = null;
     
    6769
    6870        return new ResponseEntity<List<Restaurant>>(filteredRestaurants, HttpStatus.OK);
     71    }
     72
     73    @PostMapping("/api/search/shortcut/{param}")
     74    public ResponseEntity<List<Restaurant>> searchByCuisineTypeShortcut(@PathVariable String param) {
     75        List<Restaurant> filteredRestaurants;
     76        if(param != null && !param.isEmpty()) {
     77            filteredRestaurants = restaurantService.findRestaurantsByCuisineType(param);
     78        } else {
     79            filteredRestaurants = restaurantService.listall();
     80        }
     81        return new ResponseEntity<List<Restaurant>>(filteredRestaurants, HttpStatus.OK);
     82    }
     83
     84    @GetMapping("/api/cuisineTypes")
     85    public ResponseEntity<List<String>> getAllCuisineTypes() {
     86        List<String> cuisineTypes = restaurantService.findALlCuisineTypes();
     87        return new ResponseEntity<>(cuisineTypes, HttpStatus.OK);
    6988    }
    7089
Note: See TracChangeset for help on using the changeset viewer.