Case Helper

using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Query;

/// <summary>
/// 案例
/// </summary>
public class IncidentHelper
{
    public static readonly string entityName = "incident";
    public Guid incidentId = Guid.Empty;
    public IOrganizationService service;

    /// <summary>
    /// 创建案例
    /// </summary>
    public void Create()
    {
        Entity en = new Entity() { LogicalName = entityName };
        en["name"] = "案例测试";
        incidentId = service.Create(en);
    }

    /// <summary>
    /// 计算在案例上花费的总时间
    /// </summary>
    public void CalculateTotalTimeIncident()
    {
        CalculateTotalTimeIncidentRequest request = new CalculateTotalTimeIncidentRequest();
        request.IncidentId = incidentId;
        CalculateTotalTimeIncidentResponse response = (CalculateTotalTimeIncidentResponse)service.Execute(request);
        long time = response.TotalTime;
    }

    /// <summary>
    /// 将案例的状态设置为“已结束”
    /// </summary>
    /// <param name="status">结束的状态</param>
    public void CloseIncident(int status)
    {
        CloseIncidentRequest request = new CloseIncidentRequest();
        request.IncidentResolution = new Entity() { LogicalName = entityName, Id = incidentId };
        request.Status = new OptionSetValue(status);
        CloseIncidentResponse response = (CloseIncidentResponse)service.Execute(request);
    }

    /// <summary>
    /// 验证是否可随时结束案例
    /// </summary>
    /// <param name="state">Active,Resolved,Canceled</param>
    /// <param name="status">InProgress:1,OnHold:2,WaitingforDetails:3,Researching:4</param>
    /// <param name="status">ProblemSolved:5,InformationProvided:1000,Canceled:6</param>
    public void IsValidStateTransition(string state, int status)
    {
        IsValidStateTransitionRequest request = new IsValidStateTransitionRequest();
        request.Entity = new EntityReference() { LogicalName = entityName, Id = incidentId };
        request.NewState = state;
        request.NewStatus = status;
        IsValidStateTransitionResponse response = (IsValidStateTransitionResponse)service.Execute(request);
        bool isValid = response.IsValid;
    }

    /// <summary>
    /// 删除指定安全主体(用户或团队)对案例的所有访问权限
    /// </summary>
    /// <param name="revokee">用户或团队引用</param>
    public void RevokeAccess(EntityReference revokee)
    {
        RevokeAccessRequest request = new RevokeAccessRequest();
        request.Target = new EntityReference() { LogicalName = entityName, Id = incidentId };
        request.Revokee = revokee;
        RevokeAccessResponse response = (RevokeAccessResponse)service.Execute(request);
    }

    /// <summary>         /// 
    /// 删除案例         /// 
    /// </summary>         
    public void Delete() { service.Delete(entityName, incidentId); }
}
原文地址:https://www.cnblogs.com/bennylam/p/9920678.html