package com.palmnest.service.notice;

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

import com.palmnest.application.bean.AppResultDto;
import com.palmnest.application.dto.AuditResultVo;
import com.palmnest.application.dto.input.ApprovalSetDto;
import com.palmnest.application.dto.output.AuditDto;
import com.palmnest.application.dto.output.AuditInfoDto;
import com.palmnest.model.User;
import com.palmnest.model.notice.ApprovalModel;
import com.palmnest.model.notice.NoticeApprovalTypeModel;
import com.palmnest.model.notice.NoticeApprovalsetModel;
import com.palmnest.service.GenericManager;

public interface NoticeApprovalsetManager extends GenericManager<NoticeApprovalsetModel, Integer>{
	/**
	 * 根据项目获取该项目是否开启了多级审核操作
	 * @param orgId
	 * @return
	 */
	NoticeApprovalsetModel getByOrgId(Integer orgId);
	/**
	 * 根据项目获取该项目是否开启了多级审核操作
	 * @param orgId
	 * @return
	 */
	Map<String,Object> getSetByOrgId(Integer orgId);
	/**
	 * 保存项目设置多级审核信息
	 * @param dto
	 * @param userId
	 * @return
	 */
	AppResultDto saveApprovalSet(ApprovalSetDto dto,Integer userId);
	/**
	 * 获取项目开启多级审核信息
	 * @param orgId
	 * @return
	 */
	AppResultDto getApprovalSetDto(Integer orgId);
	/**
	 * 根据订单id获取该订单下一级审核人
	 * @param orgId
	 * @param type
	 * @param orderId
	 * @return
	 */
	Map<String, Object> getRoleIdByOrderId(Integer orgId,Integer type,Integer orderType,Integer approvalTypeId,Integer orderId);
	/**
	 * 获取审核类型
	 * @param orgId
	 * @return
	 */
	List<Map<String,Object>> getApprovalTypeList(Integer orgId);
	
	/**
	 * 获取订单的审核信息
	 * @param orgId
	 * @param type
	 * @param id
	 * @return
	 */
	List<AuditDto> getAuditList(Integer orgId,Integer type,Integer id);
	/**
	 * 保存审核信息
	 * @param dto
	 * @return
	 */
	AuditResultVo saveAuditInfo(AuditInfoDto dto);
	/**
	 * 根据审核角色获取所有的审核人信息
	 * @param roleId
	 * @return
	 */
	List<User> getAppUserByRoleId(String roleId);
	/**
	 * 修改审核记录
	 * @param model
	 * @return
	 */
	ApprovalModel updateApproval(ApprovalModel model);
	/**
	 * 获取审核类型的信息
	 * @param id
	 * @return
	 */
	NoticeApprovalTypeModel findById(Integer id);

}
