Document.cs 2.1 KB

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