// Path: src/main/java/com/efoodstore/dao/CustomerOrderDao.java
// public interface CustomerOrderDao {
// 
//     void addCustomerOrder(CustomerOrder customerOrder);
// 
// }
// 
// Path: src/main/java/com/efoodstore/model/Cart.java
// @Entity
// public class Cart implements Serializable {
// 
//     private static final long serialVersionUID = 3940548625296145582L;
// 
//     @Id
//     @GeneratedValue
//     private int cartId;
// 
//     @OneToMany(mappedBy = "cart", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
//     private List<CartItem> cartItems;
// 
//     @OneToOne
//     @JoinColumn(name = "customerId")
//     @JsonIgnore
//     private Customer customer;
// 
//     private double grandTotal;
// 
//     public int getCartId() {
//         return cartId;
//     }
// 
//     public void setCartId(int cartId) {
//         this.cartId = cartId;
//     }
// 
//     public List<CartItem> getCartItems() {
//         return cartItems;
//     }
// 
//     public void setCartItems(List<CartItem> cartItems) {
//         this.cartItems = cartItems;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public void setCustomer(Customer customer) {
//         this.customer = customer;
//     }
// 
//     public double getGrandTotal() {
//         return grandTotal;
//     }
// 
//     public void setGrandTotal(double grandTotal) {
//         this.grandTotal = grandTotal;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/model/CartItem.java
// @Entity
// public class CartItem implements Serializable{
// 
//     private static final long serialVersionUID = -904360230041854157L;
// 
//     @Id
//     @GeneratedValue
//     private int cartItemId;
// 
//     @ManyToOne
//     @JoinColumn(name = "cartId")
//     @JsonIgnore
//     private Cart cart;
// 
//     @ManyToOne
//     @JoinColumn(name = "productId")
//     private Product product;
// 
//     private int quantity;
//     private double totalPrice;
// 
//     public int getCartItemId() {
//         return cartItemId;
//     }
// 
//     public void setCartItemId(int cartItemId) {
//         this.cartItemId = cartItemId;
//     }
// 
//     public Cart getCart() {
//         return cart;
//     }
// 
//     public void setCart(Cart cart) {
//         this.cart = cart;
//     }
// 
//     public Product getProduct() {
//         return product;
//     }
// 
//     public void setProduct(Product product) {
//         this.product = product;
//     }
// 
//     public int getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(int quantity) {
//         this.quantity = quantity;
//     }
// 
//     public double getTotalPrice() {
//         return totalPrice;
//     }
// 
//     public void setTotalPrice(double totalPrice) {
//         this.totalPrice = totalPrice;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/model/CustomerOrder.java
// @Entity
// public class CustomerOrder implements Serializable{
// 
//     private static final long serialVersionUID = 2983360377227484514L;
// 
//     @Id
//     @GeneratedValue
//     private int customerOrderId;
// 
//     @OneToOne
//     @JoinColumn(name = "cartId")
//     private Cart cart;
// 
//     @OneToOne
//     @JoinColumn(name = "customerId")
//     private Customer customer;
// 
//     @OneToOne
//     @JoinColumn(name = "billingAddressId")
//     private BillingAddress billingAddress;
// 
//     @OneToOne
//     @JoinColumn(name="shippingAddressId")
//     private ShippingAddress shippingAddress;
// 
//     public int getCustomerOrderId() {
//         return customerOrderId;
//     }
// 
//     public void setCustomerOrderId(int customerOrderId) {
//         this.customerOrderId = customerOrderId;
//     }
// 
//     public Cart getCart() {
//         return cart;
//     }
// 
//     public void setCart(Cart cart) {
//         this.cart = cart;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public void setCustomer(Customer customer) {
//         this.customer = customer;
//     }
// 
//     public BillingAddress getBillingAddress() {
//         return billingAddress;
//     }
// 
//     public void setBillingAddress(BillingAddress billingAddress) {
//         this.billingAddress = billingAddress;
//     }
// 
//     public ShippingAddress getShippingAddress() {
//         return shippingAddress;
//     }
// 
//     public void setShippingAddress(ShippingAddress shippingAddress) {
//         this.shippingAddress = shippingAddress;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/service/CartService.java
// public interface CartService {
// 
//     Cart getCartById (int cartId);
// 
//     void update(Cart cart);
// }
// 
// Path: src/main/java/com/efoodstore/service/CustomerOrderService.java
// public interface CustomerOrderService {
// 
//     void addCustomerOrder(CustomerOrder customerOrder);
// 
//     double getCustomerOrderGrandTotal(int cartId);
// }


import com.efoodstore.dao.CustomerOrderDao;
import com.efoodstore.model.Cart;
import com.efoodstore.model.CartItem;
import com.efoodstore.model.CustomerOrder;
import com.efoodstore.service.CartService;
import com.efoodstore.service.CustomerOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
package com.efoodstore.service.impl;




@Service
public class CustomerOrderServiceImpl implements CustomerOrderService {

    @Autowired
    private CustomerOrderDao customerOrderDao;

    @Autowired
    private CartService cartService;

    public void addCustomerOrder(CustomerOrder customerOrder) {
        customerOrderDao.addCustomerOrder(customerOrder);
    }

    public double getCustomerOrderGrandTotal(int cartId) {
        double grandTotal=0;
// Path: src/main/java/com/efoodstore/dao/CustomerOrderDao.java
// public interface CustomerOrderDao {
// 
//     void addCustomerOrder(CustomerOrder customerOrder);
// 
// }
// 
// Path: src/main/java/com/efoodstore/model/Cart.java
// @Entity
// public class Cart implements Serializable {
// 
//     private static final long serialVersionUID = 3940548625296145582L;
// 
//     @Id
//     @GeneratedValue
//     private int cartId;
// 
//     @OneToMany(mappedBy = "cart", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
//     private List<CartItem> cartItems;
// 
//     @OneToOne
//     @JoinColumn(name = "customerId")
//     @JsonIgnore
//     private Customer customer;
// 
//     private double grandTotal;
// 
//     public int getCartId() {
//         return cartId;
//     }
// 
//     public void setCartId(int cartId) {
//         this.cartId = cartId;
//     }
// 
//     public List<CartItem> getCartItems() {
//         return cartItems;
//     }
// 
//     public void setCartItems(List<CartItem> cartItems) {
//         this.cartItems = cartItems;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public void setCustomer(Customer customer) {
//         this.customer = customer;
//     }
// 
//     public double getGrandTotal() {
//         return grandTotal;
//     }
// 
//     public void setGrandTotal(double grandTotal) {
//         this.grandTotal = grandTotal;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/model/CartItem.java
// @Entity
// public class CartItem implements Serializable{
// 
//     private static final long serialVersionUID = -904360230041854157L;
// 
//     @Id
//     @GeneratedValue
//     private int cartItemId;
// 
//     @ManyToOne
//     @JoinColumn(name = "cartId")
//     @JsonIgnore
//     private Cart cart;
// 
//     @ManyToOne
//     @JoinColumn(name = "productId")
//     private Product product;
// 
//     private int quantity;
//     private double totalPrice;
// 
//     public int getCartItemId() {
//         return cartItemId;
//     }
// 
//     public void setCartItemId(int cartItemId) {
//         this.cartItemId = cartItemId;
//     }
// 
//     public Cart getCart() {
//         return cart;
//     }
// 
//     public void setCart(Cart cart) {
//         this.cart = cart;
//     }
// 
//     public Product getProduct() {
//         return product;
//     }
// 
//     public void setProduct(Product product) {
//         this.product = product;
//     }
// 
//     public int getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(int quantity) {
//         this.quantity = quantity;
//     }
// 
//     public double getTotalPrice() {
//         return totalPrice;
//     }
// 
//     public void setTotalPrice(double totalPrice) {
//         this.totalPrice = totalPrice;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/model/CustomerOrder.java
// @Entity
// public class CustomerOrder implements Serializable{
// 
//     private static final long serialVersionUID = 2983360377227484514L;
// 
//     @Id
//     @GeneratedValue
//     private int customerOrderId;
// 
//     @OneToOne
//     @JoinColumn(name = "cartId")
//     private Cart cart;
// 
//     @OneToOne
//     @JoinColumn(name = "customerId")
//     private Customer customer;
// 
//     @OneToOne
//     @JoinColumn(name = "billingAddressId")
//     private BillingAddress billingAddress;
// 
//     @OneToOne
//     @JoinColumn(name="shippingAddressId")
//     private ShippingAddress shippingAddress;
// 
//     public int getCustomerOrderId() {
//         return customerOrderId;
//     }
// 
//     public void setCustomerOrderId(int customerOrderId) {
//         this.customerOrderId = customerOrderId;
//     }
// 
//     public Cart getCart() {
//         return cart;
//     }
// 
//     public void setCart(Cart cart) {
//         this.cart = cart;
//     }
// 
//     public Customer getCustomer() {
//         return customer;
//     }
// 
//     public void setCustomer(Customer customer) {
//         this.customer = customer;
//     }
// 
//     public BillingAddress getBillingAddress() {
//         return billingAddress;
//     }
// 
//     public void setBillingAddress(BillingAddress billingAddress) {
//         this.billingAddress = billingAddress;
//     }
// 
//     public ShippingAddress getShippingAddress() {
//         return shippingAddress;
//     }
// 
//     public void setShippingAddress(ShippingAddress shippingAddress) {
//         this.shippingAddress = shippingAddress;
//     }
// }
// 
// Path: src/main/java/com/efoodstore/service/CartService.java
// public interface CartService {
// 
//     Cart getCartById (int cartId);
// 
//     void update(Cart cart);
// }
// 
// Path: src/main/java/com/efoodstore/service/CustomerOrderService.java
// public interface CustomerOrderService {
// 
//     void addCustomerOrder(CustomerOrder customerOrder);
// 
//     double getCustomerOrderGrandTotal(int cartId);
// }


// Path: src/main/java/com/efoodstore/service/impl/CustomerOrderServiceImpl.java
import com.efoodstore.dao.CustomerOrderDao;
import com.efoodstore.model.Cart;
import com.efoodstore.model.CartItem;
import com.efoodstore.model.CustomerOrder;
import com.efoodstore.service.CartService;
import com.efoodstore.service.CustomerOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

package com.efoodstore.service.impl;




@Service
public class CustomerOrderServiceImpl implements CustomerOrderService {

    @Autowired
    private CustomerOrderDao customerOrderDao;

    @Autowired
    private CartService cartService;

    public void addCustomerOrder(CustomerOrder customerOrder) {
        customerOrderDao.addCustomerOrder(customerOrder);
    }

    public double getCustomerOrderGrandTotal(int cartId) {
        double grandTotal=0;
        Cart cart = cartService.getCartById(cartId);