Commit daa0dcbb by Bright Sukumpanumet

Fix table name (Order > Checkout)

Change item status to SOLD when checkout
parent e925419d
...@@ -8,25 +8,25 @@ import java.util.Set; ...@@ -8,25 +8,25 @@ import java.util.Set;
* Created by Bright on 2018-11-27. * Created by Bright on 2018-11-27.
*/ */
@Entity @Entity
public class Order public class Checkout
{ {
@Id @Id
private Long orderId; private Long checkoutId;
@ManyToMany(cascade = {CascadeType.PERSIST}) @ManyToMany(cascade = {CascadeType.PERSIST})
@JoinTable(name = "order_item", @JoinTable(name = "checkout_item",
joinColumns = @JoinColumn(name = "order_id", referencedColumnName = "orderId"), joinColumns = @JoinColumn(name = "checkout_id", referencedColumnName = "checkoutId"),
inverseJoinColumns = @JoinColumn(name = "item_id", referencedColumnName = "itemId")) inverseJoinColumns = @JoinColumn(name = "item_id", referencedColumnName = "itemId"))
private Set<Item> items = new HashSet<>(); private Set<Item> items = new HashSet<>();
public Order() public Checkout()
{} {}
public Order(Long orderId) public Checkout(Long checkoutId)
{ {
this.orderId = orderId; this.checkoutId = checkoutId;
} }
public Set<Item> getItems() public Set<Item> getItems()
......
...@@ -45,6 +45,7 @@ public class ShoppingCart ...@@ -45,6 +45,7 @@ public class ShoppingCart
{ {
for (Item item : items) for (Item item : items)
{ {
this.items.remove(item); this.items.remove(item);
item.getShopping_carts().remove(this); item.getShopping_carts().remove(this);
} }
......
...@@ -5,5 +5,5 @@ package edu.uchicago.mpcs.topics.auction; ...@@ -5,5 +5,5 @@ package edu.uchicago.mpcs.topics.auction;
*/ */
public enum Status public enum Status
{ {
ACTIVE, INACTIVE, FAILED, INAPPROPRIATE, COUNTERFEIT, SUSPENDED, DELETED, HASBID ACTIVE, INACTIVE, FAILED, INAPPROPRIATE, COUNTERFEIT, SUSPENDED, DELETED, HASBID, SOLD
} }
package edu.uchicago.mpcs.topics.controller; package edu.uchicago.mpcs.topics.controller;
import edu.uchicago.mpcs.topics.auction.Item; import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Order; import edu.uchicago.mpcs.topics.auction.Checkout;
import edu.uchicago.mpcs.topics.db.OrderRepository; import edu.uchicago.mpcs.topics.db.CheckoutRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository; import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.service.OrderService; import edu.uchicago.mpcs.topics.service.CheckoutService;
import edu.uchicago.mpcs.topics.service.ShoppingCartService; import edu.uchicago.mpcs.topics.service.ShoppingCartService;
import edu.uchicago.mpcs.topics.auction.ShoppingCart; import edu.uchicago.mpcs.topics.auction.ShoppingCart;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -19,8 +19,8 @@ public class ShoppingCartController ...@@ -19,8 +19,8 @@ public class ShoppingCartController
{ {
private ShoppingCartService shoppingCartService; private ShoppingCartService shoppingCartService;
private ShoppingCartRepository shoppingCartRepository; private ShoppingCartRepository shoppingCartRepository;
private OrderService orderService; private CheckoutService checkoutService;
private OrderRepository orderRepository; private CheckoutRepository checkoutRepository;
public ShoppingCartController(ShoppingCartService shoppingCartService, ShoppingCartRepository shoppingCartRepository) public ShoppingCartController(ShoppingCartService shoppingCartService, ShoppingCartRepository shoppingCartRepository)
{ {
...@@ -49,10 +49,10 @@ public class ShoppingCartController ...@@ -49,10 +49,10 @@ public class ShoppingCartController
} }
@PostMapping ("/{id}/checkout") @PostMapping ("/{id}/checkout")
public Order checkout(@PathVariable Long id, @RequestBody Order order) public Checkout checkout(@PathVariable Long id, @RequestBody Checkout checkout)
{ {
// save order (checkout) to db // save checkout (checkout) to db
shoppingCartService.checkout(shoppingCartRepository.findById(id).orElse(null)); shoppingCartService.checkout(shoppingCartRepository.findById(id).orElse(null));
return orderService.checkout(order); return checkoutService.checkout(checkout);
} }
} }
package edu.uchicago.mpcs.topics.db; package edu.uchicago.mpcs.topics.db;
import edu.uchicago.mpcs.topics.auction.Order; import edu.uchicago.mpcs.topics.auction.Checkout;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
/** /**
* Created by Bright on 2018-11-29. * Created by Bright on 2018-11-29.
*/ */
public interface OrderRepository extends CrudRepository<Order, Long> public interface CheckoutRepository extends CrudRepository<Checkout, Long>
{ {
} }
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Item; import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Order; import edu.uchicago.mpcs.topics.auction.Checkout;
import edu.uchicago.mpcs.topics.auction.Status; import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository; import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.db.OrderRepository; import edu.uchicago.mpcs.topics.db.CheckoutRepository;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -12,26 +12,26 @@ import org.springframework.stereotype.Service; ...@@ -12,26 +12,26 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class OrderService public class CheckoutService
{ {
private OrderRepository orderRepository; private CheckoutRepository checkoutRepository;
private ItemRepository itemRepository; private ItemRepository itemRepository;
public OrderService(OrderRepository orderRepository, ItemRepository itemRepository) public CheckoutService(CheckoutRepository checkoutRepository, ItemRepository itemRepository)
{ {
this.orderRepository = orderRepository; this.checkoutRepository = checkoutRepository;
} }
//create an order //create an checkout
public Order checkout(Order order) public Checkout checkout(Checkout checkout)
{ {
//set item status as DELETED //set item status as DELETED
for (Item item : order.getItems()) for (Item item : checkout.getItems())
{ {
item.setStatus(Status.DELETED); item.setStatus(Status.DELETED);
itemRepository.save(item); itemRepository.save(item);
} }
return orderRepository.save(order); return checkoutRepository.save(checkout);
} }
} }
...@@ -30,6 +30,8 @@ public class ItemService ...@@ -30,6 +30,8 @@ public class ItemService
public Item addItem(Item item) public Item addItem(Item item)
{ {
//start timer
return itemRepository.save(item); return itemRepository.save(item);
} }
......
package edu.uchicago.mpcs.topics.service; package edu.uchicago.mpcs.topics.service;
import edu.uchicago.mpcs.topics.auction.Item; import edu.uchicago.mpcs.topics.auction.Item;
import edu.uchicago.mpcs.topics.auction.Status;
import edu.uchicago.mpcs.topics.db.ItemRepository; import edu.uchicago.mpcs.topics.db.ItemRepository;
import edu.uchicago.mpcs.topics.db.ShoppingCartRepository; import edu.uchicago.mpcs.topics.db.ShoppingCartRepository;
import edu.uchicago.mpcs.topics.auction.ShoppingCart; import edu.uchicago.mpcs.topics.auction.ShoppingCart;
...@@ -38,10 +39,17 @@ public class ShoppingCartService ...@@ -38,10 +39,17 @@ public class ShoppingCartService
return shoppingCartRepository.save(shoppingCart); return shoppingCartRepository.save(shoppingCart);
} }
public ShoppingCart checkout(ShoppingCart shoppingCart) public void checkout(ShoppingCart shoppingCart)
{ {
//for each item in order delete item from shopping cart //for each item in checkout, delete item from shopping cart
return shoppingCart.removeAllItems(); for (Item item : shoppingCart.getItems())
{
item.setStatus(Status.SOLD);
itemRepository.save(item);
}
//for each item in checkout, change Status to SOLD
shoppingCart.removeAllItems();
} }
} }
\ No newline at end of file
...@@ -306,3 +306,9 @@ create table order (order_id bigint not null, primary key (order_id)) [42001-197 ...@@ -306,3 +306,9 @@ create table order (order_id bigint not null, primary key (order_id)) [42001-197
2018-11-29 22:31:50 jdbc[3]: exception 2018-11-29 22:31:50 jdbc[3]: exception
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "ALTER TABLE ORDER_ITEM ADD CONSTRAINT FKT6WV8M7ESHKSP5KP8W4B2D1DM FOREIGN KEY (ORDER_ID) REFERENCES ORDER[*] "; expected "identifier"; SQL statement: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "ALTER TABLE ORDER_ITEM ADD CONSTRAINT FKT6WV8M7ESHKSP5KP8W4B2D1DM FOREIGN KEY (ORDER_ID) REFERENCES ORDER[*] "; expected "identifier"; SQL statement:
alter table order_item add constraint FKt6wv8m7eshksp5kp8w4b2d1dm foreign key (order_id) references order [42001-197] alter table order_item add constraint FKt6wv8m7eshksp5kp8w4b2d1dm foreign key (order_id) references order [42001-197]
2018-11-29 23:25:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE ORDER[*] (ORDER_ID BIGINT NOT NULL, PRIMARY KEY (ORDER_ID)) "; expected "identifier"; SQL statement:
create table order (order_id bigint not null, primary key (order_id)) [42001-197]
2018-11-29 23:25:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "ALTER TABLE ORDER_ITEM ADD CONSTRAINT FKT6WV8M7ESHKSP5KP8W4B2D1DM FOREIGN KEY (ORDER_ID) REFERENCES ORDER[*] "; expected "identifier"; SQL statement:
alter table order_item add constraint FKt6wv8m7eshksp5kp8w4b2d1dm foreign key (order_id) references order [42001-197]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment