EntitySpreadsheet.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public abstract class EntitySpreadsheet<TParent, TParentLink> : Entity, IRemotable, IPersistent, IOneToMany<TParent>, ISpreadsheet<TParent,TParentLink>
  6. where TParent : Entity
  7. where TParentLink : IEntityLink<TParent>, new()
  8. {
  9. [EditorSequence(1)]
  10. [CodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]
  11. public String Code { get; set; }
  12. [EditorSequence(2)]
  13. [TextBoxEditor]
  14. public String Description { get; set; }
  15. [EditorSequence(3)]
  16. [TimestampEditor]
  17. [LoggableProperty]
  18. public DateTime Superceded { get; set; }
  19. [NullEditor]
  20. public TParentLink Parent { get; set; }
  21. public byte[] Data { get; set; } = Array.Empty<byte>();
  22. }
  23. public class JobSpreadsheet : EntitySpreadsheet<Job, JobLink>, ILicense<ProjectManagementLicense> { }
  24. public class QuoteSpreadsheet : EntitySpreadsheet<Quote, QuoteLink>, ILicense<QuotesManagementLicense> { }
  25. public class ProductSpreadsheet : EntitySpreadsheet<Product, ProductLink>, ILicense<ProductManagementLicense> { }
  26. public class CustomerSpreadsheet : EntitySpreadsheet<Customer, CustomerLink>, ILicense<AccountsReceivableLicense> { }
  27. public class SupplierSpreadsheet : EntitySpreadsheet<Supplier, SupplierLink>, ILicense<AccountsPayableLicense> { }
  28. public class EmployeeSpreadsheet : EntitySpreadsheet<Employee, EmployeeLink>, ILicense<HumanResourcesLicense> { }
  29. }