Document.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.IO;
  3. namespace InABox.Core
  4. {
  5. // We removed ISkipLoad because it seemed pointless.
  6. [UserTracking(typeof(User))]
  7. public class Document : Entity, IRemotable, IPersistent, ILicense<CoreLicense>
  8. {
  9. [TextBoxEditor]
  10. [EditorSequence(1)]
  11. public string FileName { get; set; } = "";
  12. [CheckBoxEditor]
  13. [EditorSequence(2)]
  14. public bool Private { get; set; }
  15. [TimestampEditor(Editable = Editable.Hidden)]
  16. public DateTime TimeStamp { get; set; }
  17. [CodeEditor(Editable = Editable.Enabled)]
  18. public string CRC { get; set; } = "";
  19. /// <summary>
  20. /// This is a special property, and is not stored in the database. Hence, it <b>cannot</b> be available to <see cref="DocumentLink"/>,
  21. /// and neither can it be filtered on.
  22. /// </summary>
  23. [NullEditor]
  24. public byte[] Data { get; set; } = Array.Empty<byte>();
  25. /*[DoNotSerialize]
  26. [DoNotPersist]
  27. [NullEditor]
  28. public string AsBase64
  29. {
  30. get => Data == null ? "" : Convert.ToBase64String(Data);
  31. set => Data = Convert.FromBase64String(value);
  32. }*/
  33. [TimestampEditor(Editable = Editable.Hidden)]
  34. public override DateTime Created
  35. {
  36. get => base.Created;
  37. set => base.Created = value;
  38. }
  39. [TextBoxEditor(Editable = Editable.Hidden)]
  40. public override string CreatedBy
  41. {
  42. get => base.CreatedBy;
  43. set => base.CreatedBy = value;
  44. }
  45. public override string ToString()
  46. {
  47. return FileName;
  48. }
  49. public static Document FromFile(string filename)
  50. {
  51. var data = File.ReadAllBytes(filename);
  52. return new Document
  53. {
  54. Data = data,
  55. FileName = filename,
  56. CRC = CoreUtils.CalculateCRC(data),
  57. TimeStamp = new FileInfo(filename).LastWriteTime
  58. };
  59. }
  60. }
  61. }