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 ...
随机推荐
- http的一些知识
TCP/IP协议分层 应用层 TFP DNS DNS域名解析的过程 在浏览器DNS缓存中搜索 读取系统的hosts文件,查找其中是否有对应的ip 向本地配置的首选DNS服务器发起域名解析请求 HTTP ...
- bzoj1086【SCOI2005】王室联邦
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1086 sol :这题水水啊,直接大力DFS就行了 首先当且仅当x<B时无解 对于以x为 ...
- 2 - Django基础
一.Django流程 Django是使用python编写的web框架,遵守MTV设计思想. 实现原理: 1,浏览器发起请求. 2,Django根据URL Conf指向view(Views) 3,vie ...
- 在vue中使用sass
首先安装node-sass和sass-loader cnpm install node-sass && sass-loader --save 在webpack.config.js 的m ...
- Vue实现增删改查功能
简单的表单CURD功能demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- 洛谷 [P3723] 礼物
FFT https://www.luogu.org/problemnew/solution/P3723 重点在于构造卷积的形式 #include <iostream> #include & ...
- 学习 表单验证插件validate
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Educational Codeforces Round 37 A B C D E F
A. water the garden Code #include <bits/stdc++.h> #define maxn 210 using namespace std; typede ...
- duilib入门简明教程 -- 部分bug (11) (转)
原文转自:http://www.cnblogs.com/Alberl/p/3344886.html 一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 ...
- Python 数据类型-2
序列 包括:字符串 列表 元组 索引操作和切片操作 索引操作:可以从序列中抓取一个特定的项目 切片操作: 获取序列的一个切片,即一部分序列 序列的通用方法: len() 求序列的长度 + 连接2个序列 ...