Changeset 65b6638 for src


Ignore:
Timestamp:
02/28/24 18:44:19 (15 months ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
75f5086
Parents:
d24f17c
Message:

RetaurantServiceImpl problemi
isAvailable od tableEntity...

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

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/rezevirajmasa/demo/repository/RestaurantRepository.java

    rd24f17c r65b6638  
    88
    99public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
     10
     11
    1012}
  • src/main/java/com/example/rezevirajmasa/demo/service/RestaurantService.java

    rd24f17c r65b6638  
    22
    33import com.example.rezevirajmasa.demo.model.Restaurant;
     4import com.example.rezevirajmasa.demo.model.TableEntity;
    45
    56import java.math.BigDecimal;
    67import java.time.LocalDate;
     8import java.time.LocalDateTime;
    79import java.util.List;
    810
     
    1820    List<Restaurant> listRestaurantBy(String search);
    1921    List<Restaurant> getRestaurantsWithAvailableTimeSlotsForToday();
     22    public List<Restaurant> findRestaurantsByDateTimeAndPartySize(LocalDateTime dateTime, int partySize, String search);
    2023}
  • src/main/java/com/example/rezevirajmasa/demo/service/impl/RestaurantServiceImpl.java

    rd24f17c r65b6638  
    143143        return restaurantsWithAvailableTimeSlots;
    144144    }
     145
     146    @Override
     147    public List<Restaurant> findRestaurantsByDateTimeAndPartySize(LocalDateTime dateTime, int partySize, String search) {
     148        List<Restaurant> allRestaurants = restaurantRepository.findAll();
     149        return allRestaurants.stream()
     150                .filter(restaurant -> hasAvailableTable(restaurant, dateTime, partySize))
     151                .filter(restaurant -> isMatch(restaurant, search))
     152                .collect(Collectors.toList());
     153    }
     154
     155    private boolean hasAvailableTable(Restaurant restaurant, LocalDateTime dateTime, int partySize) {
     156        for (TableEntity table : restaurant.getTablesList()) {
     157            if (table.isAvailable(dateTime) && table.getCapacity() >= partySize) {
     158                return true;
     159            }
     160        }
     161        return false;
     162    }
     163
     164    private boolean isMatch(Restaurant restaurant, String name) {
     165        return name == null || name.isEmpty() || restaurant.getName().contains(name);
     166    }
    145167}
  • src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java

    rd24f17c r65b6638  
    66import com.example.rezevirajmasa.demo.service.RestaurantService;
    77import com.example.rezevirajmasa.demo.service.TableService;
     8import jdk.jfr.consumer.RecordingStream;
    89import org.apache.coyote.Response;
     10import org.springframework.format.annotation.DateTimeFormat;
    911import org.springframework.http.HttpStatus;
    1012import org.springframework.http.ResponseEntity;
     
    1214
    1315import java.time.LocalDateTime;
     16import java.time.format.DateTimeFormatter;
    1417import java.util.List;
     18import java.util.Map;
    1519
    1620@CrossOrigin(origins = "http://localhost:3000/")
     
    3438    }
    3539
     40    //restaurants
     41
    3642    @RequestMapping("/api/restaurants")
    3743    public ResponseEntity<List<Restaurant>> getAllRestaurants() {
     
    4248    public ResponseEntity<Restaurant> getRestaurantById(@PathVariable Long restaurantId) {
    4349        return new ResponseEntity<Restaurant>(restaurantService.findById(restaurantId), HttpStatus.OK);
     50    }
     51
     52    @PostMapping("/api/search")
     53    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");
     57
     58        // Now proceed with parsing dateTime and performing the search based on the received parameters
     59
     60        LocalDateTime parsedDateTime = null;
     61        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
     62        if (dateTime != null) {
     63            parsedDateTime = LocalDateTime.parse(dateTime, formatter);
     64        }
     65
     66        List<Restaurant> filteredRestaurants = restaurantService.findRestaurantsByDateTimeAndPartySize(parsedDateTime, partySize, search);
     67
     68        return new ResponseEntity<List<Restaurant>>(filteredRestaurants, HttpStatus.OK);
    4469    }
    4570
Note: See TracChangeset for help on using the changeset viewer.