示例#1
0
        public bool EditCardRole(CardRole p)
        {
            var entity = new TagRoleService(db).Put(p);

            RefreshData();
            return(entity != null);
        }
示例#2
0
        public bool DeleteCardRole(int id)
        {
            var entity = new TagRoleService(db).Delete(id + "");

            RefreshData();
            return(entity != null);
        }
示例#3
0
        public int AddCardRole(CardRole p)
        {
            var entity = new TagRoleService(db).Post(p);

            RefreshData();
            if (entity != null)
            {
                return(entity.Id);
            }
            else
            {
                return(-1);
            }
        }
示例#4
0
        public bool SetCardRoleAccessAreas(int roleId, List <int> areaIds)
        {
            try
            {
                HashSet <int> areaIdHs    = new HashSet <int>(areaIds); //保证角色对应区域唯一性
                var           bll         = AppContext.GetLocationBll();
                var           aarService  = new AreaAuthorizationRecordService(bll);
                var           aaService   = new AreaAuthorizationService(bll);
                var           roleService = new TagRoleService(bll);
                var           role        = roleService.GetEntity(roleId + "");

                var aarList = aarService.GetListByRole(roleId + "");


                List <int> removeList = new List <int>();
                List <int> newList    = new List <int>();

                for (int i = 0; i < aarList.Count; i++)
                {
                    var aar = aarList[i];
                    if (aar.AccessType == AreaAccessType.能进入) //设置的是可以进入的权限,同时要把不能进入的权限都删了
                    {
                        //removeList.Add(aarList[i].Id);
                        var r = aarService.Delete(aar.Id + "");
                        aarList.RemoveAt(i);
                        i--;
                    }
                }

                List <int> areasIds = new List <int>();
                foreach (var item in aarList)
                {
                    if (item.Area != null)
                    {
                        int areaId = item.Area.Id;
                        if (!areasIds.Contains(areaId))
                        {
                            areasIds.Add(areaId);                           //保证areasIds唯一性
                        }
                    }
                }

                foreach (var item in areaIdHs)
                {
                    if (areasIds.Contains(item))
                    {
                        areasIds.Remove(item);
                    }
                    else
                    {
                        newList.Add(item);
                    }
                }
                removeList.AddRange(areasIds);

                foreach (var areaId in removeList)
                {
                    //var aar = aarList.FirstOrDefault(i => i.Area!=null&&i.Area.Id == areaId);
                    //if (aar != null)
                    //{
                    //    var r = aarService.Delete(aar.Id + "");
                    //}

                    //权限表中,出现过AreaId和cardId对应并重复的数据。现在取消权限时,把AreadId重复的都删除掉
                    aarService.RemoveListByAreaId(areaId, aarList);
                }

                foreach (var areaId in newList)
                {
                    var list = aaService.GetListByArea(areaId + "");
                    if (list.Count == 0)//新增的区域没有对应的权限设置数据
                    {
                        var aaNew = AreaAuthorization.New();
                        aaNew.AreaId     = areaId;              //根节点
                        aaNew.AccessType = AreaAccessType.可以进出; //可进入的权限
                        aaNew.RangeType  = AreaRangeType.Single;
                        string areaType = "区域";
                        aaNew.Name        = string.Format("权限[" + areaType + "]");
                        aaNew.Description = string.Format("权限:可以进入" + areaType + "。");
                        var aaNewR = aaService.Post(aaNew);
                        list.Add(aaNewR);//后续挪动到aaService里面。
                    }
                    var aa = list.FirstOrDefault(i => i.AccessType == AreaAccessType.可以进出);
                    if (aa != null)
                    {
                        var aar = new AreaAuthorizationRecord(aa, role);
                        var r   = aarService.Post(aar);
                    }
                    else
                    {
                        Log.Error("SetCardRoleAccessAreas", "为找到区域对应的权限数据:" + areaId);
                    }
                }
                RefreshData();
            }
            catch (Exception ex)
            {
                Log.Error(tag, "SetCardRoleAccessAreas", ex.ToString());
                return(false);
            }
            return(true);
        }