using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; /// <summary> /// 安全字段 /// </summary> public class FieldSecurityProfileHelper { public static readonly string entityName = "fieldsecurityprofile"; public static readonly string FieldPermission = "FieldPermission"; public Guid fieldSecurityProfileId = Guid.Empty; public Guid fieldPermissionId = Guid.Empty; /// <summary> /// 建立安全字段 /// </summary> public void Create(IOrganizationService service) { Entity en = new Entity() { LogicalName = entityName }; en["name"] = "new_name"; fieldSecurityProfileId = service.Create(en); } /// <summary> /// 給安全字段添加團隊 /// </summary> /// <param name="service">服務</param> /// <param name="teamId">團隊</param> public void AddTeam(IOrganizationService service, Guid teamId) { AssociateRequest request = new AssociateRequest(); request.Relationship = new Relationship("teamprofiles_association"); request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId }; request.RelatedEntities = new EntityReferenceCollection(); request.RelatedEntities.Add(new EntityReference() { LogicalName = "team", Id = teamId }); service.Execute(request); } /// <summary> /// 給安全字段移除團隊 /// </summary> /// <param name="service">服務</param> /// <param name="teamId">團隊</param> public void RemoveTeam(IOrganizationService service, Guid teamId) { DisassociateRequest request = new DisassociateRequest(); request.Relationship = new Relationship("teamprofiles_association"); request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId }; request.RelatedEntities = new EntityReferenceCollection(); request.RelatedEntities.Add(new EntityReference() { LogicalName = "team", Id = teamId }); service.Execute(request); } /// <summary> /// 給安全字段添加用戶 /// </summary> /// <param name="service">服務</param> /// <param name="teamId">用戶</param> public void AddUser(IOrganizationService service, Guid userId) { AssociateRequest request = new AssociateRequest(); request.Relationship = new Relationship("systemuserprofiles_association"); request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId }; request.RelatedEntities = new EntityReferenceCollection(); request.RelatedEntities.Add(new EntityReference() { LogicalName = "systemuser", Id = userId }); service.Execute(request); } /// <summary> /// 給安全字段移除用戶 /// </summary> /// <param name="service">服務</param> /// <param name="teamId">用戶</param> public void RemoveUser(IOrganizationService service, Guid userId) { DisassociateRequest request = new DisassociateRequest(); request.Relationship = new Relationship("systemuserprofiles_association"); request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId }; request.RelatedEntities = new EntityReferenceCollection(); request.RelatedEntities.Add(new EntityReference() { LogicalName = "systemuser", Id = userId }); service.Execute(request); } /// <summary> /// 把安全字段和實體關聯 /// </summary> /// <param name="service">服務</param> /// <param name="entity">實體</param> public void CreateAttribute(IOrganizationService service, string entity) { Entity en = new Entity() { LogicalName = FieldPermission }; //實體名稱 en["entityname"] = entity; en["canread"] = new OptionSetValue(FieldPermissionType.Allowed); en["attributelogicalname"] = "new_attributename"; en["fieldsecurityprofileid"] = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId }; fieldSecurityProfileId = service.Create(en); } /// <summary> /// 刪除實體裏面的安全字段 /// </summary> /// <param name="service">服務</param> public void RemoveAttribute(IOrganizationService service) { service.Delete(FieldPermission, fieldSecurityProfileId); } /// <summary> /// /// 刪除安全字段 /// /// </summary> public void Delete(IOrganizationService service) { service.Delete(entityName, fieldSecurityProfileId); } }