TimberlineConverters.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. var str = value?.ToString() ?? "";
  25. if (str.Length > MaxLength)
  26. {
  27. str = str[..MaxLength];
  28. }
  29. return str;
  30. }
  31. }
  32. public class TimberlinePosterDateConverter : DefaultTypeConverter
  33. {
  34. public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
  35. {
  36. if (text.IsNullOrWhiteSpace())
  37. {
  38. return DateTime.MinValue;
  39. }
  40. return DateTime.Parse(text);
  41. }
  42. public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
  43. {
  44. if(value is DateTime date && date == DateTime.MinValue)
  45. {
  46. return "";
  47. }
  48. else
  49. {
  50. return string.Format("{0:dd/MM/yyyy}", value);
  51. }
  52. }
  53. }
  54. }