package cn.net.caoyao.cpzshandset.service.bll;

import java.util.List;

import android.content.Context;
import cn.net.caoyao.cpzshandset.bean.SingleLabelOptionBean;
import cn.net.caoyao.cpzshandset.common.config.ConfigDBCreateService;
import cn.net.caoyao.cpzshandset.common.util.CacheGet;
import cn.net.caoyao.cpzshandset.db.presenter.SingleLabelDal;
import cn.net.cpzslibs.prot.handset.bean.req.SingleLabelWithOptBean;

public class SingleLabelBll {
	private SingleLabelDal dal;
	public SingleLabelBll(Context context) {
//		dal = new CommonSingleLabelDal(context);
		ConfigDBCreateService service = new ConfigDBCreateService();
		dal = service.createSingleLabeDal(new CacheGet(), context);
		
	}
	
	/**
	 * 通过操作类型和操作id删除标签
	 * @param option_type
	 * @param option_id
	 */
	public void deleteLabelById(int option_type, int option_id){
		if (dal == null) {
			return;
		}
		dal.deleteLabelById(option_type, option_id);
	}
	
	/**
	 * 通过option_type删除Label
	 * @param option_type
	 */
	public void deleteLabelByOptionType(int option_type) {
		if (dal == null) {
			return;
		}
		dal.deleteLabelByOptionType(option_type);
	}
	
	/**
	 * 通过操作类型和操作id和labelID删除标签
	 * @param option_type
	 * @param option_id
	 */
	public void deleteLabelByLabelId(SingleLabelOptionBean b){
		if (dal == null) {
			return;
		}
		dal.deleteLabelByLabelId(b);
	}
	/**
	 * 插入标签到单标库中
	 * @param b
	 */
	public void insertLabel(SingleLabelOptionBean b){
		if (dal == null) {
			return;
		}
		dal.insertLabel(b);
	}
	
	/**
	 * 根据操作类型和操作id，查询所有的label信息
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public List<SingleLabelOptionBean> queryAllLabelByOptionType(int option_type) {
		if (dal == null) {
			return null;
		}
		return dal.queryAllLabelByOptionType(option_type);
	}
	/**
	 * 根据操作类型和操作id，查询所有的label信息
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public List<SingleLabelOptionBean> queryAllLabelById(int option_type, int option_id) {
		if (dal == null) {
			return null;
		}
		return dal.queryAllLabelById(option_type, option_id);
	}
	/**
	 * 根据操作类型和操作id查询标签数
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public int queryLabelCountById(int option_type,int option_id){
		if (dal == null) {
			return -1;
		}
		return dal.queryLabelCountById(option_type, option_id);
	}
	
	/**
	 * 检测某个标签是否已经存在在激活表中
	 * 
	 * @param labelId
	 * @return
	 */
	public boolean hasExistSingleLabel(String labelId,int option_type) {
		if (dal == null) {
			return false;
		}
		return dal.hasExistSingleLabel(labelId, option_type);
	}
	
	/**
	 * 检测某个标签在某个激活列表中是否已经存在
	 * 
	 * @param labelId
	 * @return
	 */
	public boolean hasExistSingleLabelInAId(String labelId, int option_type,int id){
		if (dal == null) {
			return false;
		}
		return dal.hasExistSingleLabelInAId(labelId, option_type,id);
	}
	
	/**
	 * 某个操作的单标已经达到最大限制
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public boolean isMaxLimitCount(int option_type,int option_id){
		if (dal == null) {
			return false;
		}
		return dal.isMaxLimitCount(option_type, option_id);
	}
	
	/**
	 * 根据操作id和操作类型查询所有的标签
	 * @param option_type
	 * @param option_id
	 * @return
	 */
	public List<String> queryAllLabelStrById(int option_type, int option_id){
		if (dal == null) {
			return null;
		}
		return dal.queryAllLabelStrById(option_type, option_id);
	}
	
	/**
	 * 更新操作类型和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){
		if (dal == null) {
			return;
		}
		dal.updateLableStatusById(labelId, option_type, option_id, labelStatus);
	}
	
	/**
	 * 查询专柜终端的专柜销售和退货信息
	 * @return
	 */
	public List<SingleLabelWithOptBean> queryCounterSaleAndReturned() {
		if (dal == null) {
			return null;
		}
		return dal.queryCounterSaleAndReturned();
	}
	
	public List<String> queryAllLabelStrDistinctSaleAndReturned() {
		if (dal == null) {
			return null;
		}
		return dal.queryAllLabelStrDistinctSaleAndReturned();
	}
	public void updateLableStatusInSaleAndReturned(List<String> labelId, int labelStatus) {
		if (dal == null || labelId == null) {
			return;
		}
		dal.updateLableStatusInSaleAndReturned(labelId, labelStatus);
	}
}
