package cn.net.caoyao.cpzshandset.db.presenter;

import java.util.List;

import android.database.Cursor;
import cn.net.caoyao.cpzshandset.bean.SingleLabelOptionBean;
import cn.net.cpzslibs.prot.handset.bean.req.SingleLabelWithOptBean;

public interface SingleLabelDal {
	/**
	 * 插入标签到单标库中
	 * @param b
	 */
	public void insertLabel(SingleLabelOptionBean b);
	/**
	 * 通过操作类型和操作id删除标签
	 * @param option_type
	 * @param option_id
	 */
	public void deleteLabelById(int option_type, int option_id);
	/**
	 * 通过操作类型和操作id和labelId删除标签
	 * @param option_type
	 * @param option_id
	 */
	public void deleteLabelByLabelId(SingleLabelOptionBean b);
	/**
	 * 根据操作类型和操作id，查询所有的label信息
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public List<SingleLabelOptionBean> queryAllLabelById(int option_type, int option_id);
	public SingleLabelOptionBean getLabelBean(Cursor c);
	/**
	 * 检测某个标签是否已经存在在激活表中
	 * 
	 * @param labelId
	 * @return
	 */
	public boolean hasExistSingleLabel(String labelId, int option_type);
	/**
	 * 检测某个标签在某个激活列表中是否已经存在
	 * 
	 * @param labelId
	 * @return
	 */
	public boolean hasExistSingleLabelInAId(String labelId, int option_type,int id);
	/**
	 * 某个操作的单标已经达到最大限制
	 * 
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public boolean isMaxLimitCount(int option_type, int option_id);
	/**
	 * 根据操作类型和编号查询标签个数
	 * 
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public int queryLabelCountById(int option_type, int option_id);
	/**
	 * 查询某个操作的所有单标数据
	 * @param option_type
	 * @return
	 */
	public List<SingleLabelOptionBean> queryAllLabelByOptionType(int option_type);
	
	/**
	 * 根据操作id和操作类型查询所有的标签
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public List<String> queryAllLabelStrById(int option_type, int option_id);
	/**
	 * 查询所有的单个标签
	 * @return
	 */
	public List<String> queryAllLabelStrDistinctSaleAndReturned();
	
	/**
	 * 更新操作类型和id，以及标签号，修改标签的状态信息
	 * @param labelId
	 * @param option_type
	 * @param option_id
	 * @param labelStatus:标签状态
	 */
	public void updateLableStatusInSaleAndReturned(List<String> labelId,int labelStatus);
	/**
	 * 更新操作类型和id，以及标签号，修改标签的状态信息
	 * @param labelId
	 * @param option_type
	 * @param option_id
	 * @param labelStatus:标签状态
	 */
	public void updateLableStatusById(List<String> labelId, int option_type, int option_id,int labelStatus);
	/**
	 * 
	 * @return
	 */
	public List<SingleLabelWithOptBean> queryCounterSaleAndReturned();
	
	public void deleteLabelByOptionType(int option_type);
}
