package cn.com.ty.lift.system.user.service;

import cn.com.ty.lift.system.user.dao.entity.model.LiftCertificate;
import cn.com.ty.lift.system.user.dao.entity.model.ProjectInfo;
import cn.com.ty.lift.system.user.dao.entity.model.ProjectUser;
import cn.com.ty.lift.system.user.dao.entity.model.PropertyUserRequest;

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

/**
 * @author huangyuan
 * @date 2019-12-17
 * @description 项目处理
 */
public interface IProjectService {

    /**
     * @param projectUser userId:用户id,companyId:公司id
     * @return
     * @description 判断用户是否能踢出团队
     * @date 2019-12-17 09:20
     */
    Map<String, String> judgeKickOutTeam(ProjectUser projectUser);

    /**
     * @param
     * @return
     * @description 获取用户电梯操作证信息
     * @date 2019-12-17 15:42
     */
    List<LiftCertificate> getLiftCertificateList(ProjectUser projectUser);

    /**
     * @param
     * @return
     * @description 获取用户在指定公司的操作证
     * @date 2019-12-28 16:33
     */
    LiftCertificate getLiftCertificateByUserIdAndCompanyId(ProjectUser projectUser);

    /**
     * @param
     * @return
     * @description 通过用户id集合和公司id获取用户id->操作证信息的map
     * @date 2020-01-02 16:40
     */
    Map<Long, LiftCertificate> getUserIdToLiftCertificateByUserIdListAndCompanyId(List<Long> userIdList, Long companyId);

    /**
     * @param
     * @return
     * @description 获取用户所在项目用户信息
     * @date 2020-01-05 12:54
     */
    ProjectUser getProjectUserByUserIdAndProjectId(ProjectUser projectUser);

    /**
     * @param
     * @return
     * @description 保存项目用户信息
     * @date 2020-01-05 15:18
     */
    void saveProjectUser(ProjectUser projectUser);

    /**
     * @param
     * @return
     * @description 获取项目用户列表
     * @date 2020-01-05 16:06
     */
    List<ProjectUser> getProjectUserList(PropertyUserRequest propertyUserRequest);

    /**
     * @param
     * @return
     * @description 获取项目用户总条数
     * @date 2020-01-05 16:07
     */
    Long getProjectUserCount(PropertyUserRequest propertyUserRequest);

    /**
     * @param
     * @return
     * @description 通过项目id集合获取项目id—>项目信息map
     * @date 2020-01-06 12:43
     */
    Map<Long, ProjectInfo> getProjectIdToProjectByProjectIdList(List<Long> projectIdList);

    /**
     * @param
     * @return
     * @description 删除项目用户
     * @date 2020-01-06 17:13
     */
    Long deleteProjectUser(PropertyUserRequest propertyUserRequest);

    /**
     * @param projectId 项目id
     * @return 项目信息
     * @description 通过id获取项目信息
     * @date 2020/5/2 10:54 下午
     */
    ProjectInfo getProjectById(Long projectId);
}
