package com.palmnest.dao.dinner;

import java.util.List;
import java.util.Map;

import com.palmnest.dao.GenericDao;
import com.palmnest.model.dinner.MealCar;

public interface MealCarDao extends GenericDao<MealCar, Long> {
	/**
	 * 清空购物车
	 *
	 * @param consId 登录用户
	 * @return
	 */
	int removeMealCar(String consId);

	/**
	 * 获取当前用户购物车中的餐品
	 *
	 * @param consId
	 * @return
	 */
	List<MealCar> findMealCarListByConsId(String consId, String isEnabled);

	/**
	 * 删除购物车
	 *
	 * @param consId 登录用户
	 * @return
	 */
	int removeMealCarById(Long id);

	/**
	 * 判断该用户订餐时间下是否有加入购物车的订单（个人）
	 * 判断该用户订餐时间下操作人是否有加入购物车的订单(管理员)
	 *
	 * @param userId
	 * @param time
	 * @param operator
	 * @return
	 */
	int getMealCarByUserIdAndTime(String userId, String time, String operator);

	/**
	 * 获取当前用户购物车中的对应时间的餐品
	 *
	 * @param userId
	 * @param time
	 * @return
	 */
	List<MealCar> findMealCarListByUserId(String userId, String time);

	/**
	 * 获取当前用户购物车中的对应时间的餐品
	 *
	 * @param userId
	 * @return
	 */
	List<MealCar> findMealCarListByUserId(String userId);

	/**
	 * 获取该操作人该事件下该餐品所有购物车数据
	 *
	 * @param userId 操作人
	 * @param time   下单时间
	 * @param mealId 餐品
	 * @return
	 */
	int findMealCarListByUserId(String userId, String time, String mealId);

	/**
	 * 获取购物车中相应餐品的信息
	 *
	 * @param parements
	 * @return
	 */
	List<MealCar> getMealCarByParemens(Map<String, String> parements);

	/**
	 * 获取每个主食下的下单人
	 *
	 * @param parements
	 * @return
	 */
	List<Map<String, Object>> getMealCarGroupFood(Map<String, String> parements);

	/**
	 * 获取每个主食下的下单人
	 *
	 * @param parements
	 * @return
	 */
	List<Map<String, Object>> getMealCarByStapleFood(Map<String, String> parements);

	/**
	 * 获取购物车的时候清除掉该用户下小于当前时间的数据
	 *
	 * @param userId
	 * @return
	 */
	int removeMealCarList(String userId, int type);

	/**
	 * 获取该操作人该事件下该餐品所有购物车数据
	 *
	 * @param userId 操作人
	 * @param time   下单时间
	 * @return
	 */
	int findByUserId(String userId, String time);

	/**
	 * 获取该用户所有的购物车数量
	 *
	 * @param userId
	 * @param orgId
	 * @return
	 */
	int getMealCarList(String userId, String orgId);

	/**
	 * 获取该用户下购物车中相应时间下相应餐品的数量
	 *
	 * @param orgId
	 * @param userId
	 * @param time
	 * @param mealId
	 * @return
	 */
	int getMealCarCountByMealId(String userId, String time, String mealId);

}
