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
36 changes: 23 additions & 13 deletions src/main/java/com/groupsix/mapFood/MapFoodApiApp.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
package com.groupsix.mapFood;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MapFoodApiApp {

public static void main (String[] args) {
SpringApplication.run(MapFoodApiApp.class, args);
}

}
package com.groupsix.mapFood;

import java.util.TimeZone;

import javax.annotation.PostConstruct;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MapFoodApiApp {

public static void main (String[] args) {
SpringApplication.run(MapFoodApiApp.class, args);
}

@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("America/Sao_Paulo"));
}


}
89 changes: 53 additions & 36 deletions src/main/java/com/groupsix/mapFood/controller/OrderController.java
Original file line number Diff line number Diff line change
@@ -1,36 +1,53 @@
package com.groupsix.mapFood.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import com.groupsix.mapFood.pojo.Order;
import com.groupsix.mapFood.service.OrderService;

import javax.validation.Valid;

@RestController
@RequestMapping("/orders")
public class OrderController {

@Autowired
private OrderService orderService;

@PostMapping
public ResponseEntity<?> createOrder(final @RequestBody @Valid Order order, BindingResult bindingResult) {

if (bindingResult.hasErrors()) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(bindingResult.getFieldErrors());
}
try {
return ResponseEntity.status(HttpStatus.CREATED).body(orderService.createOrder(order));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(e.getMessage());
}
}
}
package com.groupsix.mapFood.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import com.groupsix.mapFood.pojo.Order;
import com.groupsix.mapFood.service.OrderService;

import javax.validation.Valid;

@RestController
@RequestMapping("/orders")
public class OrderController {

@Autowired
private OrderService orderService;

@PostMapping
public ResponseEntity<?> createOrder(final @RequestBody @Valid Order order, BindingResult bindingResult) {

if (bindingResult.hasErrors()) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(bindingResult.getFieldErrors());
}
try {
return ResponseEntity.status(HttpStatus.CREATED).body(orderService.createOrder(order));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(e.getMessage());
}
}

@GetMapping("/user/{id}")
public ResponseEntity<?> listUserOrders(@PathVariable Integer id){
if(orderService.listOrder(id).isEmpty()){
return ResponseEntity.ok("Faça seu primeiro pedido!");
}else{
return ResponseEntity.ok(orderService.listOrder(id));
}

}

@GetMapping("/restaurant/{id}")
public ResponseEntity<?> listRestaurantOrders(@PathVariable Integer id){
if(orderService.listRestaurantOrder(id).isEmpty()){
return ResponseEntity.ok("Você ainda não tem pedidos :(");
}else{
return ResponseEntity.ok(orderService.listRestaurantOrder(id));
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.groupsix.mapFood.controller;


import com.groupsix.mapFood.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/report")
public class ReportController {

@Autowired
private OrderService orderService;

@GetMapping("/restaurant/{id}")
public ResponseEntity<?> listInformations(@PathVariable Integer id){
if(orderService.informationsRestaurant(id).isEmpty()){
return ResponseEntity.ok("Você ainda não tem pedidos :(");
}else{
return ResponseEntity.ok(orderService.informationsRestaurant(id));
}

}

}
193 changes: 92 additions & 101 deletions src/main/java/com/groupsix/mapFood/entity/OrderEntity.java
Original file line number Diff line number Diff line change
@@ -1,101 +1,92 @@
package com.groupsix.mapFood.entity;

import java.sql.Timestamp;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity(name = "`order`")
public class OrderEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@ManyToOne
@JoinColumn(name = "customer_id", nullable = false)
private CustomerEntity customer;

@ManyToOne
@JoinColumn(name = "restaurant_id", nullable = false)
private RestaurantEntity restaurant;

@Column(name = "estimated_time_to_delivery")
private Timestamp estimatedTimeToDelivery;

@Column
private Integer total;

@OneToMany(mappedBy = "order", targetEntity = OrderItemEntity.class, cascade = CascadeType.ALL)
private List<OrderItemEntity> orderItems;

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "order")
private OrderDeliveryEntity orderDelivery;

public OrderDeliveryEntity getOrderDelivery() {
return orderDelivery;
}

public void setOrderDelivery(OrderDeliveryEntity orderDelivery) {
this.orderDelivery = orderDelivery;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public CustomerEntity getCustomer() {
return customer;
}

public void setCustomer(CustomerEntity customer) {
this.customer = customer;
}

public RestaurantEntity getRestaurant() {
return restaurant;
}

public void setRestaurant(RestaurantEntity restaurant) {
this.restaurant = restaurant;
}

public Timestamp getEstimatedTimeToDelivery() {
return estimatedTimeToDelivery;
}

public void setEstimatedTimeToDelivery(Timestamp estimatedTimeToDelivery) {
this.estimatedTimeToDelivery = estimatedTimeToDelivery;
}

public Integer getTotal() {
return total;
}

public void setTotal(Integer total) {
this.total = total;
}

public List<OrderItemEntity> getOrderItems() {
return orderItems;
}

public void setOrderItems(List<OrderItemEntity> orderItems) {
this.orderItems = orderItems;
}

}
package com.groupsix.mapFood.entity;

import java.sql.Timestamp;
import java.util.List;

import javax.persistence.*;

@Table(name= "orders")
@Entity(name = "orders")
public class OrderEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@ManyToOne
@JoinColumn(name = "customer_id", nullable = false)
private CustomerEntity customer;

@ManyToOne
@JoinColumn(name = "restaurant_id", nullable = false)
private RestaurantEntity restaurant;

@Column(name = "estimated_time_to_delivery")
private Timestamp estimatedTimeToDelivery;

@Column
private Integer total;

@OneToMany(mappedBy = "order", targetEntity = OrderItemEntity.class, cascade = CascadeType.ALL)
private List<OrderItemEntity> orderItems;

@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "order")
private OrderDeliveryEntity orderDelivery;

public OrderDeliveryEntity getOrderDelivery() {
return orderDelivery;
}

public void setOrderDelivery(OrderDeliveryEntity orderDelivery) {
this.orderDelivery = orderDelivery;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public CustomerEntity getCustomer() {
return customer;
}

public void setCustomer(CustomerEntity customer) {
this.customer = customer;
}

public RestaurantEntity getRestaurant() {
return restaurant;
}

public void setRestaurant(RestaurantEntity restaurant) {
this.restaurant = restaurant;
}

public Timestamp getEstimatedTimeToDelivery() {
return estimatedTimeToDelivery;
}

public void setEstimatedTimeToDelivery(Timestamp estimatedTimeToDelivery) {
this.estimatedTimeToDelivery = estimatedTimeToDelivery;
}

public Integer getTotal() {
return total;
}

public void setTotal(Integer total) {
this.total = total;
}

public List<OrderItemEntity> getOrderItems() {
return orderItems;
}

public void setOrderItems(List<OrderItemEntity> orderItems) {
this.orderItems = orderItems;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

public class CustomerTooFarException extends Exception {

public CustomerTooFarException() {
private static final long serialVersionUID = 1L;

public CustomerTooFarException() {
super("The customer is too far from the restaurant.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

public class DiferentRestaurantException extends Exception {

public DiferentRestaurantException() {
private static final long serialVersionUID = 1L;

public DiferentRestaurantException() {
super("Not all items in the order are from the same restaurant.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

public class ItemsPriceException extends Exception {

public ItemsPriceException() {
private static final long serialVersionUID = 1L;

public ItemsPriceException() {
super("Quantity of items and individual price does not match item total.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

public class TotalPriceException extends Exception {

public TotalPriceException() {
private static final long serialVersionUID = 1L;

public TotalPriceException() {
super("Total sum of items prices does not match order total price.");
}
}
Loading