//----------SysDept开始----------


using System.Threading.Tasks;
using System.Collections.Generic;
using SqlSugar;
using System.Linq;
using Admin.Core.IRepository.ISys;
using Admin.Core.Model.Sys;

namespace Admin.Core.Repository.Sys
{
    /// <summary>
    /// 部门表Repository
    /// </summary>	
    public class SysDeptRepository : BaseRepository<SysDept>, ISysDeptRepository
    {
        public SysDeptRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
        {
        }


        /// <summary>
        /// 根据ID查询所有子部门(正常状态)
        /// </summary>
        /// <param name="deptId"> 部门ID </param>
        /// <returns> 子部ID及当前选中节点部门ID的List </returns>
        public async Task<List<int>> SelectNormalChildrenIDsById(int deptId)
        {
            var children = await SelectChildrenDeptById(deptId);
            var childrenIds = children.Select(x => x.DeptID).ToList();
            childrenIds.Add(deptId);
            return childrenIds;
        }

        /// <summary>
        /// 获取所有子节点
        /// </summary>
        /// <param name="deptId"></param>
        /// <returns></returns>
        public async Task<List<SysDept>> SelectChildrenDeptById(int deptId)
        {
            var sql = @"EXEC [dbo].[Pro_Dept_ChildrenByID] @DeptID";
            SugarParameter[] parameters = new SugarParameter[]
            {
                   new SugarParameter("@DeptID", deptId)
            };
            return await QuerySqlAsync(sql, parameters);
        }

    }

}

//----------SysDept结束----------