package jp.ossc.petstore.function.impl;

import java.util.List;

import jp.ossc.petstore.common.CartItem;
import jp.ossc.petstore.function.IOrderFunction;
import jp.ossc.petstore.function.impl.BaseFunction;
import jp.ossc.petstore.dao.IOrderDAO;
import jp.ossc.petstore.dao.IOrderDetailDAO;
import jp.ossc.petstore.dto.functiondto.OrderFunctionDTO;
import jp.ossc.petstore.model.Order;

/**
 * 注文ファンクションクラス
 * @author ossc
 * @version $Revision: 1.2 $
 */
public class OrderFunction extends BaseFunction implements IOrderFunction {

	/**
	 * 注文情報ＤＡＯ
	 */
	private IOrderDAO orderDAO;

	/**
	 * 注文明細情報ＤＡＯ
	 */
	private IOrderDetailDAO orderDetailDAO;


	/**
	 * 注文情報ＤＡＯ設定
	 * @param orderDAO 注文情報ＤＡＯ
	 */
	public void setOrderDAO(IOrderDAO orderDAO) {
		this.orderDAO = orderDAO;
	}

	/**
	 * 注文明細情報ＤＡＯ設定
	 * @param orderDetailDAO 注文明細情報ＤＡＯ
	 */
	public void setOrderDetailDAO(IOrderDetailDAO orderDetailDAO) {
		this.orderDetailDAO = orderDetailDAO;
	}

	/* (非 Javadoc)
	 * @see jp.ossc.petstore.function.IOrderFunction#insertOrder(jp.ossc.petstore.dto.functiondto.OrderFunctionDTO)
	 */
	public void insertOrder(OrderFunctionDTO dto) {
		
		// 注文情報登録
		Order order = orderDAO.insertOrder(dto.getCustomer());

		// 注文明細情報登録
		List<CartItem> list = dto.getCart().getItemList();
		for (CartItem item : list) {
			orderDetailDAO.insertOrderDetail(order, item.getProduct(), item.getQuantity());
		}

		// 注文ＩＤを設定
		dto.setOrderId(String.valueOf(order.getId()));
	}

}
