TimberlineConverters.cs 1.7 KB

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