FieldValueHelper
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange;
using Relativity.DataExchange.Service;
using System;
using System.Globalization;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
using System.Web;
using System.Xml;
namespace kCura.WinEDDS.Helpers
{
[StandardModule]
public sealed class FieldValueHelper
{
public static string ConvertToString(object val, ViewFieldInfo field, char multiRecordDelimiter)
{
if (val is byte[])
val = Encoding.Unicode.GetString((byte[])val);
if (field.FieldType == FieldType.Date && field.Category != FieldCategory.MultiReflected) {
if (val == DBNull.Value)
val = string.Empty;
else if (val is DateTime) {
val = ((DateTime)val).ToString(field.FormatString);
}
}
string text = NullableTypesHelper.ToEmptyStringOrValue(NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(val)));
if (field.IsMultiValueField)
text = GetMultivalueString(text, field, multiRecordDelimiter);
else if (field.IsCodeOrMulticodeField) {
text = GetCodeValueString(text, multiRecordDelimiter);
}
return text;
}
public static string GetMultivalueString(string input, ViewFieldInfo field, char multiRecordDelimiter)
{
string result = input;
if (input.Contains("<object>")) {
XmlTextReader xmlTextReader = new XmlTextReader(new StringReader("<objects>" + input + "</objects>"));
bool flag = true;
StringBuilder stringBuilder = new StringBuilder();
while (xmlTextReader.Read()) {
if ((Operators.CompareString(xmlTextReader.Name, "object", false) == 0) & xmlTextReader.IsStartElement()) {
xmlTextReader.Read();
if (flag)
flag = false;
else
stringBuilder.Append(multiRecordDelimiter);
string text = xmlTextReader.Value.Trim();
switch (field.FieldType) {
case FieldType.Code:
case FieldType.MultiCode:
text = GetCodeValueString(text, multiRecordDelimiter);
break;
case FieldType.Date:
text = ToExportableDateString(text, field.FormatString);
break;
}
stringBuilder.Append(text);
}
}
xmlTextReader.Close();
result = stringBuilder.ToString();
}
return result;
}
public static string GetCodeValueString(string input, char multiRecordDelimiter)
{
input = HttpUtility.HtmlDecode(input);
input = input.Trim(new char[1] {
''
}).Replace('', multiRecordDelimiter);
return input;
}
public static string ToExportableDateString(object val, string formatString)
{
string text = NullableTypesHelper.DBNullString(RuntimeHelpers.GetObjectValue(val));
if (text != null && Operators.CompareString(text.Trim(), "", false) != 0)
return DateTime.Parse(text, CultureInfo.InvariantCulture).ToString(formatString);
return "";
}
}
}