| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //
- // TemporaryScheduleOverridePreset.swift
- // Loop
- //
- // Created by Michael Pangburn on 1/2/19.
- // Copyright © 2019 LoopKit Authors. All rights reserved.
- //
- import Foundation
- public struct TemporaryScheduleOverridePreset: Hashable {
- public let id: UUID
- public var symbol: String
- public var name: String
- public var settings: TemporaryScheduleOverrideSettings
- public var duration: TemporaryScheduleOverride.Duration
- public init(id: UUID = UUID(), symbol: String, name: String, settings: TemporaryScheduleOverrideSettings, duration: TemporaryScheduleOverride.Duration) {
- self.id = id
- self.symbol = symbol
- self.name = name
- self.settings = settings
- self.duration = duration
- }
- public func createOverride(enactTrigger: TemporaryScheduleOverride.EnactTrigger, beginningAt date: Date = Date()) -> TemporaryScheduleOverride {
- return TemporaryScheduleOverride(
- context: .preset(self),
- settings: settings,
- startDate: date,
- duration: duration,
- enactTrigger: enactTrigger,
- syncIdentifier: UUID()
- )
- }
- }
- extension TemporaryScheduleOverridePreset: RawRepresentable {
- public typealias RawValue = [String: Any]
- public init?(rawValue: RawValue) {
- guard
- let idString = rawValue["id"] as? String,
- let id = UUID(uuidString: idString),
- let symbol = rawValue["symbol"] as? String,
- let name = rawValue["name"] as? String,
- let settingsRawValue = rawValue["settings"] as? TemporaryScheduleOverrideSettings.RawValue,
- let settings = TemporaryScheduleOverrideSettings(rawValue: settingsRawValue),
- let durationRawValue = rawValue["duration"] as? TemporaryScheduleOverride.Duration.RawValue,
- let duration = TemporaryScheduleOverride.Duration(rawValue: durationRawValue)
- else {
- return nil
- }
- self.init(id: id, symbol: symbol, name: name, settings: settings, duration: duration)
- }
- public var rawValue: RawValue {
- return [
- "id": id.uuidString,
- "symbol": symbol,
- "name": name,
- "settings": settings.rawValue,
- "duration": duration.rawValue
- ]
- }
- }
- extension TemporaryScheduleOverridePreset: Codable {}
|