CRM Share操作及Plugin

Share

新共享给某个用户

 // Grant the team read/write access to the lead.
            var teamReference = new EntityReference(Team.EntityLogicalName, _teamId);
            var grantAccessRequest = new GrantAccessRequest
            {
                PrincipalAccess = new PrincipalAccess
                {
                    AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess,//共享的权限
                    Principal = teamReference//共享给某个用户
                },
                Target = leadReference//要共享的对象
            };

            organizationService.Execute(grantAccessRequest);

修改共享

 // Grant the first user delete access to the lead.
            var modifyUser1AccessReq = new ModifyAccessRequest
            {
                PrincipalAccess = new PrincipalAccess
                {
                    AccessMask = AccessRights.DeleteAccess,
                    Principal = systemUser1Ref
                },
                Target = leadReference
            };

取消所有共享

// Revoke access to the lead for the second user.
            var revokeUser2AccessReq = new RevokeAccessRequest
            {
                Revokee = systemUser2Ref,
                Target = leadReference
            };

            organizationService.Execute(revokeUser2AccessReq);

对应的Plugin

class testSharePlugin : IPlugin
    {
        IOrganizationService organizationService;
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            Guid userid = context.UserId;
            organizationService = factory.CreateOrganizationService(userid);

            var userName = QueryFullName("systemuser", userid);
            //GrantAccessRequest
            {
                var principalAccess = context.InputParameters["PrincipalAccess"] as PrincipalAccess;
                var power = principalAccess.AccessMask;
                var awardedER = principalAccess.Principal;
            }
            //ModifyAccessRequest
            {
                var modifyAccessRequest = context.InputParameters["ModifyAccessRequest"] as PrincipalAccess;
                var power = modifyAccessRequest.AccessMask;
                var awardedER = modifyAccessRequest.Principal;
            }
            //RevokeAccessRequest
            {
                var awardedER = context.InputParameters["Revokee"] as EntityReference;
            }

            //var awardedName = QueryFullName("systemuser", awardedER.Id);

            var entity = context.InputParameters["Target"] as EntityReference;

            var entityName = QueryFullName(entity.LogicalName, entity.Id);


            throw new InvalidPluginExecutionException(string.Format("Test : ({0},{1}) Share to ({2}, {3}).\nEntity is ({4}, {5}.\nPower is {6})", userName, userid, awardedName, awardedER.Id, entityName, entity.Id, power));
        }

        public string QueryFullName(string logicalName, Guid id)
        {
            var entity = organizationService.Retrieve(logicalName, id, new ColumnSet(true));
            return entity.GetAttributeValue<string>("fullname");
        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Admini$trat0r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值