GPSTracker.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. [UserTracking("GPS Tracking")]
  6. public class GPSTracker : Entity, IPersistent, IRemotable, ILicense<GPSTrackerLicense>, IExportable, IImportable
  7. {
  8. [EditorSequence(1)]
  9. [UniqueCodeEditor(Editable = Editable.Enabled)]
  10. public string DeviceID { get; set; }
  11. [EditorSequence(2)]
  12. [TextBoxEditor]
  13. public string Description { get; set; }
  14. [EditorSequence(3)]
  15. [EntityRelationship(DeleteAction.SetNull)]
  16. public GPSTrackerTypeLink Type { get; set; }
  17. [EditorSequence(4)]
  18. [EnumLookupEditor(typeof(GPSTrackerDeviceType), LookupWidth = 150)]
  19. public GPSTrackerDeviceType DeviceType { get; set; } = GPSTrackerDeviceType.Unknown;
  20. [EditorSequence(5)]
  21. [DurationEditor]
  22. [Caption("Min Time")]
  23. public TimeSpan TimeThreshold { get; set; } = new TimeSpan(0, 2, 0);
  24. [EditorSequence(6)]
  25. [IntegerEditor]
  26. [Caption("Min Distance (m)")]
  27. public int DistanceThreshhold { get; set; } = 100;
  28. [EditorSequence(7)]
  29. [EntityRelationship(DeleteAction.SetNull)]
  30. public EquipmentLink Equipment { get; set; }
  31. [EditorSequence(8)]
  32. [EntityRelationship(DeleteAction.SetNull)]
  33. public JobTrackerLink JobTracker { get; set; }
  34. [EditorSequence("Additional", 1)]
  35. [DoubleEditor]
  36. public double BatteryLevel { get; set; }
  37. [EditorSequence("Additional", 2)]
  38. [DoubleEditor]
  39. public double Hours { get; set; }
  40. [EditorSequence("Additional", 3)]
  41. [DoubleEditor]
  42. public double Distance { get; set; }
  43. [EditorSequence("Additional", 4)]
  44. [DoubleEditor]
  45. public double Counter1 { get; set; }
  46. [EditorSequence("Additional", 5)]
  47. [DoubleEditor]
  48. public double Counter2 { get; set; }
  49. [EditorSequence("Additional", 6)]
  50. [DoubleEditor]
  51. public double Counter3 { get; set; }
  52. [EditorSequence("Additional", 7)]
  53. [DoubleEditor]
  54. public double Counter4 { get; set; }
  55. [EditorSequence("Additional", 8)]
  56. [DoubleEditor]
  57. public double Counter5 { get; set; }
  58. public Location Location { get; set; }
  59. static GPSTracker()
  60. {
  61. DefaultColumns.Add<GPSTracker>(x => x.DeviceID, width: 200);
  62. DefaultColumns.Add<GPSTracker>(x => x.Description, width: 0);
  63. DefaultColumns.Add<GPSTracker>(x => x.Location.Latitude, width: 100, caption: "Latitude", format: "F6", alignment: Alignment.MiddleCenter);
  64. DefaultColumns.Add<GPSTracker>(x => x.Location.Longitude, width: 100, caption: "Longitude", format: "F6", alignment: Alignment.MiddleCenter);
  65. DefaultColumns.Add<GPSTracker>(x => x.Location.Timestamp, width: 100, caption: "Last Update", format: "dd/MM/yy HH:mm", alignment: Alignment.MiddleCenter);
  66. }
  67. public override string ToString()
  68. {
  69. return string.Format("{0}: {1} ({2})", DeviceID, Description, DeviceType);
  70. }
  71. protected override void DoPropertyChanged(string name, object? before, object? after)
  72. {
  73. base.DoPropertyChanged(name, before, after);
  74. if (string.Equals(name, "DeviceType"))
  75. {
  76. DistanceThreshhold = GPSTrackerDeviceDefaults.Distance[(GPSTrackerDeviceType)after];
  77. TimeThreshold = GPSTrackerDeviceDefaults.Time[(GPSTrackerDeviceType)after];
  78. }
  79. }
  80. }
  81. }