Пример #1
0
        private void CompareRolePermissionsAndUpdateDatabase(
            Dictionary <Guid, List <Guid> > collectionOne,
            Dictionary <Guid, List <Guid> > collectionTwo)
        {
            //stage 0: check deleting and addditional
            Dictionary <Guid, List <Guid> > deletedPair    = new Dictionary <Guid, List <Guid> >();
            Dictionary <Guid, List <Guid> > additionalPair = new Dictionary <Guid, List <Guid> >();

            foreach (Guid key in collectionOne.Keys)
            {
                IEnumerable <Guid> exceptDeleted = collectionOne[key].Except(collectionTwo[key]);
                foreach (Guid item in exceptDeleted)
                {
                    deletedPair.AddWithKey(key, item);
                }

                IEnumerable <Guid> exceptAdditional = collectionTwo[key].Except(collectionOne[key]);
                foreach (Guid item in exceptAdditional)
                {
                    additionalPair.AddWithKey(key, item);
                }
            }

            using RolePermissionData data = new RolePermissionData(settings.ConnectionString);

            //stage 1: add new pairs in DB
            foreach (Guid key in additionalPair.Keys)
            {
                foreach (Guid value in additionalPair[key])
                {
                    data.InsertData(new RolePermissionModel()
                    {
                        ID             = Guid.NewGuid(),
                        RoleGuid       = key,
                        PermissionGuid = value
                    },
                                    nameof(SQLEnums.StoredProcedureNames.азрешенияРолейДобавить));
                }
            }

            //stage 2: delete old pairs in DB
            foreach (Guid key in deletedPair.Keys)
            {
                foreach (Guid value in deletedPair[key])
                {
                    data.DeleteDataByRoleGuidAndPermissionGuid(key, value);
                }
            }
        }
Пример #2
0
 /// <summary>
 /// 删除角色权限(不使用标记删除)
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="roleId"></param>
 /// <returns></returns>
 public async Task <OutputDto> DeleteRolePermissionAsync(RolePermissionData data)
 {
     return(await _rolePermissionRepository.DeleteAsync(v => v.RoleId.Equals(data.RoleId) && v.PermissionId.Equals(data.PermissionId)));
 }