66 lines
2.3 KiB
C#
66 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace paperless_ngx_export.Models
|
|
{
|
|
public class CustomFieldParsed
|
|
{
|
|
public string Name { get; set; }
|
|
public object? Value { get; set; }
|
|
public Type DataType { get; set; }
|
|
|
|
public string StringValue => (string)Value;
|
|
|
|
public DateTime DateValue => Value != null && DataType == typeof(DateTime) ? (DateTime)Value : DateTime.MinValue;
|
|
|
|
public static CustomFieldParsed FromCustomFieldKeyValuePair(CustomFieldKeyValuePair pair, IEnumerable<CustomField> customFields)
|
|
{
|
|
if (pair.value != null && customFields.FirstOrDefault(cf => cf.Id == pair.field) is CustomField field)
|
|
{
|
|
try
|
|
{
|
|
switch (field.data_type)
|
|
{
|
|
case CustomField_DataType.date:
|
|
return new CustomFieldParsed
|
|
{
|
|
Name = field.name,
|
|
Value = DateTime.Parse(pair.value),
|
|
DataType = typeof(DateTime)
|
|
};
|
|
break;
|
|
case CustomField_DataType.select:
|
|
return new CustomFieldParsed
|
|
{
|
|
Name = field.name,
|
|
Value = field.extra_data.select_options.First(so => so.id == pair.value).label,
|
|
DataType = typeof(string)
|
|
};
|
|
break;
|
|
default:
|
|
return new CustomFieldParsed
|
|
{
|
|
Name = field.name,
|
|
Value = pair.value,
|
|
DataType = typeof(string)
|
|
};
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
;
|
|
}
|
|
}
|
|
|
|
|
|
return null;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{Name}: {Value} ({DataType.Name})";
|
|
}
|
|
}
|
|
} |