Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package dev.example.restaurantManager.controller;


import dev.example.restaurantManager.model.MenuItem;
import dev.example.restaurantManager.service.MenuItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RequestMapping("/api/v1/menuItems")
@RestController
public class MenuItemController {

@Autowired
private MenuItemService menuItemService;

@GetMapping("/allMenuItems")
public ResponseEntity<List<MenuItem>> getAllMenuItems() {
List<MenuItem> menuItems = menuItemService.getAllMenuItems();
HttpHeaders headers = getCommonHeaders("Get all menu items");
return menuItems != null && !menuItems.isEmpty()
? new ResponseEntity<>(menuItems, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);

}

@PostMapping("/addMenuItem")
public ResponseEntity<MenuItem> createMenuItem(@RequestBody MenuItem menuItem) {
MenuItem createdMenuItem = menuItemService.createMenuItem(menuItem);
HttpHeaders headers = getCommonHeaders("Create a new menu item");
return createdMenuItem != null
? new ResponseEntity<>(createdMenuItem, headers, HttpStatus.CREATED)
: new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST);
}

@PutMapping("/updateMenuItem/{id}")
public ResponseEntity<MenuItem> updateMenuItem(@PathVariable String id, @RequestBody MenuItem menuItemDetails) {
MenuItem updatedMenuItem = menuItemService.updateMenuItem(id, menuItemDetails);
HttpHeaders headers = getCommonHeaders("Update a menu item");
return updatedMenuItem != null
? new ResponseEntity<>(updatedMenuItem, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@DeleteMapping("/deleteMenuItem/{id}")
public ResponseEntity<Void> deleteMenuItem(@PathVariable String id) {
boolean deleted = menuItemService.deleteMenuItem(id);
HttpHeaders headers = getCommonHeaders("Delete a menu item");
headers.add("deleted", String.valueOf(deleted));
return deleted
? new ResponseEntity<>(headers, HttpStatus.NO_CONTENT)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@GetMapping("/getMenuItem/{id}")
public ResponseEntity<MenuItem> getMenuItemById(@PathVariable String id) {
MenuItem menuItem = menuItemService.getMenuItemById(id);
HttpHeaders headers = getCommonHeaders("Get a menu item by Id");
return menuItem != null
? new ResponseEntity<>(menuItem, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}


private HttpHeaders getCommonHeaders(String description) {
HttpHeaders headers = new HttpHeaders();
headers.add("desc", description);
headers.add("content-type", "application/json");
headers.add("date", new Date().toString());
headers.add("server", "H2 Database");
headers.add("version", "1.0.0");
headers.add("customer-count", String.valueOf(menuItemService.countMenuItems()));
headers.add("object", "customers");
return headers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package dev.example.restaurantManager.controller;

import dev.example.restaurantManager.model.MenuRestaurant;
import dev.example.restaurantManager.service.MenuRestaurantService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RequestMapping("/api/v1/menu")
@RestController
public class MenuRestaurantController {

@Autowired
private MenuRestaurantService menuRestaurantService;


@GetMapping("/allMenus")
public ResponseEntity<List<MenuRestaurant>> getAllMenus( ) {
List<MenuRestaurant> menuRestaurants = menuRestaurantService.getAllMenus();
HttpHeaders headers = getCommonHeaders("Get all menus");

return menuRestaurants != null && !menuRestaurants.isEmpty()
? new ResponseEntity<>(menuRestaurants, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@PostMapping("/add")
public ResponseEntity<MenuRestaurant> createMenu(@RequestBody MenuRestaurant menuRestaurant) {
MenuRestaurant createdMenu = menuRestaurantService.createMenu(menuRestaurant);
HttpHeaders headers = getCommonHeaders("Create a new menu");

return createdMenu != null
? new ResponseEntity<>(createdMenu, headers, HttpStatus.CREATED)
: new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST);
}
@PutMapping("/update/{id}")
public ResponseEntity<MenuRestaurant> updateMenu(@PathVariable String id, @RequestBody MenuRestaurant menuRestaurantDetails) {
MenuRestaurant updatedMenu = menuRestaurantService.updateMenu(id, menuRestaurantDetails);
HttpHeaders headers = getCommonHeaders("Update a menu");

return updatedMenu != null
? new ResponseEntity<>(updatedMenu, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@DeleteMapping("/delete/{id}")
public ResponseEntity<Void> deleteMenu(@PathVariable String id) {
boolean deleted = menuRestaurantService.deleteMenu(id);
HttpHeaders headers = getCommonHeaders("Delete a menu");
headers.add("deleted", String.valueOf(deleted));

return deleted
? new ResponseEntity<>(headers, HttpStatus.NO_CONTENT)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@GetMapping("/get/{id}")
public ResponseEntity<MenuRestaurant> getMenuById(@PathVariable String id) {
MenuRestaurant menu = menuRestaurantService.getMenuById(id);
HttpHeaders headers = getCommonHeaders("Get a menu");

return menu != null
? new ResponseEntity<>(menu, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

private HttpHeaders getCommonHeaders(String description) {
HttpHeaders headers = new HttpHeaders();
headers.add("desc", description);
headers.add("content-type", "application/json");
headers.add("date", new Date().toString());
headers.add("server", "H2 Database");
headers.add("version", "1.0.0");
headers.add("menu-count", String.valueOf(menuRestaurantService.countMenus()));
headers.add("object", "customers");
return headers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package dev.example.restaurantManager.controller;


import dev.example.restaurantManager.model.OrderMenuQty;
import dev.example.restaurantManager.service.OrderMenuQtyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RequestMapping("/api/v1/orderMenuQty")
@RestController
public class OrderMenuQtyController {

@Autowired
private OrderMenuQtyService orderMenuQtyService;

@PostMapping
public ResponseEntity<OrderMenuQty> createOrderMenuQty(@RequestBody OrderMenuQty orderMenuQty) {
OrderMenuQty createdOrderMenuQty = orderMenuQtyService.createOrderMenuQty(orderMenuQty);
HttpHeaders headers = getCommonHeaders("Create a new OrderMenuQty");
return createdOrderMenuQty != null ? new ResponseEntity<>(createdOrderMenuQty, headers, HttpStatus.CREATED) : new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST);

}

@GetMapping("/{id}")
public ResponseEntity<OrderMenuQty> getOrderMenuQtyByID(@PathVariable String id) {
OrderMenuQty orderMenuQty = orderMenuQtyService.getOrderMenuQtyById(id);
HttpHeaders headers = getCommonHeaders("Get an OrderMenuQty by Id");

return orderMenuQty != null ? new ResponseEntity<>(orderMenuQty, headers, HttpStatus.OK) : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);

}

@GetMapping("allOrderMenuQty")
public ResponseEntity<List<OrderMenuQty>> getAllOrderMenuQty() {
List<OrderMenuQty> orderMenuQtyList = orderMenuQtyService.getAllOrderMenuQts();
HttpHeaders headers = getCommonHeaders("Get all OrderMenuQty entries");

return orderMenuQtyList != null && !orderMenuQtyList.isEmpty() ? new ResponseEntity<>(orderMenuQtyList, headers, HttpStatus.OK) : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@PutMapping("/{id}")
public ResponseEntity<OrderMenuQty> updatedOrderMenuQty(@PathVariable String id, @RequestBody OrderMenuQty orderMenuQtyDetails) {
OrderMenuQty updatedOrderMenuQty = orderMenuQtyService.updateOrderMenuQty(id, orderMenuQtyDetails);
HttpHeaders headers = getCommonHeaders("Updated a OrderMenuQty");

return updatedOrderMenuQty != null
? new ResponseEntity<>(updatedOrderMenuQty, headers, HttpStatus.OK) : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@DeleteMapping("/{id}")
public ResponseEntity<OrderMenuQty> deleteOrderMenuQty(@PathVariable String id) {
boolean deleted = orderMenuQtyService.deleteOrderMenuQty(id);
HttpHeaders headers = getCommonHeaders("delete an OrderMenuQty");

return deleted ? new ResponseEntity<>(headers, HttpStatus.NO_CONTENT) : new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);

}

private HttpHeaders getCommonHeaders(String description) {
HttpHeaders headers = new HttpHeaders();
headers.add("desc", description);
headers.add("content-type", "application/json");
headers.add("date", new Date().toString());
headers.add("server", "H2 Database");
headers.add("version", "1.0.0");
headers.add("orderMenuQty-count", String.valueOf(orderMenuQtyService.countOrderMenuQts()));
headers.add("object", "orderMenuQty");
return headers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.example.restaurantManager.model;

public enum CourseType {
STARTER,
MAIN,
DESSERT
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ public class EatInOrderRestaurant extends OrderRestaurant {


public EatInOrderRestaurant(String id, Date date, String waiter, int peopleQty,
double totalPayment, boolean paid, ArrayList<MenuRestaurant> menus,
double totalPayment, boolean paid, ArrayList<OrderMenuQty> orderMenuQty,
ArrayList<TableRestaurant> tableRestaurants) {
super(id, date, waiter, peopleQty, totalPayment, paid, menus);
super(id, date, waiter, peopleQty, totalPayment, paid, orderMenuQty);
this.tableRestaurants = tableRestaurants;
}

Expand Down
90 changes: 90 additions & 0 deletions src/main/java/dev/example/restaurantManager/model/MenuItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package dev.example.restaurantManager.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.GenericGenerator;

import java.awt.*;
import java.util.*;
import java.util.List;

@AllArgsConstructor
@Entity
@Data
public class MenuItem {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
private String id;

private String name;
private String description;
private boolean isSpicy;
private boolean hasGluten;
private boolean isAvailable;

@Enumerated(EnumType.STRING)
private CourseType courseType;

// @ManyToMany(mappedBy = "menuItems")
// private Set<Menu> menus = new HashSet<>();

// Many to many with
@JsonIgnore
@ManyToMany(mappedBy = "menuItems", fetch = FetchType.LAZY)
private List<MenuRestaurant> menuRestaurants;

// // Create add method
// public void addItem(MenuRestaurant menu){
// this.menuRestaurants.add(menu);
// menu.getMenuItems().add(this);
//
// }
// // Create remove method
// public void removeItem(MenuRestaurant menu) {
// this.menuRestaurants.remove(menu);
// menu.getMenuItems().remove(this);
// }

// Default constructor
public MenuItem() {
// this.id = UUID.randomUUID().toString();
}
// Getters and setters

@Override
public String toString() {
return "MenuRestaurant{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", description=" + description +
", spicy=" + isSpicy + '\'' +
", hasGluten=" + hasGluten +
", available=" + isAvailable +
", courseType=" + courseType +
//", menus=" + menuRestaurants +
'}';
}
// Updated equals() method to compare all fields except 'menuRestaurants'
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (!(object instanceof MenuItem)) return false;
MenuItem that = (MenuItem) object;
return isAvailable == that.isAvailable &&
hasGluten == that.hasGluten &&
isSpicy == that.isSpicy &&
Objects.equals(id, that.id) &&
Objects.equals(name, that.name) &&
Objects.equals(description, that.description) &&
Objects.equals(courseType, that.courseType);
}

@Override
public int hashCode() {
return Objects.hash(id, name, description, isSpicy, hasGluten,isAvailable, courseType);
}


}
Loading