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
Expand Up @@ -17,8 +17,8 @@ public static void main(String[] args) {
/*

@Bean
public ApplicationRunner dataLoader(CustomerDataLoader customerDataLoader) {
return args -> customerDataLoader.createFakeCustomers();
public ApplicationRunner dataLoader(ResourceDataLoader resourceDataLoader) {
return args -> resourceDataLoader.createFakeCustomers();
}
*/

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package dev.example.restaurantManager.controller;

import dev.example.restaurantManager.model.EatInOrderRestaurant;
import dev.example.restaurantManager.model.TableRestaurant;
import dev.example.restaurantManager.service.EatInOrderRestaurantService;
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/EatInOrderRestaurant")
@RestController
public class EatInOrderRestaurantController {

@Autowired
EatInOrderRestaurantService eatInOrderRestaurantService;

@GetMapping("/allEatInOrderRestaurant")
public ResponseEntity<List<EatInOrderRestaurant>> getAllTableRestaurants(){
List<EatInOrderRestaurant> lstEatInRestaurant = eatInOrderRestaurantService.getAllEatInOrderRestaurant();
HttpHeaders headers = this.getCommonHeaders("Eat in restaurant");
return lstEatInRestaurant != null
? new ResponseEntity<>(lstEatInRestaurant, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);

}

@PostMapping
public ResponseEntity<EatInOrderRestaurant> saveTableRestaurant(@RequestBody
EatInOrderRestaurant eatInOrderRestaurant){
HttpHeaders headers = this.getCommonHeaders("Eat in restaurant");
EatInOrderRestaurant newEatInOrderRestaurant = eatInOrderRestaurantService.createEatInOrderRestaurant(eatInOrderRestaurant);
return newEatInOrderRestaurant != null
? new ResponseEntity<>(newEatInOrderRestaurant, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@PutMapping("/{id}")
public ResponseEntity<EatInOrderRestaurant> updateTableRestaurant(@PathVariable String id, @RequestBody EatInOrderRestaurant eatInOrderRestaurantDetails) {
EatInOrderRestaurant updatedeatInOrderRestaurant = eatInOrderRestaurantService.updateEatInOrderRestaurant(id, eatInOrderRestaurantDetails);
HttpHeaders headers = getCommonHeaders("Update a table restaurant");

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

@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteTableRestaurant(@PathVariable String id) {
boolean deleted = eatInOrderRestaurantService.deleteEatInOrderRestaurant(id);
HttpHeaders headers = getCommonHeaders("Delete a eat in order restaurant");
headers.add("deleted", String.valueOf(deleted));

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

@GetMapping("/{id}")
public ResponseEntity<EatInOrderRestaurant> getEatInOrderRestaurantById(@PathVariable String id) {
EatInOrderRestaurant eatInOrderRestaurant = eatInOrderRestaurantService.getEatInOrderRestaurantById(id);
HttpHeaders headers = getCommonHeaders("Get a eat in order restaurant by Id");

return eatInOrderRestaurant != null
? new ResponseEntity<>(eatInOrderRestaurant, 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");
return headers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package dev.example.restaurantManager.controller;

import dev.example.restaurantManager.model.*;
import dev.example.restaurantManager.service.BookingService;
import dev.example.restaurantManager.service.EatInOrderRestaurantService;
import dev.example.restaurantManager.service.TableRestaurantService;
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/tableRestaurant")
@RestController
public class TableRestaurantController {

@Autowired
TableRestaurantService tableRestaurantService;

@GetMapping("/allTableRestaurants")
public ResponseEntity<List<TableRestaurant>> getAllTableRestaurants(){
HttpHeaders headers = this.getCommonHeaders("Table Restaurant");
List<TableRestaurant> lstTableRestaurant = tableRestaurantService.getAllTableRestaurant();
return lstTableRestaurant != null
? new ResponseEntity<>(lstTableRestaurant, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);

}

@PostMapping
public ResponseEntity<TableRestaurant> saveTableRestaurant(@RequestBody
TableRestaurant tableRestaurant){

HttpHeaders headers = this.getCommonHeaders("Table Restaurant");

TableRestaurant newTableRestaurant = tableRestaurantService.createTableRestaurant(tableRestaurant);
return newTableRestaurant != null
? new ResponseEntity<>(newTableRestaurant, headers, HttpStatus.OK)
: new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}

@PutMapping("/{id}")
public ResponseEntity<TableRestaurant> updateTableRestaurant(@PathVariable String id, @RequestBody TableRestaurant tableRestaurantDetails) {
TableRestaurant updatedTableRestaurant = tableRestaurantService.updateTableRestaurant(id, tableRestaurantDetails);
HttpHeaders headers = getCommonHeaders("Update a table restaurant");

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

@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteTableRestaurant(@PathVariable String id) {
boolean deleted = tableRestaurantService.deleteTableRestaurant(id);
HttpHeaders headers = getCommonHeaders("Delete a table restaurant");
headers.add("deleted", String.valueOf(deleted));

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

@GetMapping("/{id}")
public ResponseEntity<TableRestaurant> getTableRestaurantById(@PathVariable String id) {
TableRestaurant tableRestaurant = tableRestaurantService.getTableRestaurantById(id);
HttpHeaders headers = getCommonHeaders("Get a table restaurant by Id");

return tableRestaurant != null
? new ResponseEntity<>(tableRestaurant, 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");
return headers;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package dev.example.restaurantManager.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -9,25 +14,29 @@
import java.util.stream.Collectors;

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
public class EatInOrderRestaurant extends OrderRestaurant {

private ArrayList<TableRestaurant> tableRestaurants = new ArrayList<>();
//private TableRestaurant orderedTableRestaurant;

@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TABLE_RESTAURANT_FK_ID")
private TableRestaurant orderedTableRestaurant;

public EatInOrderRestaurant(String id, Date date, String waiter, int peopleQty,
double totalPayment, boolean paid, ArrayList<Menu> menus,
ArrayList<TableRestaurant> tableRestaurants) {
double totalPayment, boolean paid, ArrayList<Menu> menus
,TableRestaurant tableRestaurant) {

super(id, date, waiter, peopleQty, totalPayment, paid, menus);
this.tableRestaurants = tableRestaurants;
this.orderedTableRestaurant = tableRestaurant;
}

@Override
public String toString() {
return super.toString() + "\n" +
"Type: Eat In\n" +
"Tables: " + tableRestaurants.stream().map(TableRestaurant::getName).collect(Collectors.joining(", "));
"Table Id: " + this.orderedTableRestaurant;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class Menu implements Serializable {
// Add a serialVersionUID
private static final long serialVersionUID = 1L;

private Integer Id;
private String name;
private Double price;
private String content;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor
Expand All @@ -24,7 +25,10 @@ public class TableRestaurant {
private boolean busy;

@OneToMany(mappedBy = "tableRestaurantMapped", cascade = CascadeType.ALL)
private ArrayList<Booking> bookings ;
private List<Booking> bookings = new ArrayList<>();

@OneToMany(mappedBy = "orderedTableRestaurant", cascade = CascadeType.ALL)
private List<EatInOrderRestaurant> eatInOrderRestaurant = new ArrayList<>();


// we must create a VERY CONCRETE constructor to RUN the OLD tests
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package dev.example.restaurantManager.repository;

import dev.example.restaurantManager.model.EatInOrderRestaurant;
import org.springframework.data.jpa.repository.JpaRepository;

public interface EatInOrderRepository extends JpaRepository<EatInOrderRestaurant,String> {
// EatInOrderRestaurant findByOrderedTableRestaurant(String orderedTableRestaurant);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@
import org.springframework.data.jpa.repository.JpaRepository;

public interface TableRestaurantRepository extends JpaRepository<TableRestaurant, String> {

TableRestaurant findByName(String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package dev.example.restaurantManager.service;

import dev.example.restaurantManager.model.Booking;

import java.util.List;

public interface BookingService {
List<Booking> getAllBookings();
Booking createBooking(Booking booking);
Booking getBookingById(String id);
Booking updateBooking(String id, Booking bookingDetails);
boolean deleteBooking(String id);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package dev.example.restaurantManager.service;

import dev.example.restaurantManager.model.Booking;

import java.util.List;

public class BookingServiceImpl implements BookingService{
@Override
public List<Booking> getAllBookings() {
return List.of();
}

@Override
public Booking createBooking(Booking booking) {
return null;
}

@Override
public Booking getBookingById(String id) {
return null;
}

@Override
public Booking updateBooking(String id, Booking bookingDetails) {
return null;
}

@Override
public boolean deleteBooking(String id) {
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.example.restaurantManager.service;

import dev.example.restaurantManager.model.EatInOrderRestaurant;
import dev.example.restaurantManager.model.Menu;
import dev.example.restaurantManager.model.TableRestaurant;

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

public interface EatInOrderRestaurantService {
List<EatInOrderRestaurant> getAllEatInOrderRestaurant();
EatInOrderRestaurant createEatInOrderRestaurant(EatInOrderRestaurant eatInOrderRestaurant);
EatInOrderRestaurant getEatInOrderRestaurantById(String id);
EatInOrderRestaurant updateEatInOrderRestaurant(String id, EatInOrderRestaurant eatInOrderRestaurant);
boolean deleteEatInOrderRestaurant(String id);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package dev.example.restaurantManager.service;

import dev.example.restaurantManager.model.EatInOrderRestaurant;
import dev.example.restaurantManager.repository.EatInOrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;

@Service
public class EatInOrderRestaurantServiceImpl implements EatInOrderRestaurantService {

@Autowired
EatInOrderRepository eatInOrderRepository;

@Override
public List<EatInOrderRestaurant> getAllEatInOrderRestaurant() {
return eatInOrderRepository.findAll();
}

@Override
public EatInOrderRestaurant createEatInOrderRestaurant(EatInOrderRestaurant eatInOrderRestaurant) {
return eatInOrderRepository.save(eatInOrderRestaurant);
}

@Override
public EatInOrderRestaurant getEatInOrderRestaurantById(String id) {
Optional<EatInOrderRestaurant> eatInOrderRestaurant = eatInOrderRepository.findById(id);
return eatInOrderRestaurant.orElse(null);
}

@Override
public EatInOrderRestaurant updateEatInOrderRestaurant(String id, EatInOrderRestaurant eatInOrderRestaurant) {
EatInOrderRestaurant updateEatInOrderRestaurant = eatInOrderRepository.findById(id).orElse(null);

if(updateEatInOrderRestaurant != null){
updateEatInOrderRestaurant.setId(id);
updateEatInOrderRestaurant.setDate(eatInOrderRestaurant.getDate());
updateEatInOrderRestaurant.setPaid(eatInOrderRestaurant.isPaid());
updateEatInOrderRestaurant.setMenus(eatInOrderRestaurant.getMenus());
updateEatInOrderRestaurant.setPeopleQty(eatInOrderRestaurant.getPeopleQty());
updateEatInOrderRestaurant.setWaiter(eatInOrderRestaurant.getWaiter());
updateEatInOrderRestaurant.setTotalPayment(eatInOrderRestaurant.getTotalPayment());
updateEatInOrderRestaurant.setOrderedTableRestaurant(eatInOrderRestaurant.getOrderedTableRestaurant());
return eatInOrderRepository.save(updateEatInOrderRestaurant);
}

return null;
}

@Override
public boolean deleteEatInOrderRestaurant(String id) {
eatInOrderRepository.deleteById(id);
return eatInOrderRepository.findById(id).isPresent();
}
}
Loading