package com.smkituilibrary.mapper import com.sency.smkitui.data.entity.ScoringParams import com.sency.smkitui.model.ExerciseData import com.sency.smkitui.model.SMExercise import com.sency.smkitui.model.SMWorkout import com.sency.smkitui.model.WorkoutSummaryData import com.sency.smkitui.model.workoutConfig.BodyZone import com.sency.smkitui.model.workoutConfig.DifficultyLevel import com.sency.smkitui.model.workoutConfig.SMLanguage import com.sency.smkitui.model.workoutConfig.WorkoutConfig import com.sency.smkitui.model.workoutConfig.WorkoutDuration import com.smkituilibrary.model.SMKitExercise import com.smkituilibrary.model.SMKitScoringParams import com.smkituilibrary.model.SMKitWorkout import com.smkituilibrary.model.SMKitWorkoutConfig import com.smkituilibrary.model.WFPExerciseData import com.smkituilibrary.model.WFPSummary internal fun SMKitWorkoutConfig.toWorkoutConfig(): WorkoutConfig = WorkoutConfig( programId = programID, week = week, bodyZone = BodyZone.valueOf(bodyZone), difficultyLevel = DifficultyLevel.valueOf(difficultyLevel), workoutDuration = WorkoutDuration.valueOf(workoutDuration), language = when(language) { "he" -> SMLanguage.Hebrew else -> SMLanguage.English } , ) internal fun SMKitWorkout.toSMWorkout(): SMWorkout = SMWorkout( id = id ?: "", name = name ?: "", workoutIntro = workoutIntro ?: "", soundtrack = soundtrack ?: "", exercises = exercises.map(SMKitExercise::toSMExercise), workoutClosure = workoutClosure ?: "", getInFrame = getInFrame ?: "", bodycalFinished = bodycalFinished ?: "" ) private fun SMKitExercise.toSMExercise(): SMExercise = SMExercise( prettyName = prettyName ?: "", exerciseIntro = exerciseIntro ?: "", totalSeconds = totalSeconds ?: 0, videoInstruction = videoInstruction ?: "", uiElements = uiElements ?: emptySet(), detector = detector ?: "", exerciseClosure = exerciseClosure ?: "", closureFailedSound = closureFailedSound ?: "", scoringParams = scoringParams?.toParams(), summaryTitle = summaryTitle ?: "", summarySubTitle = summarySubTitle ?: "", summaryMainMetricTitle = summaryTitleMainMetric ?: "", summaryMainMetricSubTitle = summarySubTitleMainMetric ?: "", side = side ) private fun SMKitScoringParams.toParams(): ScoringParams { return ScoringParams( type = type ?: "", scoreFactor = scoreFactor, targetTime = targetTime, targetReps = targetReps, targetRom = targetRom, passCriteria = passCriteria ) } fun WorkoutSummaryData.toWFPSummary(): WFPSummary { return WFPSummary( userData = userData, sessionId = sessionId, langauge = language, activityType = activityType, startTime = startTime, endTime = endTime, totalTime = totalTime, totalScore = totalScore, exercises = exercises.map(ExerciseData::toWFPExerciseData), workoutConfig = workoutConfig, ) } fun ExerciseData.toWFPExerciseData() = WFPExerciseData( userData = userData, activityType = activityType, sessionId = sessionId, startTime = startTime, endTime = endTime, assessmentId = assessmentId, totalScore = totalScore, performanceScore = performanceScore, techniqueScore = techniqueScore, repsPerformed = repsPerformed, repsPerformedPerfect = repsPerformedPerfect, timeInPosition = timeInPosition, timeInPositionPerfect = timeInPositionPerfect, peakRangeOfMotion = peakRangeOfMotion, feedbacks = feedbacks, exerciseId = exerciseId, totalTime = totalTime, uiElements = uiElements, instructionVideo = instructionVideo, voiceIntro = voiceIntro, prettyName = prettyName, side = side, scoringParamsData = scoringParamsData, )