package nlib.col.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface CartService
{

	/**
	 * (로그인자용) 로그인한 사용자의 카트 목록을 조회한다. 
	 * 
	 * @param mbInfoId
	 * @param cartDivCd
	 * @return
	 * @throws Exception
	 */
	public List<CollectionVO> listCartItems(String mbInfoId, String cartTypeCd) throws Exception;
	
	/**
	 * (비로그인자용) 쿠키에서 카트 목록을 조회한다. 
	 * 
	 * @param request
	 * @param cartDivCd
	 * @return
	 * @throws Exception
	 */
	public List<CollectionVO> listCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, String cartDivCd) throws Exception;
	
	/**
	 * (로그인자용) 카트 영역 구분코드를 변경한다. (대출 <-> 방문열람)
	 * 
	 * @param mbInfoId
	 * @param targetCartItems
	 * @return
	 * @throws Exception
	 */
	public String changeCartType(CollectionVO cartVO) throws Exception;
	
	/**
	 * (비로그인자용) 카트 영역 구분코드를 변경한다. (대출 <-> 방문열람)
	 * 
	 * @param request
	 * @param targetCartItems
	 * @return
	 * @throws Exception
	 */
	public String changeCartTypeToCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
	
	/**
	 * (로그인자용) 카트에 추가한다. 
	 * 
	 * @param cartVO
	 * @return
	 * @throws Exception
	 */
	public String insertCartItem(CollectionVO cartVO) throws Exception;
	
	/**
	 * (비로그인자용) 카트에 추가한다. 
	 * 
	 * @param cartVO
	 * @return
	 * @throws Exception
	 */
	public String insertCartItemToCookie(HttpServletRequest request,  HttpServletResponse response, CollectionVO cartVO) throws Exception;
	
	/**
	 * (로그인자용) 카트에서 선택된 자료들을 삭제한다. 
	 * 
	 * @param targetCartItems
	 * @return
	 * @throws Exception
	 */
	public String deleteCartItems(CollectionVO cartVO) throws Exception;

	/**
	 * (비로그인자용) 카트에서 선택된 자료들을 삭제한다. 
	 * 
	 * @param targetCartItems
	 * @return
	 * @throws Exception
	 */
	public String deleteCartItemsFromCookie(HttpServletRequest request, HttpServletResponse response, CollectionVO cartVO) throws Exception;
	
	/**
	 * 비로그인시 카트에 저장된 내역을 로그인한 후 해당 사용자의 카트로 저장하고, 쿠키 카트내용은 초기화한다.  
	 * 
	 * @param mbInfoId
	 * @param request
	 * @return
	 * @throws Exception
	 */
	public int saveCartItemsOfNonMember(String mbInfoId, HttpServletRequest request) throws Exception;

}