Business Unit Helper
using System;
using System.Linq;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using System.Collections.Generic;
using Microsoft.Xrm.Sdk.Messages; /// <summary>
/// 操作业务部门
/// </summary>
public class BusinessUnitHelper
{
public static readonly string entityName = "businessunit";
public Guid businessunitId = Guid.Empty; /// <summary>
/// 创建业务部门
/// </summary>
public void CreateUnit(IOrganizationService service)
{
Entity en = new Entity() { LogicalName = entityName };
en["name"] = "软件开发部";
businessunitId = service.Create(en);
} /// <summary>
/// 修改业务部门
/// </summary>
public void UpdateUnit(IOrganizationService service)
{
Entity en = new Entity() { LogicalName = entityName, Id = businessunitId };
en["name"] = "软件开发事业部";
service.Update(en);
} /// <summary>
/// 设置业务部门的上级部门
/// </summary>
/// <param name="service">服务</param>
/// <param name="parentId">上级业务部门id</param>
public void SetParentBusinessUnit(IOrganizationService service, Guid parentId)
{
SetParentBusinessUnitRequest request = new SetParentBusinessUnitRequest();
//当前业务部门id
request.BusinessUnitId = businessunitId;
//上级业务部门id
request.ParentId = parentId;
service.Execute(request);
} /// <summary>
/// 检索业务部门层次结构中的所有业务部门
/// </summary>
public void SearchBusinessUnit(IOrganizationService service)
{
RetrieveBusinessHierarchyBusinessUnitRequest request = new RetrieveBusinessHierarchyBusinessUnitRequest();
request.EntityId = businessunitId;
request.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("name", "parentbusinessunitid");
RetrieveBusinessHierarchyBusinessUnitResponse response =
(RetrieveBusinessHierarchyBusinessUnitResponse)service.Execute(request);
if (response != null && response.EntityCollection != null)
{
List<BusinessUnit> list = new List<BusinessUnit>();
EntityCollection ecResult = response.EntityCollection;
int index = ;
#region 获取所有的部门
foreach (Entity en in ecResult.Entities)
{
BusinessUnit unitE = new BusinessUnit();
unitE.businessUnitId = en.Id;
unitE.name = en.Contains("name") && en["name"] != null ? en["name"].ToString() : string.Empty;
if (en.Contains("parentbusinessunitid") && en["parentbusinessunitid"] != null)
{
EntityReference parEr = en["parentbusinessunitid"] as EntityReference;
unitE.parentBusinessUnitId = parEr.Id;
}
unitE.order = index; list.Add(unitE);
index++;
}
#endregion
#region 重置业务部门的顺序
foreach (BusinessUnit model in list)
{
var result = list.Where(a => a.parentBusinessUnitId == a.businessUnitId);
if (result != null && result.Count() > )
{
var parModel = result.FirstOrDefault();
if (model.order + != parModel.order)
{
parModel.order = model.order + ;
}
}
}
#endregion
}
} public class BusinessUnit
{
public Guid businessUnitId { get; set; }
public string name { get; set; }
public Guid parentBusinessUnitId { get; set; }
public int order { get; set; }
} /// <summary>
/// 添加用户或者移除用户
/// </summary>
/// <param name="service">服务</param>
/// <param name="userId">用户</param>
public void AddAndRemoveUser(IOrganizationService service, Guid userId)
{
//添加用户
AddConnection(service, "business_unit_system_users",
new EntityReference() { LogicalName = "systemuser", Id = userId });
//移除用户
RemoveConnection(service, "business_unit_system_users",
new EntityReference() { LogicalName = "systemuser", Id = userId });
} /// <summary>
/// 添加团队或者移除团队
/// </summary>
/// <param name="service">服务</param>
/// <param name="teamId">团队</param>
public void AddAndRemoveTeam(IOrganizationService service, Guid teamId)
{
//添加团队
AddConnection(service, "business_unit_teams",
new EntityReference() { LogicalName = "team", Id = teamId });
//移除团队
RemoveConnection(service, "business_unit_teams",
new EntityReference() { LogicalName = "team", Id = teamId });
} /// <summary>
/// 停用或者启用业务部门
/// </summary>
public void SetBusinessUnitState(IOrganizationService service)
{
//启用业务部门
UpdateState(service, businessunitId, , -);
//停用业务部门
UpdateState(service, businessunitId, -, -);
} /// <summary>
/// 删除业务部门
/// </summary>
public void DeleteUnit(IOrganizationService service)
{
service.Delete(entityName, businessunitId);
} private void UpdateState(IOrganizationService service, Guid id, int state, int status)
{
SetStateRequest setState = new SetStateRequest()
{
EntityMoniker = new EntityReference()
{
Id = id,
LogicalName = entityName
},
State = new OptionSetValue(state),
Status = new OptionSetValue(status)
};
service.Execute(setState);
} public void AddConnection(IOrganizationService service, string name, params EntityReference[] array)
{
Relationship ship = new Relationship(name);
AssociateRequest request = new AssociateRequest();
request.Relationship = ship;
request.Target = new EntityReference()
{
LogicalName = entityName, Id = businessunitId
};
request.RelatedEntities = new EntityReferenceCollection();
request.RelatedEntities.AddRange(array);
service.Execute(request);
} public void RemoveConnection(IOrganizationService service, string name, params EntityReference[] array)
{
Relationship ship = new Relationship(name);
DisassociateRequest request = new DisassociateRequest();
request.Relationship = ship; request.Target = new EntityReference()
{
LogicalName = entityName,
Id = businessunitId
};
request.RelatedEntities = new EntityReferenceCollection();
request.RelatedEntities.AddRange(array);
service.Execute(request);
}
}
Business Unit Helper的更多相关文章
- Business Unit Lookup in Form
Just add the below code in lookup() of StringEdit control in Form to get the Business Unit Lookup: p ...
- C++ Under the Hood
The original article is taken from http://msdn.microsoft.com/archive/en-us/dnarvc/html/jangrayhood.a ...
- [C1] Andrew Ng - AI For Everyone
About this Course AI is not only for engineers. If you want your organization to become better at us ...
- Java中实现SAX解析xml文件到MySQL数据库
大致步骤: 1.Java bean 2.DBHelper.java 3.重写DefaultHandler中的方法:MyHander.java 4.循环写数据库:SAXParserDemo.java ① ...
- API Design
REST API Design Guidelines V 1.0.201208 Draft 5 Last Updated: 08/31/2012 1 简介 本文档旨在规范REST API的 ...
- 不变(Invariant), 协变(Covarinat), 逆变(Contravariant) : 一个程序猿进化的故事
阿袁工作的第1天: 不变(Invariant), 协变(Covarinat), 逆变(Contravariant)的初次约 阿袁,早!开始工作吧. 阿袁在笔记上写下今天工作清单: 实现一个scala类 ...
- English Training Material - 03
Cross-cultural understanding (2) 1 The following text is about cultural diversity. Read it through o ...
- Top Five Communication Skills for Project Managers
Research among project managers globally identifies top communication skills for leading teams. Lead ...
- CRM PrincipalObjectAccess(POA)
PrincipalObjectAccess (POA) table is an important table which holds all grants share on CRM objects. ...
随机推荐
- Struts 2 官方文档中文版
最近正在学 Struts 2 ,咱英文水平不行啊,找到了<Struts 2 官方文档中文版>,虽然翻译的不全,有总比没有强. 地址:https://cwiki.apache.org/con ...
- C# Array类的Sort()方法
Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System.Int32 和System.String实现了IComparable接口,所以下 ...
- 实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false retur ...
- CAShapeLayer的使用[2]
CAShapeLayer的使用[2] CAShapeLayer支持的动画类型有如下这些. ------------------------------------------------------- ...
- Android开发(7)数据库和Content Provider
问题聚焦: 思想:应用程序数据的共享 对数据库的访问仅限于创建它的应用程序,但是事情不是绝对的 Content Provider提供了一个标准的接口,可供其他应用程序访问和使用其他程序的数据 下面我们 ...
- 新增检查sql脚本是否符合ANSI编码格式
'******************************************************************* '作用:transfer转换文件编码格式 '参数含义:inco ...
- Design Pattern: Gof
Design Pattern: Gof 如果您学习设计模式(Design Pattern),看到Gof这个字,可不要呆呆的没有反应,Gof即Gang of four,也就是四人帮的意思,该设计模式名书 ...
- codeforces 633E Startup Funding(浮点数处理)
codeforces 633E Startup Funding 题意 枚举左端点,对于每个左端点求一个最大的右端点使得最大. 对于得到的这个数组,随机选择k个数,求最小值期望. 题解 对于每个左端点, ...
- Apache Spark : RDD
Resilient Distributed Datasets Resilient Distributed Datasets (RDD) is a fundamental data structure ...
- Spring MVC面试整理
Spring MVC执行过程 客户端的请求提交到dispatcherServlet DispatcherServlet查询一个或者多个handlermapping ,找请求的Controller Di ...