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 =
1;
#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() >
0)
{
var parModel =
result.FirstOrDefault();
if (model.order +
1 !=
parModel.order)
{
parModel.order = model.order +
1;
}
}
}
#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,
0, -
1);
//停用业务部门
UpdateState(service, businessunitId, -
1, -
1);
}
/// <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);
}
}
转载于:https://www.cnblogs.com/bennylam/p/9921485.html
相关资源:数据结构—成绩单生成器