package com.uas.account.dao;

import java.util.List;

import com.uas.account.entity.*;
import org.springframework.ui.ModelMap;

import com.uas.account.core.Page;
import com.uas.account.viewmodel.UserSpaceDetailView;

public interface UserSpaceDao {

	UserSpace save(UserSpace userSpace);

	UserSpace findOne(long id);

	UserSpace findOne(String appId, String uid);

	UserSpace findDialectOne(String appId, String dialectUID);

	List<UserSpace> findByUID(String uid);

	Page<UserSpace> findAll(String appId, int pageNumber, int pageSize);

	UserSpaceFailed saveFailed(UserSpaceFailed failed);

	/**
	 * 保存详细企业信息
	 * 
	 * @param userSpaceDetail
	 * @return
	 */
	UserSpaceDetail save(UserSpaceDetail userSpaceDetail);

	/**
	 * 删除
	 * 
	 * @param userSpaceDetail
	 */
	void delete(UserSpaceDetail userSpaceDetail);

	/**
	 * 删除
	 * 
	 * @param userSpace
	 */
	void delete(UserSpace userSpace);

	/**
	 * 查找企业详细信息
	 * 
	 * @param businessCode
	 *            注册号
	 * @return
	 */
	UserSpaceDetail findByBusinessCode(String businessCode);

	/**
	 * 查找企业详细信息
	 * 
	 * @param businessCode
	 *            注册号
	 * @return
	 */
	UserSpaceDetail findById(Long id);

	/**
	 * 查找企业详细信息
	 * 
	 * @param domain
	 *            域名
	 * @return
	 */
	UserSpaceDetail findByDomain(String domain);

	/**
	 * 查找企业详细信息
	 * 
	 * @param name
	 *            全称
	 * @return
	 */
	UserSpaceDetail findByName(String name);

	/**
	 * @param pageNumber
	 * @param pageSize
	 * @param status
	 *            状态
	 * @return
	 */
	Page<UserSpaceDetail> findAll(int pageNumber, int pageSize, Integer status);

	/**
	 * 通过状态分类查找企业信息
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @param name
	 * @param businessCode
	 * @param status
	 * @return
	 */
	Page<UserSpaceDetailView> findAllView(int pageNumber, int pageSize, String name, String businessCode, Integer status);

	/**
	 * 查找所有企业信息，返回较多的信息
	 * 
	 * @param pageNumber
	 * @param pageSize
	 * @param name
	 * @param businessCode
	 * @return
	 */
	Page<UserSpaceDetailView> findAllView(int pageNumber, int pageSize, String name, String businessCode, String address);

	int getUserSpaceDetailCount();

	/**
	 * 企业开通app统计
	 * 
	 * @return
	 */
	ModelMap getUserSpaceAppCount();

	/**
	 * 通过关键词查询企业信息
	 * 
	 * @param keyword
	 * @return
	 */
	Page<UserSpaceDetail> findByKeyword(String keyword, int pageNumber, int pageSize);

	/**
	 * 通过id查询企业信息（方便平台搜索调用）
	 * 
	 * @param ids
	 * @return
	 */
	List<UserSpaceDetail> findAll(List<Long> ids);

	/**
	 * uu互联接口，通过手机号查询企业地址和企业名称
	 * 
	 * @param tel
	 * @return
	 */
	List<UserSpaceDetailInfo> findByTel(List<String> tels);

	/**
	 * uu互联接口，通过手机号查询企业信息和个人信息
	 * 
	 * @param tels
	 * @return
	 */
	List<UserSpaceDetailInfo> findUserByTel(List<String> tels);

	/**
	 * uu互联接口，通过关键词查询企业相关信息
	 * 
	 * @param keyword
	 * @param pageNumber
	 * @return
	 */
	List<UserSpaceDetailInfo> findByKeyword(String keyword, Integer pageNumber);

	/**
	 * 更新ac$userspaces中的信息
	 * 
	 * @param space
	 * @param id
	 */
	void update(UserSpace space, Long id);

	/**
	 * 查询企业是否已经存在hr账号
	 * 
	 * @param businessCode
	 * @return
	 */
	Integer findHrAccount(String businessCode);

    /**
     * 更新企业的hr账号信息
     *
     * @param hrInfo
     * @param flag
     */
    void updateInfo(User hrInfo, boolean flag);
}
