LicensingEngineProperties.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. using netDxf.Collections;
  7. using Org.BouncyCastle.Asn1.X509.Qualified;
  8. using PRSServer;
  9. namespace PRSLicensing;
  10. public class LicenseTimeDiscount : BaseObject
  11. {
  12. [EditorSequence(1)]
  13. [IntegerEditor(Width = 0, Alignment = Alignment.MiddleCenter)]
  14. public int Months { get; set; }
  15. [EditorSequence(2)]
  16. [DoubleEditor(Alignment = Alignment.MiddleCenter)]
  17. public double Discount { get; set; }
  18. }
  19. public class LicenseUserDiscount : BaseObject
  20. {
  21. [EditorSequence(1)]
  22. [IntegerEditor(Width = 0, Alignment = Alignment.MiddleCenter)]
  23. public int Users { get; set; }
  24. [EditorSequence(2)]
  25. [DoubleEditor(Alignment = Alignment.MiddleCenter)]
  26. public double Discount { get; set; }
  27. }
  28. public class LicenseProductMapping : BaseObject
  29. {
  30. [ComboLookupEditor(typeof(LicenseSectionGenerator), Visible = Visible.Default, Editable = Editable.Enabled)]
  31. [EditorSequence(1)]
  32. public string License { get; set; }
  33. public class LicenseSectionGenerator : LookupGenerator<object>
  34. {
  35. public LicenseSectionGenerator(object[] items) : base(items)
  36. {
  37. var tokens = CoreUtils.TypeList(x =>x.IsSubclassOf(typeof(LicenseToken)))
  38. .OrderBy(x => x.EntityName().Split('.').Last())
  39. .ToArray();
  40. foreach (var token in tokens)
  41. AddValue(token.EntityName(), token.GetCaption());
  42. }
  43. }
  44. [EditorSequence(2)]
  45. public ProductLink Product { get; set; }
  46. }
  47. public class LicensingEngineProperties : ServerProperties
  48. {
  49. [IntegerEditor]
  50. [EditorSequence(1)]
  51. public int ListenPort { get; set; }
  52. [ComboLookupEditor(typeof(LicensingDatabaseServerLookupGenerator))]
  53. [EditorSequence(2)]
  54. public string? Server { get; set; }
  55. [ListEditor(ListWidth = 350, ListHeight = 600, DirectEdit = false)]
  56. [EditorSequence(4)]
  57. [Caption("Products")]
  58. public List<LicenseProductMapping> Mappings { get; set; } = new();
  59. [ListEditor(ListWidth = 250, ListHeight = 300, DirectEdit = false)]
  60. [EditorSequence(5)]
  61. public List<LicenseTimeDiscount> TimeDiscounts { get; set; } = new();
  62. [ListEditor(ListWidth = 250, ListHeight = 400, DirectEdit = false)]
  63. [EditorSequence(5)]
  64. public List<LicenseUserDiscount> UserDiscounts { get; set; } = new();
  65. [EditorSequence("Advanced", 1)]
  66. [FileNameEditor("Certificate Files (*.pfx)|*.pfx")]
  67. public string? CertificateFile { get; set; }
  68. public override ServerType Type()
  69. {
  70. return ServerType.Other;
  71. }
  72. }