Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum TrainingPlanWorkoutMode: String, PersistableEnum {
- case workout
- case rest
- }
- enum TrainingPlanWorkoutStatus: String, PersistableEnum {
- case notStarted
- case complete
- case skipped
- case rest
- case paused_NotCompleted
- case paused_Completed
- case paused_rest
- }
- enum TrainingPlanStates: String, PersistableEnum {
- case notStarted
- case rejected
- case started
- case paused
- case trainingPlanOver
- static var trainingPlanStateOfCurrentProfile: TrainingPlanStates {
- do {
- let realm = try Realm()
- let profiles = realm.objects(TrainingPlanProfilesRealmModel.self)
- guard !profiles.isEmpty else { return .notStarted }
- guard let currentlySelectedProfile = profiles.filter({ $0.username == PersonalInfoViewModel.shared.username }).first else { return .notStarted }
- return currentlySelectedProfile.trainingPlanState
- } catch {
- return .notStarted
- }
- }
- }
- class TrainingPlanRealmModel: EmbeddedObject {
- @Persisted(originProperty: "plan") var profile: LinkingObjects<TrainingPlanProfilesRealmModel>
- @Persisted var day: String
- @Persisted var notification: String
- @Persisted var teaser: String
- @Persisted var type: String
- @Persisted var mode: TrainingPlanWorkoutMode = .workout
- @Persisted var status: TrainingPlanWorkoutStatus = .notStarted
- @Persisted var readableDate: String?
- @Persisted var date: Date?
- var isARestDay: Bool {
- return self.mode == .rest
- }
- var isAWorkout: Bool {
- return self.mode == .workout
- }
- var isPaused: Bool {
- return self.status == .paused_Completed || self.status == .paused_NotCompleted || self.status == .paused_rest
- }
- var dayString: String {
- return "DAY \(self.day)"
- }
- }
- class TrainingPlanProfilesRealmModel: Object {
- @Persisted(primaryKey: true) var username: String
- @Persisted var plan: List<TrainingPlanRealmModel>
- @Persisted var trainingPlanState: TrainingPlanStates = .notStarted
- @Persisted var shouldExpandPersonalisedPlan = false
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement