Skip to content

Commit

Permalink
[#42] Refactor: 고정메뉴 추가 시 메뉴카테고리 포함하도록 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
SY2on committed Jan 26, 2024
1 parent ac8f653 commit b9dfbd9
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ssu.eatssu.domain.admin.dto;

public record RegisterFixMenuRequest(String name, Integer price) {
public record RegisterFixMenuRequest(Long categoryId, String name, Integer price) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,31 @@ public void register(Restaurant restaurant, RegisterFixMenuRequest request) {
throw new BaseException(BaseResponseStatus.CONFLICT);
}

manageMenuRepository.save(Menu.createFixed(request.name(), restaurant, request.price()));
/**
* 해당 식당의 메뉴카테고리들 중에 요청받은 카테고리가 존재하는지 확인
*/
List<MenuCategory> menuCategories = loadMenuRepository.findMenuCategoriesByRestaurant(restaurant);
MenuCategory category = menuCategories.stream()
.filter(menuCategory -> menuCategory.getId().equals(request.categoryId()))
.findFirst()
.orElseThrow(() -> new BaseException(BaseResponseStatus.BAD_REQUEST));

manageMenuRepository.save(Menu.createFixed(request.name(), restaurant, request.price(), category));
}

public void updateMenu(Long menuId, UpdateFixMenuRequest request) {
if (isFixedMenu(menuId)) {
throw new BaseException(BaseResponseStatus.NOT_SUPPORT_RESTAURANT);
}

Restaurant restaurant = loadMenuRepository.getRestaurant(menuId);

duplicateCheck(request.name(), restaurant);

Menu menu = manageMenuRepository.findById(menuId)
.orElseThrow(() -> new BaseException(BaseResponseStatus.NOT_FOUND_MENU));

/**
* 식당에 같은 이름의 메뉴가 있는 지 확인
*/
Restaurant restaurant = loadMenuRepository.getRestaurant(menuId);
duplicateCheck(request.name(), restaurant);
menu.update(request.name(), request.price());

manageMenuRepository.save(menu);
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/ssu/eatssu/domain/menu/entity/Menu.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,28 @@ public class Menu {
@JoinColumn(name = "menu_category_id")
private MenuCategory category;

private Menu(String name, Restaurant restaurant, Integer price) {
private Menu(String name, Restaurant restaurant, Integer price, MenuCategory category) {
this.name = name;
this.restaurant = restaurant;
this.price = price;
this.category = category;
}

public static Menu createVariable(String name, Restaurant restaurant) {
int price = 0;
if (RestaurantType.isVariableType(restaurant)) {
price = restaurant.getPrice();
}
return new Menu(name, restaurant, price);
return new Menu(name, restaurant, price,null);
}

/**
* 고정 메뉴를 생성합니다.
* todo: 고정메뉴 식당이 아니라 변동 메뉴 식당으로 잘못 들어온다면 어떻게 처리?
*/

public static Menu createFixed(String name, Restaurant restaurant, Integer price) {
return new Menu(name, restaurant, price);
public static Menu createFixed(String name, Restaurant restaurant, Integer price, MenuCategory category) {
return new Menu(name, restaurant, price, category);
}

// COMMENT: CASCADE.PERSIST 를 사용하면, Menu 를 저장할 때 Review 도 같이 저장된다.
Expand Down

0 comments on commit b9dfbd9

Please sign in to comment.