namespace BLL
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    public static class RoleService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 获取角色信息
        /// 
        /// 角色Id
        /// 
        public static Model.Sys_Role GetRoleByRoleId(string roleId)
        {
            return Funs.DB.Sys_Role.FirstOrDefault(x => x.RoleId == roleId);
        }
        public static string GetRoleTypeByRoleId(string roleId)
        {
            string type = string.Empty;
            var getRole= Funs.DB.Sys_Role.FirstOrDefault(x => x.RoleId == roleId);
            if (getRole != null)
            {
                type = getRole.RoleType;
            }
            return type;
        }
        /// 
        /// 获取角色名称是否存在
        /// 
        /// 角色id
        /// 角色名称
        /// 是否存在
        public static bool IsExistRoleName(string roleId, string roleName)
        {
            bool isExist = false;
            var role = Funs.DB.Sys_Role.FirstOrDefault(x => x.RoleName == roleName && x.RoleId != roleId);
            if (role != null)
            {
                isExist = true;
            }
            return isExist;
        }
        /// 
        /// 增加角色
        /// 
        /// 
        public static void AddRole(Model.Sys_Role role)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_Role newRole = new Model.Sys_Role
            {
                RoleId = role.RoleId,
                RoleCode = role.RoleCode,
                RoleName = role.RoleName,
                Def = role.Def,
                CNProfessionalIds=role.CNProfessionalIds,
                IsSystemBuilt = role.IsSystemBuilt,
                IsOffice = role.IsOffice,
                RoleType=role.RoleType,
            };
            db.Sys_Role.InsertOnSubmit(newRole);
            db.SubmitChanges();
        }
        /// 
        /// 修改角色信息
        /// 
        /// 
        /// 
        /// 
        public static void UpdateRole(Model.Sys_Role role)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_Role updateRole = db.Sys_Role.FirstOrDefault(e => e.RoleId == role.RoleId);
            if (updateRole != null)
            {
                updateRole.RoleCode = role.RoleCode;
                updateRole.RoleName = role.RoleName;
                updateRole.Def = role.Def;
                updateRole.CNProfessionalIds = role.CNProfessionalIds;
                updateRole.IsOffice = role.IsOffice;
                updateRole.RoleType = role.RoleType;
                db.SubmitChanges();
            }
        }
        /// 
        /// 删除角色
        /// 
        /// 
        public static void DeleteRole(string roleId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_Role deleteRole = db.Sys_Role.FirstOrDefault(e => e.RoleId == roleId);
            if (deleteRole != null)
            {
                ///删除对应权限表记录
                BLL.ButtonPowerService.DeleteButtonPower(roleId);
                var rolePower = from x in db.Sys_RolePower where x.RoleId == roleId select x;
                if (rolePower.Count() > 0)
                {
                    db.Sys_RolePower.DeleteAllOnSubmit(rolePower);
                    db.SubmitChanges();
                }
                db.Sys_Role.DeleteOnSubmit(deleteRole);
                db.SubmitChanges();
            }
        }
        /// 
        /// 获取角色下拉选项
        /// 
        /// 
        public static List GetRoleDropDownList(string roleId, bool? isOffice)
        {
            var list = (from x in Funs.DB.Sys_Role orderby x.RoleCode select x).ToList();
            if (!string.IsNullOrEmpty(roleId))
            {
                list = list.Where(x => x.RoleId != roleId).ToList();
            }
            if (isOffice.HasValue)
            {
                if (isOffice.Value)
                {
                    list = list.Where(x => x.IsOffice == true).ToList();
                }
                else
                {
                    list = list.Where(x => x.IsOffice == false || !x.IsOffice.HasValue).ToList();
                }
            }
            return list;
        }
        /// 
        /// 得到角色名称字符串
        /// 
        /// 
        /// 
        public static string getRoleNamesRoleIds(object roleIds)
        {
            string roleName = string.Empty;
            if (roleIds != null)
            {
                string[] roles = roleIds.ToString().Split(',');
                foreach (string roleId in roles)
                {
                    var q = GetRoleByRoleId(roleId);
                    if (q != null && !roleName.Contains(q.RoleName))
                    {
                        roleName += q.RoleName + ",";
                    }
                }
                if (roleName != string.Empty)
                {
                    roleName = roleName.Substring(0, roleName.Length - 1); ;
                }
            }
            return roleName;
        }
        /// 
        /// 角色下拉框
        /// 
        /// 下拉框名字
        /// 项目id
        /// 是否显示请选择
        public static void InitRoleDropDownList(FineUIPro.DropDownList dropName, string roleId, bool? isOffice, bool isShowPlease)
        {
            dropName.DataValueField = "RoleId";
            dropName.DataTextField = "RoleName";
            dropName.DataSource = BLL.RoleService.GetRoleDropDownList(roleId, isOffice);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
    }
}