AddTempTargetViewModel.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import SwiftUI
  2. extension AddTempTarget {
  3. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: AddTempTargetProvider {
  4. @Injected() private var storage: TempTargetsStorage!
  5. @Injected() private var settingsManager: SettingsManager!
  6. @Published var low: Decimal = 0
  7. @Published var high: Decimal = 0
  8. @Published var duration: Decimal = 0
  9. @Published var date = Date()
  10. private(set) var units: GlucoseUnits = .mmolL
  11. override func subscribe() {
  12. units = settingsManager.settings.units
  13. }
  14. func add() {
  15. var lowTarget = low
  16. var highTarget = high
  17. if units == .mmolL {
  18. lowTarget = Decimal(Int(lowTarget / GlucoseUnits.exchangeRate))
  19. highTarget = Decimal(Int(highTarget / GlucoseUnits.exchangeRate))
  20. }
  21. highTarget = max(highTarget, lowTarget)
  22. let entry = TempTarget(
  23. createdAt: date,
  24. targetTop: highTarget,
  25. targetBottom: lowTarget,
  26. duration: duration,
  27. enteredBy: TempTarget.manual
  28. )
  29. storage.storeTempTargets([entry])
  30. showModal(for: nil)
  31. }
  32. }
  33. }