|
@@ -0,0 +1,61 @@
|
|
|
+using CsvHelper;
|
|
|
+using CsvHelper.Configuration;
|
|
|
+using CsvHelper.TypeConversion;
|
|
|
+using InABox.Core;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+
|
|
|
+namespace InABox.Poster.Timberline
|
|
|
+{
|
|
|
+ public class TimberlinePosterStringConverter : DefaultTypeConverter
|
|
|
+ {
|
|
|
+ public int MaxLength { get; set; }
|
|
|
+
|
|
|
+ public TimberlinePosterStringConverter(int maxLength)
|
|
|
+ {
|
|
|
+ MaxLength = maxLength;
|
|
|
+ }
|
|
|
+
|
|
|
+ public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
|
|
|
+ {
|
|
|
+ return text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
|
|
|
+ {
|
|
|
+ var str = value?.ToString() ?? "";
|
|
|
+ if (str.Length > MaxLength)
|
|
|
+ {
|
|
|
+ str = str[..MaxLength];
|
|
|
+ }
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public class TimberlinePosterDateConverter : DefaultTypeConverter
|
|
|
+ {
|
|
|
+ public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
|
|
|
+ {
|
|
|
+ if (text.IsNullOrWhiteSpace())
|
|
|
+ {
|
|
|
+ return DateTime.MinValue;
|
|
|
+ }
|
|
|
+ return DateTime.Parse(text);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
|
|
|
+ {
|
|
|
+ if(value is DateTime date && date == DateTime.MinValue)
|
|
|
+ {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return string.Format("{0:dd/MM/yyyy}", value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|