package com.sundot.airport.common.core.domain;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.sundot.airport.common.constant.UserConstants;
import com.sundot.airport.common.core.domain.entity.SysDept;
import com.sundot.airport.common.core.domain.entity.SysUser;
import com.sundot.airport.common.utils.StringUtils;
import lombok.Data;

import java.util.List;

/**
 * 部门用户树结构实体类新版
 *
 * @author ruoyi
 */
@Data
public class DeptAndUserTreeSelect {

    /**
     * 节点类型（dept-部门 user-用户）
     * */
    private String nodeType;

    /**
     * 节点ID
     */
    private Long id;

    /**
     * 节点名称
     */
    private String label;

    /**
     * 节点code
     */
    private String code;

    /**
     * 节点禁用
     */
    private boolean disabled = false;

    /**
     * 上级
     */
    private Long parentId;

    /**
     * 部门类型
     */
    private String deptType;

    /**
     * 子节点
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<DeptAndUserTreeSelect> children;

    public DeptAndUserTreeSelect() {

    }

    /**
     * 部门节点构造方法
     *
     * @param dept 部门信息
     */
    public DeptAndUserTreeSelect(SysDept dept) {
        this.setId(dept.getDeptId());
        this.setLabel(dept.getDeptName());
        this.setParentId(dept.getParentId());
        this.setDeptType(dept.getDeptType());
        this.setNodeType("dept");
        this.setDisabled(StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()));
    }

    /**
     * 用户节点构造方法
     *
     * @param user 用户信息
     */
    public DeptAndUserTreeSelect(SysUser user) {
        this.setId(user.getUserId());
        this.setLabel(user.getNickName());
        this.setParentId(user.getDeptId());
        this.setNodeType("user");
    }

}