/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.jeeplus.modules.sys.dao;

import com.jeeplus.common.persistence.CrudDao;
import com.jeeplus.common.persistence.annotation.MyBatisDao;
import com.jeeplus.modules.sys.entity.Company;
import com.jeeplus.modules.sys.entity.Office;
import com.jeeplus.modules.sys.entity.Role;
import com.jeeplus.modules.sys.entity.User;
import com.jeeplus.modules.sysuseroffice.entity.Useroffice;
import org.activiti.engine.impl.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 企业管理DAO接口
 * @author meng
 * @version 2017-03-15
 */
@MyBatisDao
public interface CompanyDao extends CrudDao<Company> {
    public Company findByName(String name);
    public Integer checkNumber(String number);
    public List<Company> getByCompanyId(Company company);

    public List<Company> findLists(Company company);
    public List<Company> getByCompany(String companyId);
    /**
     * 逻辑删除公司基本信息
     * @param company
     * @return
     */
    public void updateCompanyId(Company company);
    /**
     * 逻辑删除公司的岗位
     * @param company
     * @return
     */
    public void updateRoleId(Company company);
    /**
     * 逻辑删除公司基本记录
     */
    public void updateOfficeId(Company company);
    /**
     * 对用户和公司关联表进行删除
     */
    public void updateUserOfficeId(String companyId,String userId);
    /**
     *根据公司id查询公司下所有的用户
     */
    public List<Useroffice> updateUserCompanyId(Company company);
    /**
     * 查询用户id所在公司下的公司
     */
    public List<Useroffice> selectUserCompanyIds(String id);
    /**
     * 修改用户公司和部门id
     */
    public void updateUserComOffId(String comId, String office, String userId);
    /**
     * 物理删除表数据
     */
    public void  deleteRoleUserId(String comId, String userId);
    /**
     * 查询当前用户所对应的用户表的信息
     */
    public  User selectUser(String userId);
    /**
     * 查询手机号是否唯一
     */
    public  List<User> findUniqueBymobile(String mobile);
    /**
     *
     */
    public List<String> selectCompanyMobile(String comId);
    /**
     * 审核未通过和未审核的进行物理删除
     */
    public void deleteCompanyId(Company company);

    /**
     * 对用户当前列表进行删除
     */
    public void  deleteUserOfficeId(Company company);
    //根据用户id进行逻辑删除用户的基本信息
    public void deleteCompanyInfo(Company company);
    //根据用户id和公司id查询当前用户的公司信息
    public List<Company> selectUserCompanyId(Company company);
    /**
     * 物理删除当前用户所在的岗位表数据
     */
    public void  deleteRoleUsers(Company company);
    /**
     * 物理删除当前用户所在的岗位表数据
     */
    public void  updateNewCompany(@Param("userId")String userId);
    //查询一个用户的岗位已经有了则删除现在的岗位信息
    public List<String>	 selectUserSameRole(Company company);

    /**
     * 根据公司id和用户id修改用户公司和部门id
     */
    public void updateUserOffId(String company, String comId, String office, String id);
    public void   updateCompanyUserId(Company company);
    /**
     *查询当前用户在当前公司所在的岗位是不是管理员
     */
    public  List<String> getUserRoleManager(Company company);
    /**
     * 判断管理员用户所在公司有几个管理员
     */
    public List<Role> getUserRoleComManager(Company company);

    public List<Company> findListPage(Company company);
    public void deleteWorkAppShow(String companyId,String userId);

    void logicDelete(Office office);
}