Advertisement
parthibweavers

Training Plan Schema

Oct 9th, 2023
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.19 KB | None | 0 0
  1. enum TrainingPlanWorkoutMode: String, PersistableEnum {
  2.     case workout
  3.     case rest
  4. }
  5.  
  6. enum TrainingPlanWorkoutStatus: String, PersistableEnum {
  7.     case notStarted
  8.     case complete
  9.     case skipped
  10.     case rest
  11.     case paused_NotCompleted
  12.     case paused_Completed
  13.     case paused_rest
  14. }
  15.  
  16. enum TrainingPlanStates: String, PersistableEnum {
  17.     case notStarted
  18.     case rejected
  19.     case started
  20.     case paused
  21.     case trainingPlanOver
  22.    
  23.     static var trainingPlanStateOfCurrentProfile: TrainingPlanStates {
  24.         do {
  25.             let realm = try Realm()
  26.            
  27.             let profiles = realm.objects(TrainingPlanProfilesRealmModel.self)
  28.            
  29.             guard !profiles.isEmpty else { return .notStarted }
  30.             guard let currentlySelectedProfile = profiles.filter({ $0.username == PersonalInfoViewModel.shared.username }).first else { return .notStarted }
  31.             return currentlySelectedProfile.trainingPlanState
  32.         } catch {
  33.             return .notStarted
  34.         }
  35.     }
  36. }
  37.  
  38.  
  39.  
  40. class TrainingPlanRealmModel: EmbeddedObject {
  41.     @Persisted(originProperty: "plan") var profile: LinkingObjects<TrainingPlanProfilesRealmModel>
  42.     @Persisted var day: String
  43.     @Persisted var notification: String
  44.     @Persisted var teaser: String
  45.     @Persisted var type: String
  46.     @Persisted var mode: TrainingPlanWorkoutMode = .workout
  47.     @Persisted var status: TrainingPlanWorkoutStatus = .notStarted
  48.     @Persisted var readableDate: String?
  49.     @Persisted var date: Date?
  50.    
  51.     var isARestDay: Bool {
  52.         return self.mode == .rest
  53.     }
  54.    
  55.     var isAWorkout: Bool {
  56.         return self.mode == .workout
  57.     }
  58.    
  59.     var isPaused: Bool {
  60.         return self.status == .paused_Completed || self.status == .paused_NotCompleted || self.status == .paused_rest
  61.     }
  62.    
  63.     var dayString: String {
  64.         return "DAY \(self.day)"
  65.     }
  66. }
  67.  
  68. class TrainingPlanProfilesRealmModel: Object {
  69.     @Persisted(primaryKey: true) var username: String
  70.     @Persisted var plan: List<TrainingPlanRealmModel>
  71.     @Persisted var trainingPlanState: TrainingPlanStates = .notStarted
  72.     @Persisted var shouldExpandPersonalisedPlan = false
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement