TimberlineConverters.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using CsvHelper;
  2. using CsvHelper.Configuration;
  3. using CsvHelper.TypeConversion;
  4. using InABox.Core;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace InABox.Poster.Timberline
  10. {
  11. public class TimberlinePosterStringConverter : DefaultTypeConverter
  12. {
  13. public int MaxLength { get; set; }
  14. public TimberlinePosterStringConverter(int maxLength)
  15. {
  16. MaxLength = maxLength;
  17. }
  18. public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
  19. {
  20. return text;
  21. }
  22. public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
  23. {
  24. return ConvertString(value, MaxLength);
  25. }
  26. public static string ConvertString(object? value, int maxLength)
  27. {
  28. var str = value?.ToString() ?? "";
  29. if (str.Length > maxLength)
  30. {
  31. str = str[..maxLength];
  32. }
  33. str = str.ReplaceLineEndings(" ");
  34. return str;
  35. }
  36. }
  37. public class TimberlinePosterDateConverter : DefaultTypeConverter
  38. {
  39. public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
  40. {
  41. if (text.IsNullOrWhiteSpace())
  42. {
  43. return DateTime.MinValue;
  44. }
  45. return DateTime.Parse(text);
  46. }
  47. public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
  48. {
  49. if(value is DateTime date && date == DateTime.MinValue)
  50. {
  51. return "";
  52. }
  53. else
  54. {
  55. return string.Format("{0:dd/MM/yyyy}", value);
  56. }
  57. }
  58. }
  59. }