crm操作业务部门
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 AddAndRemoveUser(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);
}
}
crm操作业务部门的更多相关文章
- crm操作安全角色
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using System.Co ...
- crm操作货币实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> ...
- crm操作权限
using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using System.Colle ...
- crm操作知识库文章实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft ...
- crm操作观点
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> ...
- crm操作产品实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> ...
- crm操作电子邮件
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft ...
- crm操作销售订单实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Cr ...
- crm操作约会实体
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft ...
随机推荐
- Chrome DevTools & performance optimization
Chrome DevTools & performance ptimization https://www.bing.com https://developers.google.com/web ...
- BZOJ 1787: [Ahoi2008]Meet 紧急集合(lca+贪心)
[Ahoi2008]Meet 紧急集合 Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 ...
- linux服务器上设置多主机头,设置多web站点
假设VPS的IP是58.130.17.168,有两个域名指向该IP,分别是domain1.com, domain2.com, 修改/etc/httpd/conf/httpd.conf,在文件的最后加入 ...
- [HAOI2011][bzoj2301] Problem b [莫比乌斯反演+容斥原理+分块前缀和优化]
题面: 传送门 有洛谷就尽量放洛谷链接呗,界面友好一点 思路: 和HDU1695比较像,但是这一回有50000组数据,直接莫比乌斯反演慢慢加的话会T 先解决一个前置问题:怎么处理a,c不是1的情况? ...
- Sabota?
Sabota? 题目描述 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人 ...
- python数据结构之字典
1.python字典的定义 1.用大括号{},以逗号分隔每个键值对,键与值之间用冒号连接 2.键:需要不可变的数据结构,值可以是任意的数据对象 3.字典是无序的,键在字典中必须是唯一,在字典中取值的方 ...
- canvas小图123
1 绘制扇形图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- 球形空间产生器sphere(bzoj 1013)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...
- Codevs 2460 == BZOJ 1036 树的统计
2460 树的统计 2008年省队选拔赛浙江 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一棵树上有n个节点,编号分别为1 ...
- Chrome扩展修改页面代码执行环境的方法
Chrome的扩展程序可以通过content scripts向页面中注入js代码,所注入的js代码能够对页面中所有的DOM对象进行操作.由于Chrome在js执行环境上对页面代码和content sc ...