Changeset e48199a for src


Ignore:
Timestamp:
05/07/25 18:34:01 (10 days ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Parents:
b67dfd3
Message:

Final version for DB

Location:
src/main/java/com/example/rezevirajmasa/demo
Files:
3 added
8 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/rezevirajmasa/demo/dto/ReservationDTO.java

    rb67dfd3 re48199a  
    44import com.example.rezevirajmasa.demo.model.Reservation;
    55import com.example.rezevirajmasa.demo.model.Restaurant;
     6import lombok.Setter;
    67
    78import java.math.BigDecimal;
    89import java.time.LocalDateTime;
    910import java.util.List;
     11import java.util.stream.Collectors;
    1012
     13@Setter
    1114public class ReservationDTO {
    1215    private Long reservationID;
     
    2124    private String specialRequests;
    2225    private String paymentStatus;
    23     private List<PreorderedItem> preOrderedItems;
     26    private List<PreorderedItemDto> preOrderedItems;
    2427
    2528    public ReservationDTO() {
     
    2932                          LocalDateTime reservationDateTime, LocalDateTime checkInTime, Long restaurantId,
    3033                          int partySize, String reservationStatus, String specialRequests,
    31                           String paymentStatus, List<PreorderedItem> preOrderedItems) {
     34                          String paymentStatus, List<PreorderedItemDto> preOrderedItems) {
    3235        this.reservationID = reservationID;
    3336        this.userEmail = userEmail;
     
    5659        this.specialRequests = reservation.getSpecialRequests();
    5760        this.paymentStatus = reservation.getPaymentStatus();
    58         this.preOrderedItems = reservation.getPreOrderedItems();
     61
     62        this.preOrderedItems = reservation.getPreOrderedItems().stream()
     63                .map(preorderedItem -> new PreorderedItemDto(
     64                        preorderedItem.getPreorderedItemName(),
     65                        preorderedItem.getQuantity(),
     66                        preorderedItem.getPrice(),
     67                        preorderedItem.getMenu().getMenuID()))
     68                .collect(Collectors.toList());
    5969    }
    6070
     
    6373    }
    6474
    65     public void setReservationID(Long reservationID) {
    66         this.reservationID = reservationID;
    67     }
    68 
    6975    public String getUserEmail() {
    7076        return userEmail;
    71     }
    72 
    73     public void setUserEmail(String userEmail) {
    74         this.userEmail = userEmail;
    7577    }
    7678
     
    7981    }
    8082
    81     public void setRating(BigDecimal rating) {
    82         this.rating = rating;
    83     }
    84 
    8583    public Long getTableNumber() {
    8684        return tableNumber;
    87     }
    88 
    89     public void setTableNumber(Long tableNumber) {
    90         this.tableNumber = tableNumber;
    9185    }
    9286
     
    9589    }
    9690
    97     public void setReservationDateTime(LocalDateTime reservationDateTime) {
    98         this.reservationDateTime = reservationDateTime;
    99     }
    100 
    10191    public LocalDateTime getCheckInTime() {
    10292        return checkInTime;
    103     }
    104 
    105     public void setCheckInTime(LocalDateTime checkInTime) {
    106         this.checkInTime = checkInTime;
    10793    }
    10894
     
    11197    }
    11298
    113     public void setRestaurantId(Long restaurantId) {
    114         this.restaurantId = restaurantId;
    115     }
    116 
    11799    public int getPartySize() {
    118100        return partySize;
    119     }
    120 
    121     public void setPartySize(int partySize) {
    122         this.partySize = partySize;
    123101    }
    124102
     
    127105    }
    128106
    129     public void setReservationStatus(String reservationStatus) {
    130         this.reservationStatus = reservationStatus;
    131     }
    132 
    133107    public String getSpecialRequests() {
    134108        return specialRequests;
    135     }
    136 
    137     public void setSpecialRequests(String specialRequests) {
    138         this.specialRequests = specialRequests;
    139109    }
    140110
     
    143113    }
    144114
    145     public void setPaymentStatus(String paymentStatus) {
    146         this.paymentStatus = paymentStatus;
    147     }
    148 
    149     public List<PreorderedItem> getPreOrderedItems() {
     115    public List<PreorderedItemDto> getPreOrderedItems() {
    150116        return preOrderedItems;
    151117    }
    152118
    153     public void setPreOrderedItems(List<PreorderedItem> preOrderedItems) {
    154         this.preOrderedItems = preOrderedItems;
    155     }
    156119}
  • src/main/java/com/example/rezevirajmasa/demo/model/Menu.java

    rb67dfd3 re48199a  
    3838    private List<MenuTag> tags = new ArrayList<>();
    3939
     40    @OneToMany(mappedBy = "menu", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
     41    private List<PriceHistory> priceHistoryList = new ArrayList<>();
     42
    4043    public Menu() {
    4144    }
  • src/main/java/com/example/rezevirajmasa/demo/model/PreorderedItem.java

    rb67dfd3 re48199a  
    2626    private Integer quantity;
    2727
     28    @Column(name = "price_at_order", precision = 8, scale = 2, nullable = false)
    2829    private BigDecimal price;
    2930
     
    3233    @JoinColumn(name = "reservation_id", nullable = false)
    3334    private Reservation reservation;
     35
     36    @ManyToOne
     37    @JoinColumn(name = "menu_id", nullable = false)
     38    private Menu menu;
    3439}
  • src/main/java/com/example/rezevirajmasa/demo/model/Reservation.java

    rb67dfd3 re48199a  
    11package com.example.rezevirajmasa.demo.model;
    22
     3import com.example.rezevirajmasa.demo.dto.PreorderedItemDto;
    34import com.fasterxml.jackson.annotation.JsonBackReference;
    45import com.fasterxml.jackson.annotation.JsonManagedReference;
  • src/main/java/com/example/rezevirajmasa/demo/service/MenuService.java

    rb67dfd3 re48199a  
    33import com.example.rezevirajmasa.demo.model.Menu;
    44
     5import java.math.BigDecimal;
    56import java.util.List;
    67
    78public interface MenuService {
    89    public List<Menu> getMenuByRestaurantId(Long restaurantId);
     10    public void updateMenuPrice(Long menuId, BigDecimal newPrice);
     11    public Menu getMenuById(Long id);
    912}
  • src/main/java/com/example/rezevirajmasa/demo/service/impl/MenuServiceImpl.java

    rb67dfd3 re48199a  
    22
    33import com.example.rezevirajmasa.demo.model.Menu;
     4import com.example.rezevirajmasa.demo.model.PriceHistory;
    45import com.example.rezevirajmasa.demo.model.Restaurant;
    56import com.example.rezevirajmasa.demo.repository.MenuRepository;
     7import com.example.rezevirajmasa.demo.repository.PriceHistoryRepository;
    68import com.example.rezevirajmasa.demo.service.MenuService;
    79import com.example.rezevirajmasa.demo.service.RestaurantService;
     10import org.openqa.selenium.InvalidArgumentException;
    811import org.springframework.stereotype.Service;
    912
     13import java.math.BigDecimal;
     14import java.time.LocalDateTime;
    1015import java.util.List;
    1116
     
    1520    private final RestaurantService restaurantService;
    1621
    17     public MenuServiceImpl(MenuRepository menuRepository, RestaurantService restaurantService) {
     22    private final PriceHistoryRepository priceHistoryRepository;
     23
     24    public MenuServiceImpl(MenuRepository menuRepository, RestaurantService restaurantService, PriceHistoryRepository priceHistoryRepository) {
    1825        this.menuRepository = menuRepository;
    1926        this.restaurantService = restaurantService;
     27        this.priceHistoryRepository = priceHistoryRepository;
    2028    }
    2129
     
    2533        return menuRepository.findAllByRestaurant(restaurant);
    2634    }
     35
     36    @Override
     37    public void updateMenuPrice(Long menuId, BigDecimal newPrice) {
     38        Menu menu = menuRepository.findById(menuId)
     39                .orElseThrow(() -> new IllegalArgumentException("Menu not found"));
     40
     41        if (menu.getPrice() != null && !menu.getPrice().equals(newPrice)) {
     42            PriceHistory priceHistory = new PriceHistory(menu, menu.getPrice(), LocalDateTime.now());
     43            priceHistoryRepository.save(priceHistory);
     44        }
     45
     46        menu.setPrice(newPrice);
     47        menuRepository.save(menu);
     48    }
     49
     50    @Override
     51    public Menu getMenuById(Long id) {
     52        return menuRepository.findById(id)
     53                .orElseThrow(()->new InvalidArgumentException("Invalid id sent: " + id));
     54    }
    2755}
  • src/main/java/com/example/rezevirajmasa/demo/service/impl/ReservationImpl.java

    rb67dfd3 re48199a  
    11package com.example.rezevirajmasa.demo.service.impl;
    22
     3import com.example.rezevirajmasa.demo.dto.PreorderedItemDto;
    34import com.example.rezevirajmasa.demo.dto.ReservationDTO;
    45import com.example.rezevirajmasa.demo.mappers.UserMapper;
     
    89import com.example.rezevirajmasa.demo.repository.ReservationRepository;
    910import com.example.rezevirajmasa.demo.repository.TableRepository;
     11import com.example.rezevirajmasa.demo.service.MenuService;
    1012import com.example.rezevirajmasa.demo.service.ReservationHistoryService;
    1113import com.example.rezevirajmasa.demo.service.ReservationService;
    1214import com.example.rezevirajmasa.demo.service.UserService;
    1315import org.springframework.beans.factory.annotation.Autowired;
     16import org.springframework.context.annotation.Lazy;
    1417import org.springframework.stereotype.Service;
    1518
     
    3134    @Autowired
    3235    private ReservationRepository reservationRepository;
     36    @Autowired
     37    @Lazy
     38    private MenuService menuService;
    3339
    3440    public ReservationImpl(UserMapper userMapper) {
     
    8288            List<PreorderedItem> preOrderedItems = new ArrayList<>();
    8389
    84             for (PreorderedItem dtoItem : reservationDTO.getPreOrderedItems()) {
     90            for (PreorderedItemDto dtoItem : reservationDTO.getPreOrderedItems()) {
    8591                PreorderedItem item = new PreorderedItem();
    8692                item.setPreorderedItemName(dtoItem.getPreorderedItemName());
     
    8894                item.setPrice(dtoItem.getPrice());
    8995                item.setReservation(reservation);
     96
     97                Menu menu = menuService.getMenuById(dtoItem.getMenuID());
     98                item.setMenu(menu);
    9099
    91100                preOrderedItems.add(item);
  • src/main/java/com/example/rezevirajmasa/demo/web/rest/testController.java

    rb67dfd3 re48199a  
    6464    @GetMapping("/api/restaurants/{restaurantId}")
    6565    public ResponseEntity<RestaurantDTO> getRestaurantById(@PathVariable Long restaurantId) {
    66         return new ResponseEntity<RestaurantDTO>(restaurantService.findById(restaurantId), HttpStatus.OK);
     66        RestaurantDTO restaurantDTO = restaurantService.findById(restaurantId);
     67        return new ResponseEntity<>(restaurantDTO, HttpStatus.OK);
    6768    }
    6869
Note: See TracChangeset for help on using the changeset viewer.