using Fitness_core_BE.Models; namespace Fitness_core_BE.Data { /// /// Fixed, deterministic seed data for the 3 platform-wide "coach guided" workout plans /// (1-day / 2-day / 3-day splits) inserted via EF Core migration HasData. GUIDs are /// hardcoded (not Guid.NewGuid()) because HasData requires stable keys across migrations. /// public static class WorkoutPlanSeedData { public static readonly Guid CategoryId = Guid.Parse("6df7ddee-1923-43ff-b349-d10beaab5531"); public static readonly Guid Plan1DayId = Guid.Parse("dc845372-fd61-4ec6-ad5f-4b61b569ea83"); public static readonly Guid Plan2DayId = Guid.Parse("abca6a2c-3b33-460e-9384-7c29dec89887"); public static readonly Guid Plan3DayId = Guid.Parse("712adef6-7915-4e6a-9e60-2a077b3f33a9"); public static readonly Guid Plan1Day1ItemId = Guid.Parse("ee06a6c4-cbb0-41d8-956f-04940ebb3ad4"); public static readonly Guid Plan2Day1ItemId = Guid.Parse("f0886ca4-2f72-4abd-8307-2891f026e8f9"); public static readonly Guid Plan2Day2ItemId = Guid.Parse("ed586263-03ea-4f0c-a538-c069d061dc1c"); public static readonly Guid Plan3Day1ItemId = Guid.Parse("66ebcbba-8de5-4cb6-af0e-e24d371d79a0"); public static readonly Guid Plan3Day2ItemId = Guid.Parse("27c39410-1c57-4137-8737-a59706d6443e"); public static readonly Guid Plan3Day3ItemId = Guid.Parse("f988a8a9-8384-47c7-b815-2e92eef5bd7e"); private static readonly DateTime SeedDate = new DateTime(2026, 8, 2, 0, 0, 0, DateTimeKind.Utc); private static string VideoSearchUrl(string exerciseName) => "https://www.youtube.com/results?search_query=" + Uri.EscapeDataString(exerciseName + " exercise tutorial"); public static WorkoutCategory[] Categories() => new[] { new WorkoutCategory { WorkoutCategoryId = CategoryId, WorkoutCategoryName = "Coach Guided Plans", Description = "Structured plans curated by HexaFitness so members can train confidently without a live coach.", IsActive = true, CreateDate = SeedDate } }; public static WorkoutPlan[] Plans() => new[] { new WorkoutPlan { WorkoutPlanId = Plan1DayId, WorkoutPlanName = "1-Day Full Body Plan", Description = "A single full-body session hitting every major muscle group. Best for members who can train once or twice a week.", IsTemplate = true, FKWorkoutCategoryId = CategoryId, FKClientId = null, IsActive = true, CreateDate = SeedDate }, new WorkoutPlan { WorkoutPlanId = Plan2DayId, WorkoutPlanName = "2-Day Upper/Lower Split", Description = "Alternate an upper-body day with a lower-body-and-core day. Great for two or four sessions a week.", IsTemplate = true, FKWorkoutCategoryId = CategoryId, FKClientId = null, IsActive = true, CreateDate = SeedDate }, new WorkoutPlan { WorkoutPlanId = Plan3DayId, WorkoutPlanName = "3-Day Push/Pull/Legs Split", Description = "Classic push, pull, legs rotation for members training three to six days a week.", IsTemplate = true, FKWorkoutCategoryId = CategoryId, FKClientId = null, IsActive = true, CreateDate = SeedDate } }; public static WorkoutItem[] Items() => new[] { new WorkoutItem { WorkoutItemId = Plan1Day1ItemId, ExerciseDay = "Day 1 - Full Body", Description = "Full body strength session covering chest, back, shoulders, arms, legs and core.", FKWorkoutPlanId = Plan1DayId, Duration = "45-55 minutes", WormUp = "5-8 minutes of light cardio plus dynamic stretches for hips, shoulders and ankles.", Cooldown = "5 minutes of static stretching for the muscles trained.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate }, new WorkoutItem { WorkoutItemId = Plan2Day1ItemId, ExerciseDay = "Day 1 - Upper Body", Description = "Chest, back, shoulders, biceps and triceps.", FKWorkoutPlanId = Plan2DayId, Duration = "50-60 minutes", WormUp = "5 minutes light cardio plus arm circles and band pull-aparts.", Cooldown = "5 minutes stretching chest, back and shoulders.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate }, new WorkoutItem { WorkoutItemId = Plan2Day2ItemId, ExerciseDay = "Day 2 - Lower Body & Core", Description = "Quads, hamstrings, glutes, calves and core.", FKWorkoutPlanId = Plan2DayId, Duration = "50-60 minutes", WormUp = "5-8 minutes light cardio plus bodyweight squats and leg swings.", Cooldown = "5 minutes stretching quads, hamstrings and calves.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate }, new WorkoutItem { WorkoutItemId = Plan3Day1ItemId, ExerciseDay = "Day 1 - Push", Description = "Chest, shoulders and triceps.", FKWorkoutPlanId = Plan3DayId, Duration = "50-60 minutes", WormUp = "5 minutes light cardio plus arm circles and shoulder dislocates.", Cooldown = "5 minutes stretching chest, shoulders and triceps.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate }, new WorkoutItem { WorkoutItemId = Plan3Day2ItemId, ExerciseDay = "Day 2 - Pull", Description = "Back and biceps.", FKWorkoutPlanId = Plan3DayId, Duration = "50-60 minutes", WormUp = "5 minutes light cardio plus band pull-aparts and scapular retractions.", Cooldown = "5 minutes stretching back and biceps.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate }, new WorkoutItem { WorkoutItemId = Plan3Day3ItemId, ExerciseDay = "Day 3 - Legs & Core", Description = "Quads, hamstrings, glutes, calves and core.", FKWorkoutPlanId = Plan3DayId, Duration = "55-65 minutes", WormUp = "8 minutes light cardio plus bodyweight squats, lunges and leg swings.", Cooldown = "5-8 minutes stretching the full lower body.", IsActive = true, CreateDate = SeedDate, UpdatedAt = SeedDate } }; private record Ex( Guid Id, Guid ItemId, int Order, string Name, string MuscleGroup, int Sets, string Reps, string Description, string BreathIn, string BreathOut); public static WorkoutExercise[] Exercises() { var defs = new[] { // ---- Plan 1: 1-Day Full Body ---- new Ex(Guid.Parse("d9c8f4e6-d889-46ea-8231-a0003239eac3"), Plan1Day1ItemId, 1, "Bodyweight Squat", "Legs", 3, "15", "Stand with feet shoulder-width apart and lower your hips back and down as if sitting into a chair, then drive back up.", "Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."), new Ex(Guid.Parse("9a655052-29d7-4e31-8cd9-7f29724fe9a3"), Plan1Day1ItemId, 2, "Push-Up", "Chest", 3, "12", "Hands under shoulders, body in a straight line from head to heels. Lower your chest to the floor and press back up.", "Inhale as you lower your chest toward the floor.", "Exhale as you press back up to the start."), new Ex(Guid.Parse("d5f5e067-927e-419c-8878-d6de902877a1"), Plan1Day1ItemId, 3, "Bent-Over Dumbbell Row", "Back", 3, "12", "Hinge at the hips with a flat back, let the dumbbells hang, then pull them toward your waist squeezing your shoulder blades together.", "Inhale as you let the dumbbells lower and arms extend.", "Exhale as you pull the dumbbells toward your torso."), new Ex(Guid.Parse("27410090-3846-4bf1-b033-6a2f682c5e61"), Plan1Day1ItemId, 4, "Dumbbell Shoulder Press", "Shoulders", 3, "10", "Sit or stand with a dumbbell in each hand at shoulder height, press overhead until arms are extended, then lower with control.", "Inhale as you lower the dumbbells to shoulder height.", "Exhale as you press the dumbbells overhead."), new Ex(Guid.Parse("1a4060e8-b98b-449c-98a4-e44aa895741e"), Plan1Day1ItemId, 5, "Dumbbell Bicep Curl", "Biceps", 3, "12", "Elbows tucked at your sides, curl the dumbbells up toward your shoulders, then lower slowly.", "Inhale as you lower the dumbbells back down.", "Exhale as you curl the dumbbells up toward your shoulders."), new Ex(Guid.Parse("adba4556-0f84-4033-be42-ad6d714cbbc0"), Plan1Day1ItemId, 6, "Triceps Dip", "Triceps", 3, "10", "Using a bench or chair, lower your body by bending your elbows to about 90 degrees, then press back up.", "Inhale as you bend your elbows and lower your body.", "Exhale as you press back up to straighten your arms."), new Ex(Guid.Parse("21fcc291-5124-4d32-94a7-dcbfc7f5d42d"), Plan1Day1ItemId, 7, "Walking Lunge", "Legs", 3, "12 each leg", "Step forward into a lunge, lowering your back knee toward the floor, then push off to bring the back leg through into the next step.", "Inhale as you step forward and lower your back knee.", "Exhale as you push back up to standing."), new Ex(Guid.Parse("8803ff2c-a78a-419d-9e64-2166be5d53ac"), Plan1Day1ItemId, 8, "Plank", "Core", 3, "30-45 sec hold", "Forearms and toes on the floor, body in a straight line, core braced. Hold the position without letting your hips sag.", "Inhale slowly through the nose while holding the position.", "Exhale slowly through the mouth, keeping your core braced."), // ---- Plan 2, Day 1: Upper Body ---- new Ex(Guid.Parse("a153ed45-d300-4f5a-8277-4c0a3868fcb9"), Plan2Day1ItemId, 1, "Flat Bench Press", "Chest", 4, "10", "Lie on a flat bench, lower the bar to your mid-chest with control, then press it back up to full arm extension.", "Inhale as you lower the bar to your chest.", "Exhale as you press the bar back up."), new Ex(Guid.Parse("e0f19862-fd5e-4b0c-bd31-2ad184c15cc3"), Plan2Day1ItemId, 2, "Lat Pulldown", "Back", 4, "10", "Grip the bar wide, pull it down to your upper chest while keeping your chest up, then let it rise back with control.", "Inhale as you let the bar rise and your arms extend.", "Exhale as you pull the bar down toward your chest."), new Ex(Guid.Parse("9cd3ca5c-b0b1-487b-b340-9120e5ad8a74"), Plan2Day1ItemId, 3, "Seated Dumbbell Shoulder Press", "Shoulders", 3, "12", "Seated with back supported, press the dumbbells from shoulder height straight overhead, then lower with control.", "Inhale as you lower the dumbbells to shoulder height.", "Exhale as you press the dumbbells overhead."), new Ex(Guid.Parse("a85e98d5-b36a-47e1-b463-3c04d505667b"), Plan2Day1ItemId, 4, "Barbell Bicep Curl", "Biceps", 3, "12", "Grip the bar shoulder-width, curl it up toward your chest keeping elbows fixed at your sides, then lower slowly.", "Inhale as you lower the bar back down.", "Exhale as you curl the bar up toward your shoulders."), new Ex(Guid.Parse("29c2321d-5841-4704-9d35-f937d0b1ad6c"), Plan2Day1ItemId, 5, "Triceps Rope Pushdown", "Triceps", 3, "12", "Elbows pinned at your sides, push the rope down until your arms are fully extended, then let it rise back with control.", "Inhale as you let the rope rise and your elbows bend.", "Exhale as you push the rope down to full extension."), new Ex(Guid.Parse("dacb1386-1e57-44d2-aecd-21350b2ad5be"), Plan2Day1ItemId, 6, "Face Pull", "Shoulders", 3, "15", "Using a rope on a cable machine at head height, pull the rope toward your face, flaring your elbows out wide.", "Inhale as you extend your arms forward.", "Exhale as you pull the rope toward your face."), // ---- Plan 2, Day 2: Lower Body & Core ---- new Ex(Guid.Parse("b46f76d9-0eef-41bd-9202-bbee8035dff4"), Plan2Day2ItemId, 1, "Barbell Back Squat", "Legs", 4, "10", "Bar across your upper back, feet shoulder-width apart. Squat down until thighs are parallel to the floor, then drive back up.", "Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."), new Ex(Guid.Parse("3e3d0a10-63c1-4c68-ac5b-67c005f92fcc"), Plan2Day2ItemId, 2, "Romanian Deadlift", "Legs", 4, "10", "Holding a barbell or dumbbells, hinge at the hips and lower the weight along your legs, keeping a flat back, then drive your hips forward to stand.", "Inhale as you hinge and lower the weight down.", "Exhale as you drive your hips forward to stand tall."), new Ex(Guid.Parse("9900c46f-3f74-46eb-8782-84ba5a6d5479"), Plan2Day2ItemId, 3, "Leg Press", "Legs", 3, "12", "Feet shoulder-width on the platform, lower it by bending your knees toward your chest, then press it away without locking your knees.", "Inhale as you bend your knees toward your chest.", "Exhale as you press the platform away."), new Ex(Guid.Parse("639a1181-70e2-4cb3-966f-ba8089b8166c"), Plan2Day2ItemId, 4, "Standing Calf Raise", "Legs", 3, "15", "Standing on the balls of your feet on a raised edge, lower your heels below the step, then rise up onto your toes.", "Inhale as you lower your heels down.", "Exhale as you rise up onto your toes."), new Ex(Guid.Parse("a7a43b3e-3cdb-4de4-ade7-16e9b229249a"), Plan2Day2ItemId, 5, "Hanging Leg Raise", "Core", 3, "12", "Hang from a bar with straight arms, raise your legs up until roughly parallel to the floor, then lower with control.", "Inhale as you lower your legs back down.", "Exhale as you raise your legs up."), new Ex(Guid.Parse("6fedc4b4-5ba1-4c55-9783-7c64676f11e6"), Plan2Day2ItemId, 6, "Russian Twist", "Core", 3, "20 total", "Sit with knees bent and torso leaned back slightly, rotate your torso to tap the floor on each side.", "Inhale to reset at the centre.", "Exhale as you rotate to each side."), // ---- Plan 3, Day 1: Push ---- new Ex(Guid.Parse("418d75b4-72cf-4736-91a0-0a208d225011"), Plan3Day1ItemId, 1, "Barbell Bench Press", "Chest", 4, "8", "Lie on a flat bench, lower the bar to your mid-chest with control, then press it back up to full arm extension.", "Inhale as you lower the bar to your chest.", "Exhale as you press the bar back up."), new Ex(Guid.Parse("8eebef00-c567-4e55-ad4d-a2242e98ffdd"), Plan3Day1ItemId, 2, "Incline Dumbbell Press", "Chest", 3, "10", "On an incline bench, press the dumbbells up from chest height until arms are extended, then lower with control.", "Inhale as you lower the dumbbells to your chest.", "Exhale as you press the dumbbells back up."), new Ex(Guid.Parse("8a2acd7a-e923-4861-ad37-1cd10923695f"), Plan3Day1ItemId, 3, "Overhead Barbell Press", "Shoulders", 3, "10", "Bar at shoulder height, press it straight overhead until arms are extended, then lower back to shoulder height.", "Inhale as you lower the bar to shoulder height.", "Exhale as you press the bar overhead."), new Ex(Guid.Parse("acafc07f-cb25-44a3-8543-b503c8af0fc9"), Plan3Day1ItemId, 4, "Lateral Raise", "Shoulders", 3, "15", "Holding a light dumbbell in each hand, raise your arms out to the sides until shoulder height, then lower with control.", "Inhale as you lower your arms back down.", "Exhale as you raise your arms out to the sides."), new Ex(Guid.Parse("98bd09c3-37f9-48c2-af12-fa44ed36b597"), Plan3Day1ItemId, 5, "Triceps Overhead Extension", "Triceps", 3, "12", "Holding a dumbbell overhead with both hands, lower it behind your head by bending your elbows, then extend back up.", "Inhale as you bend your elbows and lower the weight.", "Exhale as you extend your arms back overhead."), // ---- Plan 3, Day 2: Pull ---- new Ex(Guid.Parse("1d04f884-0d01-48e1-8297-f088c4b1174a"), Plan3Day2ItemId, 1, "Deadlift", "Back", 4, "6", "Feet hip-width, grip the bar just outside your legs, brace your core and drive through your heels to stand tall, keeping the bar close to your body.", "Inhale and brace your core before lifting.", "Exhale as you drive your hips forward to stand tall."), new Ex(Guid.Parse("6ea3b6bc-f8c4-4582-91f5-6a4a9d57ab19"), Plan3Day2ItemId, 2, "Pull-Up", "Back", 4, "8", "Grip the bar shoulder-width, pull your chest toward the bar until your chin clears it, then lower with control.", "Inhale as you lower yourself back down.", "Exhale as you pull yourself up toward the bar."), new Ex(Guid.Parse("1ab08ef9-1936-4c31-b94f-8b86b535eed5"), Plan3Day2ItemId, 3, "Seated Cable Row", "Back", 3, "12", "Seated with knees slightly bent, pull the handle toward your waist while keeping your back straight, then extend back out.", "Inhale as you let the handle extend back out.", "Exhale as you pull the handle toward your waist."), new Ex(Guid.Parse("55d052dd-8fff-448c-b1f2-6f021cd6c2a3"), Plan3Day2ItemId, 4, "Barbell Curl", "Biceps", 3, "12", "Grip the bar shoulder-width, curl it up toward your chest keeping elbows fixed at your sides, then lower slowly.", "Inhale as you lower the bar back down.", "Exhale as you curl the bar up toward your shoulders."), new Ex(Guid.Parse("b15bae89-7bb4-4803-99cd-487839882473"), Plan3Day2ItemId, 5, "Hammer Curl", "Biceps", 3, "12", "Holding dumbbells with palms facing your body, curl them up toward your shoulders keeping your wrists neutral, then lower slowly.", "Inhale as you lower the dumbbells back down.", "Exhale as you curl the dumbbells up toward your shoulders."), // ---- Plan 3, Day 3: Legs & Core ---- new Ex(Guid.Parse("2fea8666-58f7-4ccb-bf95-68b62c02d7c2"), Plan3Day3ItemId, 1, "Barbell Back Squat", "Legs", 4, "8", "Bar across your upper back, feet shoulder-width apart. Squat down until thighs are parallel to the floor, then drive back up.", "Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."), new Ex(Guid.Parse("04d6fa32-70df-49b9-8a6e-09d35673e102"), Plan3Day3ItemId, 2, "Walking Lunge", "Legs", 3, "12 each leg", "Step forward into a lunge, lowering your back knee toward the floor, then push off to bring the back leg through into the next step.", "Inhale as you step forward and lower your back knee.", "Exhale as you push back up to standing."), new Ex(Guid.Parse("f57d0779-5341-42e6-80d4-71b84f348e01"), Plan3Day3ItemId, 3, "Leg Curl", "Legs", 3, "12", "Lying or seated on the machine, curl your heels toward your glutes against the resistance, then extend back with control.", "Inhale as you extend your legs back down.", "Exhale as you curl your heels toward your glutes."), new Ex(Guid.Parse("701b6dec-ab9f-43dc-abcb-8a6774c0ec35"), Plan3Day3ItemId, 4, "Standing Calf Raise", "Legs", 4, "15", "Standing on the balls of your feet on a raised edge, lower your heels below the step, then rise up onto your toes.", "Inhale as you lower your heels down.", "Exhale as you rise up onto your toes."), new Ex(Guid.Parse("bfa52ab2-add0-42a4-ac1c-294b86d96879"), Plan3Day3ItemId, 5, "Plank", "Core", 3, "45 sec hold", "Forearms and toes on the floor, body in a straight line, core braced. Hold the position without letting your hips sag.", "Inhale slowly through the nose while holding the position.", "Exhale slowly through the mouth, keeping your core braced."), new Ex(Guid.Parse("a91fdef1-6351-4c68-9115-f3bff738d971"), Plan3Day3ItemId, 6, "Bicycle Crunch", "Core", 3, "20 total", "Lying on your back, alternate bringing elbow to opposite knee while extending the other leg out.", "Inhale to reset at the centre.", "Exhale as you crunch elbow toward the opposite knee.") }; return Array.ConvertAll(defs, d => new WorkoutExercise { WorkoutExerciseId = d.Id, FKWorkoutItemId = d.ItemId, SortOrder = d.Order, Name = d.Name, MuscleGroup = d.MuscleGroup, Sets = d.Sets, Reps = d.Reps, Description = d.Description, BreathIn = d.BreathIn, BreathOut = d.BreathOut, VideoUrl = VideoSearchUrl(d.Name), IsActive = true, CreateDate = SeedDate }); } } }