SingleImporter
using kCura.EDDS.WebAPI.CodeManagerBase;
using kCura.WinEDDS.Api;
using kCura.WinEDDS.Service.Replacement;
using kCura.WinEDDS.Types;
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange.Service;
using System.Runtime.CompilerServices;
namespace kCura.WinEDDS.CodeValidator
{
public class SingleImporter : Base
{
private int _createdCodeCount;
protected override bool DoRealtimeDatabaseLookup => true;
public override int CreatedCodeCount => _createdCodeCount;
public SingleImporter(CaseInfo caseInfo, ICodeManager codeManager)
: base(caseInfo, codeManager)
{
_createdCodeCount = 0;
}
public unsafe override int? GetNewSingleCodeId(ArtifactField field, string codeName)
{
SingleChoiceCollection singleChoiceCollection = (SingleChoiceCollection)base.get_Lookup(field.CodeTypeID);
int order = 0;
Code code = base.CodeManager.CreateNewCodeDTOProxy(field.CodeTypeID, codeName, order, base.CaseInfo.RootArtifactID);
if (code.Name.Length > 200)
throw new CodeCreationException(false, "Proposed choice name '" + code.Name + "' exceeds 200 characters, which is the maximum allowable.");
object objectValue = RuntimeHelpers.GetObjectValue(base.CodeManager.Create(base.CaseInfo.ArtifactID, code));
if (objectValue is int) {
int num = Conversions.ToInteger(objectValue);
switch (num) {
case -1:
throw new CodeCreationException(true, codeName);
case -200:
throw new CodeCreationException(true, "This choice field is not enabled as unicode. Upload halted.");
default: {
global::Relativity.DataExchange.Service.ChoiceInfo choiceInfo = new global::Relativity.DataExchange.Service.ChoiceInfo();
choiceInfo.ArtifactID = num;
choiceInfo.CodeTypeID = code.CodeType;
choiceInfo.Name = code.Name;
choiceInfo.Order = code.Order;
choiceInfo.ParentArtifactID = code.ParentArtifactID.Value;
singleChoiceCollection.Add(choiceInfo);
ref int createdCodeCount;
*(ref createdCodeCount = ref _createdCodeCount) = checked(createdCodeCount + 1);
return num;
}
}
}
throw new CodeCreationException(true, objectValue.ToString());
}
}
}