59 lines
1.3 KiB
Swift
59 lines
1.3 KiB
Swift
//
|
|
// WorkoutSession.swift
|
|
// WorkoutsPlus
|
|
//
|
|
// Created by Felix Förtsch on 07.09.24.
|
|
//
|
|
|
|
import Foundation
|
|
import SwiftData
|
|
|
|
@Model
|
|
final class WorkoutSession: Nameable {
|
|
var id = UUID()
|
|
var name = ""
|
|
var workout: Workout? {
|
|
didSet {
|
|
self.name = workout?.name ?? ""
|
|
}
|
|
}
|
|
|
|
// Time
|
|
var creationDate = Date.now
|
|
private var startDate: Date? = nil
|
|
private var stopDate: Date? = nil
|
|
private var duration: TimeInterval? = nil
|
|
|
|
// Exercise Progress
|
|
var currentExercise = 0
|
|
|
|
func isActive() -> Bool {
|
|
return startDate != nil && stopDate == nil
|
|
}
|
|
|
|
func startWorkoutSession() {
|
|
self.startDate = Date.now
|
|
}
|
|
|
|
func stopWorkoutSession() {
|
|
guard let startDate else { return }
|
|
self.stopDate = Date.now
|
|
self.duration = self.stopDate!.timeIntervalSince(startDate)
|
|
}
|
|
|
|
func elapsedTime(since startDate: Date) -> String {
|
|
let elapsedTime = Date.now.timeIntervalSince(startDate)
|
|
let formatter = DateComponentsFormatter()
|
|
formatter.allowedUnits = [.hour, .minute, .second]
|
|
formatter.unitsStyle = .positional
|
|
return formatter.string(from: elapsedTime) ?? "00:00:00"
|
|
}
|
|
|
|
// var isCompleted: Bool
|
|
// var isPaused: Bool
|
|
// var isCancelled: Bool
|
|
// var isDeleted: Bool
|
|
// var isSynced: Bool
|
|
init () { }
|
|
}
|