TempTarget.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import Foundation
  2. struct TempTarget: JSON, Identifiable, Equatable, Hashable {
  3. var id = UUID().uuidString
  4. let name: String?
  5. var createdAt: Date
  6. let targetTop: Decimal?
  7. let targetBottom: Decimal?
  8. let duration: Decimal
  9. let enteredBy: String?
  10. let reason: String?
  11. let isPreset: Bool?
  12. let enabled: Bool?
  13. static let manual = "Trio"
  14. static let custom = "Temp target"
  15. static let cancel = "Cancel"
  16. var displayName: String {
  17. name ?? reason ?? TempTarget.custom
  18. }
  19. static func == (lhs: TempTarget, rhs: TempTarget) -> Bool {
  20. lhs.createdAt == rhs.createdAt
  21. }
  22. func hash(into hasher: inout Hasher) {
  23. hasher.combine(createdAt)
  24. }
  25. static func cancel(at date: Date) -> TempTarget {
  26. TempTarget(
  27. name: TempTarget.cancel,
  28. createdAt: date,
  29. targetTop: 0,
  30. targetBottom: 0,
  31. duration: 0,
  32. enteredBy: TempTarget.manual,
  33. reason: TempTarget.cancel,
  34. isPreset: nil,
  35. enabled: nil
  36. )
  37. }
  38. }
  39. extension TempTarget {
  40. private enum CodingKeys: String, CodingKey {
  41. case id = "_id"
  42. case name
  43. case createdAt = "created_at"
  44. case targetTop
  45. case targetBottom
  46. case duration
  47. case enteredBy
  48. case reason
  49. case isPreset
  50. case enabled
  51. }
  52. }