CodeManager
using kCura.EDDS.WebAPI.CodeManagerBase;
using kCura.WinEDDS.Api;
using kCura.WinEDDS.Service.Replacement;
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange;
using Relativity.DataExchange.Data;
using Relativity.DataExchange.Service;
using System;
using System.Collections;
using System.Data;
using System.Net;
using System.Runtime.CompilerServices;
using System.Text;
using System.Web;
using System.Web.Services.Protocols;
namespace kCura.WinEDDS.Service
{
public class CodeManager : kCura.EDDS.WebAPI.CodeManagerBase.CodeManager, ICodeManager
{
[CompilerGenerated]
internal sealed class _Closure$__3-0
{
public int $VB$Local_caseContextArtifactID;
public CodeManager $VB$Me;
internal DataSet _Lambda$__0()
{
return ((kCura.EDDS.WebAPI.CodeManagerBase.CodeManager)$VB$Me).RetrieveCodesAndTypesForCase($VB$Local_caseContextArtifactID);
}
}
[CompilerGenerated]
internal sealed class _Closure$__6-0
{
public int $VB$Local_caseContextArtifactID;
public int $VB$Local_codeTypeID;
public CodeManager $VB$Me;
internal DataSet _Lambda$__0()
{
return ((kCura.EDDS.WebAPI.CodeManagerBase.CodeManager)$VB$Me).GetInitialChunk($VB$Local_caseContextArtifactID, $VB$Local_codeTypeID);
}
}
[CompilerGenerated]
internal sealed class _Closure$__7-0
{
public int $VB$Local_caseContextArtifactID;
public int $VB$Local_codeTypeID;
public int $VB$Local_lastCodeID;
public CodeManager $VB$Me;
internal DataSet _Lambda$__0()
{
return ((kCura.EDDS.WebAPI.CodeManagerBase.CodeManager)$VB$Me).GetLastChunk($VB$Local_caseContextArtifactID, $VB$Local_codeTypeID, $VB$Local_lastCodeID);
}
}
[CompilerGenerated]
internal sealed class _Closure$__8-0
{
public int $VB$Local_caseContextArtifactID;
public int $VB$Local_codeTypeID;
public CodeManager $VB$Me;
internal DataSet _Lambda$__0()
{
return ((kCura.EDDS.WebAPI.CodeManagerBase.CodeManager)$VB$Me).GetAllForHierarchical($VB$Local_caseContextArtifactID, $VB$Local_codeTypeID);
}
}
public CodeManager(ICredentials credentials, CookieContainer cookieContainer)
{
this.set_Credentials(credentials);
this.set_CookieContainer(cookieContainer);
base.Url = $"{AppSettings.Instance.WebApiServiceUrl}""";
this.set_Timeout(Settings.DefaultTimeOut);
}
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest obj = (HttpWebRequest)this.GetWebRequest(uri);
obj.UnsafeAuthenticatedConnectionSharing = true;
obj.Credentials = this.get_Credentials();
return obj;
}
public Code CreateNewCodeDTOProxy(int codeTypeID, string name, int order, int caseSystemID)
{
Code code = new Code();
code.CodeType = codeTypeID;
code.IsActive = true;
code.Name = name;
code.Order = order;
code.Keywords = string.Empty;
code.Notes = string.Empty;
code.ParentArtifactID = caseSystemID;
code.ContainerID = caseSystemID;
code.RelativityApplications = new int[0];
return code;
}
Code ICodeManager.CreateNewCodeDTOProxy(int codeTypeID, string name, int order, int caseSystemID)
{
return this.CreateNewCodeDTOProxy(codeTypeID, name, order, caseSystemID);
}
public new DataSet RetrieveCodesAndTypesForCase(int caseContextArtifactID)
{
return WebServiceExtensions.RetryOnReLoginException(this, () => base.RetrieveCodesAndTypesForCase(caseContextArtifactID), true);
}
DataSet ICodeManager.RetrieveCodesAndTypesForCase(int caseContextArtifactID)
{
return this.RetrieveCodesAndTypesForCase(caseContextArtifactID);
}
public new object Create(int caseContextArtifactID, Code code)
{
int num = 0;
bool flag = true;
string name = code.Name;
string name2 = HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(code.Name));
checked {
while (num < AppSettings.Instance.MaxReloginTries) {
num++;
try {
if (!flag) {
code.Name = name;
return base.Create(caseContextArtifactID, code);
}
code.Name = name2;
return CreateEncoded(caseContextArtifactID, code);
} catch (Exception ex) {
ProjectData.SetProjectError(ex);
Exception ex2 = ex;
if (ex2 is SoapException && ex2.ToString().IndexOf("NeedToReLoginException") != -1 && num < AppSettings.Instance.MaxReloginTries)
Helper.AttemptReLogin(this.get_Credentials(), this.get_CookieContainer(), num, true);
else {
if (!(ex2 is SoapException) || !ExceptionHelper.IsSoapEndpointNotFound(ex2) || !flag)
throw;
num--;
flag = false;
}
ProjectData.ClearProjectError();
}
}
return null;
}
}
object ICodeManager.Create(int caseContextArtifactID, Code code)
{
return this.Create(caseContextArtifactID, code);
}
public new int ReadID(int caseContextArtifactID, int parentArtifactID, int codeTypeID, string name)
{
int num = 0;
bool flag = true;
checked {
while (num < AppSettings.Instance.MaxReloginTries) {
num++;
try {
if (!flag)
return base.ReadID(caseContextArtifactID, parentArtifactID, codeTypeID, name);
return ReadIDEncoded(caseContextArtifactID, parentArtifactID, codeTypeID, HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(name)));
} catch (Exception ex) {
ProjectData.SetProjectError(ex);
Exception ex2 = ex;
if (ex2 is SoapException && ex2.ToString().IndexOf("NeedToReLoginException") != -1 && num < AppSettings.Instance.MaxReloginTries)
Helper.AttemptReLogin(this.get_Credentials(), this.get_CookieContainer(), num, true);
else {
if (!(ex2 is SoapException) || !ExceptionHelper.IsSoapEndpointNotFound(ex2) || !flag)
throw;
num--;
flag = false;
}
ProjectData.ClearProjectError();
}
}
return 0;
}
}
int ICodeManager.ReadID(int caseContextArtifactID, int parentArtifactID, int codeTypeID, string name)
{
return this.ReadID(caseContextArtifactID, parentArtifactID, codeTypeID, name);
}
public new DataSet GetInitialChunk(int caseContextArtifactID, int codeTypeID)
{
return WebServiceExtensions.RetryOnReLoginException(this, () => base.GetInitialChunk(caseContextArtifactID, codeTypeID), true);
}
public new DataSet GetLastChunk(int caseContextArtifactID, int codeTypeID, int lastCodeID)
{
return WebServiceExtensions.RetryOnReLoginException(this, () => base.GetLastChunk(caseContextArtifactID, codeTypeID, lastCodeID), true);
}
public new DataSet GetAllForHierarchical(int caseContextArtifactID, int codeTypeID)
{
return WebServiceExtensions.RetryOnReLoginException(this, () => base.GetAllForHierarchical(caseContextArtifactID, codeTypeID), true);
}
DataSet ICodeManager.GetAllForHierarchical(int caseContextArtifactID, int codeTypeID)
{
return this.GetAllForHierarchical(caseContextArtifactID, codeTypeID);
}
public global::Relativity.DataExchange.Service.ChoiceInfo[] RetrieveAllCodesOfType(int caseContextArtifactID, int codeTypeID)
{
ArrayList arrayList = new ArrayList();
int num = -1;
DataTable dataTable;
do {
dataTable = ((num != -1) ? GetLastChunk(caseContextArtifactID, codeTypeID, num).Tables[0] : GetInitialChunk(caseContextArtifactID, codeTypeID).Tables[0]);
IEnumerator enumerator = default(IEnumerator);
try {
enumerator = dataTable.Rows.GetEnumerator();
while (enumerator.MoveNext()) {
DataRow row = (DataRow)enumerator.Current;
arrayList.Add(new global::Relativity.DataExchange.Service.ChoiceInfo(row));
}
} finally {
if (enumerator is IDisposable)
(enumerator as IDisposable).Dispose();
}
if (arrayList.Count > 0)
num = ((global::Relativity.DataExchange.Service.ChoiceInfo)arrayList[checked(arrayList.Count - 1)]).ArtifactID;
} while (dataTable != null && dataTable.Rows.Count != 0);
return (global::Relativity.DataExchange.Service.ChoiceInfo[])arrayList.ToArray(typeof(global::Relativity.DataExchange.Service.ChoiceInfo));
}
global::Relativity.DataExchange.Service.ChoiceInfo[] ICodeManager.RetrieveAllCodesOfType(int caseContextArtifactID, int codeTypeID)
{
return this.RetrieveAllCodesOfType(caseContextArtifactID, codeTypeID);
}
public global::Relativity.DataExchange.Service.ChoiceInfo RetrieveCodeByNameAndTypeID(int caseContextArtifactID, ArtifactField codeType, string name)
{
int num = 0;
bool flag = true;
ValidateChoiceName(name, codeType);
checked {
while (num < AppSettings.Instance.MaxReloginTries) {
num++;
try {
if (!flag)
return Convert(RetrieveCodeByNameAndTypeID(caseContextArtifactID, codeType.CodeTypeID, name));
return Convert(RetrieveCodeByNameAndTypeIDEncoded(caseContextArtifactID, codeType.CodeTypeID, HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(name))));
} catch (InvalidOperationException ex) {
ProjectData.SetProjectError(ex);
InvalidOperationException ex2 = ex;
if (ex2.ToString().IndexOf("invalid character") != -1)
throw new ImporterException($"""{codeType.CodeTypeID}""", ex2);
throw;
} catch (Exception ex3) {
ProjectData.SetProjectError(ex3);
Exception ex4 = ex3;
if (ex4 is SoapException && ex4.ToString().IndexOf("NeedToReLoginException") != -1 && num < AppSettings.Instance.MaxReloginTries)
Helper.AttemptReLogin(this.get_Credentials(), this.get_CookieContainer(), num, true);
else {
if (!(ex4 is SoapException) || !ExceptionHelper.IsSoapEndpointNotFound(ex4) || !flag)
throw;
num--;
flag = false;
}
ProjectData.ClearProjectError();
}
}
return null;
}
}
global::Relativity.DataExchange.Service.ChoiceInfo ICodeManager.RetrieveCodeByNameAndTypeID(int caseContextArtifactID, ArtifactField codeType, string name)
{
return this.RetrieveCodeByNameAndTypeID(caseContextArtifactID, codeType, name);
}
private void ValidateChoiceName(string name, ArtifactField codeType)
{
if (name.Contains(" "))
throw new ImporterException($"""{codeType.CodeTypeID}""");
}
public new int GetChoiceLimitForUI()
{
return WebServiceExtensions.RetryOnReLoginException(this, () => base.GetChoiceLimitForUI(), true);
}
int ICodeManager.GetChoiceLimitForUI()
{
return this.GetChoiceLimitForUI();
}
public static global::Relativity.DataExchange.Service.ChoiceInfo Convert(kCura.EDDS.WebAPI.CodeManagerBase.ChoiceInfo webserviceChoiceInfo)
{
if (webserviceChoiceInfo != null)
return new global::Relativity.DataExchange.Service.ChoiceInfo {
ArtifactID = webserviceChoiceInfo.ArtifactID,
CodeTypeID = webserviceChoiceInfo.CodeTypeID,
Name = webserviceChoiceInfo.Name,
Order = webserviceChoiceInfo.Order,
ParentArtifactID = webserviceChoiceInfo.ParentArtifactID
};
return null;
}
[CompilerGenerated]
private int _Lambda$__12-0()
{
return base.GetChoiceLimitForUI();
}
}
}