zoukankan      html  css  js  c++  java
  • 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);
            }
        }

  • 相关阅读:
    在ubuntu上搭建开发环境9---Ubuntu删除ibus出现的问题及解决
    在ubuntu上搭建开发环境8---Ubuntu搭建Android开发环境
    在ubuntu上搭建开发环境7---ubuntu安装JDK
    在ubuntu上搭建开发环境6---安装和使用vim及其插件(Pathogen和NERDTree)
    在ubuntu上搭建开发环境5---联想Y470安装 ubuntu,解决双显卡发热等问题
    在ubuntu上搭建开发环境4---ubuntu简单的搭建LAMP环境和配置
    在ubuntu上搭建开发环境3---解决Y470一键系统重装之后恢复ubuntu引导启动的方法
    在ubuntu上搭建开发环境2---Win7、Ubuntu双系统正确删除Ubuntu
    在ubuntu上搭建开发环境1---在windows7的基础上在安装ubuntu(双系统)
    单例模式的七种写法
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6835583.html
Copyright © 2011-2022 走看看