Document.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. [NullEditor]
  20. public byte[] Data { get; set; } = Array.Empty<byte>();
  21. /*[DoNotSerialize]
  22. [DoNotPersist]
  23. [NullEditor]
  24. public string AsBase64
  25. {
  26. get => Data == null ? "" : Convert.ToBase64String(Data);
  27. set => Data = Convert.FromBase64String(value);
  28. }*/
  29. [TimestampEditor(Editable = Editable.Hidden)]
  30. public override DateTime Created
  31. {
  32. get => base.Created;
  33. set => base.Created = value;
  34. }
  35. [TextBoxEditor(Editable = Editable.Hidden)]
  36. public override string CreatedBy
  37. {
  38. get => base.CreatedBy;
  39. set => base.CreatedBy = value;
  40. }
  41. public override string ToString()
  42. {
  43. return FileName;
  44. }
  45. public static Document FromFile(string filename)
  46. {
  47. var data = File.ReadAllBytes(filename);
  48. return new Document
  49. {
  50. Data = data,
  51. FileName = Path.GetFileName(filename),
  52. CRC = CoreUtils.CalculateCRC(data),
  53. TimeStamp = new FileInfo(filename).LastWriteTime
  54. };
  55. }
  56. }
  57. }