12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.IO;
- namespace InABox.Core
- {
- // We removed ISkipLoad because it seemed pointless.
- [UserTracking(typeof(User))]
- public class Document : Entity, IRemotable, IPersistent, ILicense<CoreLicense>
- {
- [TextBoxEditor]
- [EditorSequence(1)]
- public string FileName { get; set; } = "";
- [CheckBoxEditor]
- [EditorSequence(2)]
- public bool Private { get; set; }
- [TimestampEditor(Editable = Editable.Hidden)]
- public DateTime TimeStamp { get; set; }
- [CodeEditor(Editable = Editable.Enabled)]
- public string CRC { get; set; } = "";
- /// <summary>
- /// This is a special property, and is not stored in the database. Hence, it <b>cannot</b> be available to <see cref="DocumentLink"/>,
- /// and neither can it be filtered on.
- /// </summary>
- [NullEditor]
- [ExternalStorage]
- public byte[] Data { get; set; } = Array.Empty<byte>();
- /*[DoNotSerialize]
- [DoNotPersist]
- [NullEditor]
- public string AsBase64
- {
- get => Data == null ? "" : Convert.ToBase64String(Data);
- set => Data = Convert.FromBase64String(value);
- }*/
- [TimestampEditor(Editable = Editable.Hidden)]
- public override DateTime Created
- {
- get => base.Created;
- set => base.Created = value;
- }
- [TextBoxEditor(Editable = Editable.Hidden)]
- public override string CreatedBy
- {
- get => base.CreatedBy;
- set => base.CreatedBy = value;
- }
- public override string ToString()
- {
- return FileName;
- }
- public static Document FromFile(string filename)
- {
- var data = File.ReadAllBytes(filename);
- return new Document
- {
- Data = data,
- FileName = Path.GetFileName(filename),
- CRC = CoreUtils.CalculateCRC(data),
- TimeStamp = new FileInfo(filename).LastWriteTime
- };
- }
- }
- }
|