package com.palmnest.service.dinner.manager;

import com.palmnest.application.dto.ConsumerDto;
import com.palmnest.application.dto.MealExcelDto;
import com.palmnest.application.dto.output.OrderDinnerInfoDto;
import com.palmnest.model.dinner.OrderDinnerInfo;
import com.palmnest.service.GenericManager;

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

public interface OrderDinnerInfoManager extends GenericManager<OrderDinnerInfo, Long> {
	/**
	 * 根据订单id获取订单的详情
	 *
	 * @param orderId
	 * @return
	 */
	List<OrderDinnerInfo> findByOrderId(Long orderId);

	/**
	 * 取消订单时将所有订单详情设置成无效
	 *
	 * @param orderId
	 * @return
	 */
	int updateByIsEnabled(Long orderId);

	/**
	 * 获取当天的所有订单详情
	 *
	 * @return
	 */
	List<Map<String, Object>> findBySysdate(String orgId);

	/**
	 * 获取导出excel的第一个sheet中的数据
	 *
	 * @param orgId
	 * @return
	 */
	List<MealExcelDto> getOrderExcelListByMeal(String orgId,String date);

	/**
	 * 根据部门汇总
	 *
	 * @param orgId
	 * @return
	 */
	List<MealExcelDto> getOrderExcelListByDept(String orgId,String date);

	/**
	 * 根据用户名汇总
	 *
	 * @param orgId
	 * @return
	 */
	List<Map<String, Object>> getOrderExcelListByUserName(String orgId,String date);


	/**
	 * 根据地址汇总
	 *
	 * @param orgId
	 * @return
	 */
	List<MealExcelDto> getOrderExcelListByAddress(String orgId,String date);

	/**
	 * 获取所有
	 *
	 * @param orgId 项目
	 * @param time  订餐时间
	 * @return
	 */
	Map<String, List<ConsumerDto>> getUserByTime(String orgId, String time);

	/**
	 * 根据下单人以及送餐时间获取该用户下的订餐数据
	 *
	 * @param consId
	 * @param time
	 * @return
	 */
	List<Map<String, Object>> getOrderInfoByTime(String consId, String time);

	/**
	 * 汇总会议餐
	 *
	 * @param orgId
	 * @param time  年月
	 * @return
	 */
	List<Map<String, Object>> getMeetFood(String orgId, String time);

	/**
	 * 汇总临时工作餐
	 *
	 * @param orgId
	 * @param time  年月
	 * @return
	 */
	List<Map<String, Object>> getTempOrder(String orgId, String time);

	List<OrderDinnerInfoDto> getOrderInfoByParentOrderId(String orderId, int isOver);

	/**
	 * 获取该用户这个时间内是否有有效的订单
	 *
	 * @param consId
	 * @param time
	 * @return
	 */
	int getOrderCount(String consId, String time);

	/**
	 * 今日餐品汇总
	 *
	 * @param orgId
	 * @return
	 */
	List<Map<String, Object>> getSysdateByOrgId(String orgId);

}
