| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 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);            }        }    }}
 |